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:
Diffstat (limited to 'database')
-rw-r--r--database/db.go23
-rw-r--r--database/model/model.go4
2 files changed, 21 insertions, 6 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
}
diff --git a/database/model/model.go b/database/model/model.go
index e9d1836f..915cae0b 100644
--- a/database/model/model.go
+++ b/database/model/model.go
@@ -29,14 +29,14 @@ type User struct {
type Inbound struct {
Id int `json:"id" form:"id" gorm:"primaryKey;autoIncrement"`
- UserId int `json:"-"`
+ UserId int `json:"-" gorm:"index"`
Up int64 `json:"up" form:"up"`
Down int64 `json:"down" form:"down"`
Total int64 `json:"total" form:"total"`
Remark string `json:"remark" form:"remark"`
Enable bool `json:"enable" form:"enable"`
ExpiryTime int64 `json:"expiryTime" form:"expiryTime"`
- ClientStats []xray.ClientTraffic `gorm:"foreignKey:InboundId;references:Id" json:"clientStats" form:"clientStats"`
+ ClientStats []xray.ClientTraffic `gorm:"foreignKey:InboundId;references:Id;constraint:OnDelete:CASCADE" json:"clientStats"`
// config part
Listen string `json:"listen" form:"listen"`