From 31b2dce966be10902dd7f75a9e41dd3fd40e6680 Mon Sep 17 00:00:00 2001 From: leshe4ka46 Date: Wed, 8 Oct 2025 13:39:23 +0300 Subject: some initial dir structure and db thoughts --- pkg/model/model.go | 7 +++++++ pkg/model/user.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 pkg/model/model.go create mode 100644 pkg/model/user.go (limited to 'pkg/model') diff --git a/pkg/model/model.go b/pkg/model/model.go new file mode 100644 index 0000000..0a7e026 --- /dev/null +++ b/pkg/model/model.go @@ -0,0 +1,7 @@ +package model + + + +type Adapter interface { + Init(string) // inits adapter with filename +} \ No newline at end of file diff --git a/pkg/model/user.go b/pkg/model/user.go new file mode 100644 index 0000000..af42e3c --- /dev/null +++ b/pkg/model/user.go @@ -0,0 +1,61 @@ +package model + +import "time" + +type Sex bool + +const ( + SexMale Sex = false + SexFemale Sex = true +) + +type User struct { + ID uint64 `gorm:"primaryKey"` + Name string + Surname string + Fathersname string + + Age uint8 + + Sex Sex + Birthday time.Time + + Cards []Card `gorm:"foreignKey:UserID"` + + // just for compatibility + Flights []Flight `gorm:"many2many:user_flights;joinForeignKey:UserID;joinReferences:FlightID"` +} + +func (User) TableName() string { return "users" } + +type Card struct { + ID uint64 `gorm:"primaryKey"` + + Prefix string + Number uint64 + + Bonusprogramm string + + // User has multiple cards -> each card has registered flights to it + Flights []Flight `gorm:"many2many:card_flights;joinForeignKey:CardID;joinReferences:FlightID"` + + UserID uint64 + User User `gorm:"foreignKey:UserID;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"` +} + +func (Card) TableName() string { return "cards" } + +type Flight struct { + ID uint64 `gorm:"primaryKey"` + + Number string + From string + To string + Departure time.Time + Arrival time.Time + + Users []User `gorm:"many2many:user_flights;joinForeignKey:FlightID;joinReferences:UserID"` + Cards []Card `gorm:"many2many:card_flights;joinForeignKey:FlightID;joinReferences:CardID"` +} + +func (Flight) TableName() string { return "flights" } -- cgit v1.2.3