diff options
| author | Zahar Izmailov <izmailov9@gmail.com> | 2025-02-03 15:36:03 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-03 15:36:03 +0300 |
| commit | b922d986d6783ce28d00ca948024dee44a11f29e (patch) | |
| tree | 646c000eca419a8f0ad4e742762bfcf74f8f9a07 /database/db.go | |
| parent | 8a7cffd63f4ced8caaa20e90aa60228d24bda510 (diff) | |
Improved database model migration and added indexing (#2655)
Diffstat (limited to 'database/db.go')
| -rw-r--r-- | database/db.go | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/database/db.go b/database/db.go index 1998ba23..d252cfe0 100644 --- a/database/db.go +++ b/database/db.go @@ -26,20 +26,35 @@ const ( ) func initModels() error { - models := []interface{}{ + // Order matters: first create tables without dependencies + baseModels := []interface{}{ &model.User{}, + &model.Setting{}, + } + + // Migrate base models + for _, model := range baseModels { + if err := db.AutoMigrate(model); err != nil { + log.Printf("Error auto migrating base model: %v", err) + return err + } + } + + // Then migrate models with dependencies + dependentModels := []interface{}{ &model.Inbound{}, &model.OutboundTraffics{}, - &model.Setting{}, &model.InboundClientIps{}, &xray.ClientTraffic{}, } - for _, model := range models { + + for _, model := range dependentModels { if err := db.AutoMigrate(model); err != nil { - log.Printf("Error auto migrating model: %v", err) + log.Printf("Error auto migrating dependent model: %v", err) return err } } + return nil } |
