aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorleshe4ka46 <alex9102naid1@ya.ru>2025-10-08 13:39:23 +0300
committerleshe4ka46 <alex9102naid1@ya.ru>2025-10-08 13:39:23 +0300
commit31b2dce966be10902dd7f75a9e41dd3fd40e6680 (patch)
treec066921bf477477702a5011bfba58397c1b7b62d /pkg
parent6ca77396b806afd4f4adf59c0caee75e0ec2e7af (diff)
some initial dir structure and db thoughts
Diffstat (limited to 'pkg')
-rw-r--r--pkg/adapters/json/json.go3
-rw-r--r--pkg/db/db.go1
-rw-r--r--pkg/model/model.go7
-rw-r--r--pkg/model/user.go61
4 files changed, 72 insertions, 0 deletions
diff --git a/pkg/adapters/json/json.go b/pkg/adapters/json/json.go
new file mode 100644
index 0000000..c9ce212
--- /dev/null
+++ b/pkg/adapters/json/json.go
@@ -0,0 +1,3 @@
+package json
+
+
diff --git a/pkg/db/db.go b/pkg/db/db.go
new file mode 100644
index 0000000..3a49c63
--- /dev/null
+++ b/pkg/db/db.go
@@ -0,0 +1 @@
+package db
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" }