File tree 5 files changed +25
-10
lines changed
5 files changed +25
-10
lines changed Original file line number Diff line number Diff line change @@ -26,20 +26,35 @@ const (
26
26
)
27
27
28
28
func initModels () error {
29
- models := []interface {}{
29
+ // Order matters: first create tables without dependencies
30
+ baseModels := []interface {}{
30
31
& model.User {},
32
+ & model.Setting {},
33
+ }
34
+
35
+ // Migrate base models
36
+ for _ , model := range baseModels {
37
+ if err := db .AutoMigrate (model ); err != nil {
38
+ log .Printf ("Error auto migrating base model: %v" , err )
39
+ return err
40
+ }
41
+ }
42
+
43
+ // Then migrate models with dependencies
44
+ dependentModels := []interface {}{
31
45
& model.Inbound {},
32
46
& model.OutboundTraffics {},
33
- & model.Setting {},
34
47
& model.InboundClientIps {},
35
48
& xray.ClientTraffic {},
36
49
}
37
- for _ , model := range models {
50
+
51
+ for _ , model := range dependentModels {
38
52
if err := db .AutoMigrate (model ); err != nil {
39
- log .Printf ("Error auto migrating model: %v" , err )
53
+ log .Printf ("Error auto migrating dependent model: %v" , err )
40
54
return err
41
55
}
42
56
}
57
+
43
58
return nil
44
59
}
45
60
Original file line number Diff line number Diff line change @@ -29,14 +29,14 @@ type User struct {
29
29
30
30
type Inbound struct {
31
31
Id int `json:"id" form:"id" gorm:"primaryKey;autoIncrement"`
32
- UserId int `json:"-"`
32
+ UserId int `json:"-" gorm:"index" `
33
33
Up int64 `json:"up" form:"up"`
34
34
Down int64 `json:"down" form:"down"`
35
35
Total int64 `json:"total" form:"total"`
36
36
Remark string `json:"remark" form:"remark"`
37
37
Enable bool `json:"enable" form:"enable"`
38
38
ExpiryTime int64 `json:"expiryTime" form:"expiryTime"`
39
- ClientStats []xray.ClientTraffic `gorm:"foreignKey:InboundId;references:Id" json:"clientStats" form :"clientStats"`
39
+ ClientStats []xray.ClientTraffic `gorm:"foreignKey:InboundId;references:Id;constraint:OnDelete:CASCADE" json :"clientStats"`
40
40
41
41
// config part
42
42
Listen string `json:"listen" form:"listen"`
Original file line number Diff line number Diff line change @@ -283,4 +283,4 @@ install_x-ui() {
283
283
284
284
echo -e " ${green} Running...${plain} "
285
285
install_base
286
- install_x-ui $1
286
+ install_x-ui $1
Original file line number Diff line number Diff line change @@ -1912,4 +1912,4 @@ if [[ $# > 0 ]]; then
1912
1912
esac
1913
1913
else
1914
1914
show_menu
1915
- fi
1915
+ fi
Original file line number Diff line number Diff line change @@ -2,9 +2,9 @@ package xray
2
2
3
3
type ClientTraffic struct {
4
4
Id int `json:"id" form:"id" gorm:"primaryKey;autoIncrement"`
5
- InboundId int `json:"inboundId" form:"inboundId"`
5
+ InboundId int `json:"inboundId" form:"inboundId" gorm:"index;not null" `
6
6
Enable bool `json:"enable" form:"enable"`
7
- Email string `json:"email" form:"email" gorm:"unique "`
7
+ Email string `json:"email" form:"email" gorm:"uniqueIndex "`
8
8
Up int64 `json:"up" form:"up"`
9
9
Down int64 `json:"down" form:"down"`
10
10
ExpiryTime int64 `json:"expiryTime" form:"expiryTime"`
You can’t perform that action at this time.
0 commit comments