Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZahar Izmailov <izmailov9@gmail.com>2025-02-03 15:36:03 +0300
committerGitHub <noreply@github.com>2025-02-03 15:36:03 +0300
commitb922d986d6783ce28d00ca948024dee44a11f29e (patch)
tree646c000eca419a8f0ad4e742762bfcf74f8f9a07 /database/db.go
parent8a7cffd63f4ced8caaa20e90aa60228d24bda510 (diff)
Improved database model migration and added indexing (#2655)
Diffstat (limited to 'database/db.go')
-rw-r--r--database/db.go23
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
}