From 211e2b600f6bc4f8ca59fa6166feb68f7aa63b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A2=A8=E9=9B=AA?= Date: Mon, 17 Aug 2026 15:34:09 +0800 Subject: [PATCH] fix: migrate remaining models to BaseModel (lowercase id JSON) --- backend/internal/database/models/access_token.go | 11 +++-------- backend/internal/database/models/listener_user.go | 8 ++------ backend/internal/database/models/proxy_user.go | 10 ++-------- backend/internal/database/models/remote_server.go | 12 +++--------- backend/internal/database/models/subscription.go | 10 +++------- 5 files changed, 13 insertions(+), 38 deletions(-) diff --git a/backend/internal/database/models/access_token.go b/backend/internal/database/models/access_token.go index ed3cfde..6314c6c 100644 --- a/backend/internal/database/models/access_token.go +++ b/backend/internal/database/models/access_token.go @@ -1,15 +1,10 @@ package models -import ( - "time" +import "time" - "gorm.io/gorm" -) - -// AccessToken grants a client access to one Listener's generated node -// configuration. Listener is the single source of truth for client exports. +// AccessToken grants a client access to one Listener's generated node configuration. type AccessToken struct { - gorm.Model + BaseModel Name string `gorm:"not null" json:"name"` Token string `gorm:"uniqueIndex;not null" json:"-"` Enabled bool `gorm:"default:true" json:"enabled"` diff --git a/backend/internal/database/models/listener_user.go b/backend/internal/database/models/listener_user.go index 85de32c..015c81b 100644 --- a/backend/internal/database/models/listener_user.go +++ b/backend/internal/database/models/listener_user.go @@ -1,17 +1,13 @@ package models -import "gorm.io/gorm" - // ListenerUser is the explicit many-to-many join between ProxyUser and Listener. -// Username/Password are retained for database compatibility with the Phase 1/2 schema; -// new code uses ProxyUserID and never stores proxy credentials in this join table. type ListenerUser struct { - gorm.Model + BaseModel ListenerID uint `gorm:"not null;index;uniqueIndex:idx_listener_proxy_user,priority:1" json:"listener_id"` ProxyUserID uint `gorm:"not null;index;uniqueIndex:idx_listener_proxy_user,priority:2" json:"proxy_user_id"` - // Deprecated legacy fields. They are not used for Phase 6 authentication generation. + // Deprecated legacy fields. They are not used for authentication generation. Username string `gorm:"size:100;not null;default:''" json:"-"` Password string `gorm:"type:text;not null;default:''" json:"-"` } diff --git a/backend/internal/database/models/proxy_user.go b/backend/internal/database/models/proxy_user.go index df254b6..4377adc 100644 --- a/backend/internal/database/models/proxy_user.go +++ b/backend/internal/database/models/proxy_user.go @@ -1,15 +1,11 @@ package models -import ( - "time" - - "gorm.io/gorm" -) +import "time" // ProxyUser is a user account used to authenticate against Mihomo server nodes. // It is deliberately separate from User, which represents a 3m-ui administrator. type ProxyUser struct { - gorm.Model + BaseModel Username string `gorm:"size:100;not null;uniqueIndex" json:"username"` // PasswordEncrypted contains an AES-GCM encrypted password. It is never serialized to API responses. @@ -23,6 +19,4 @@ type ProxyUser struct { Online bool `gorm:"not null;default:false" json:"online"` ExpireTime time.Time `json:"expire_time"` Enabled bool `gorm:"not null;default:true" json:"enabled"` - // TelegramID links a proxy user to one Telegram account for self-service commands. - TelegramID *int64 `gorm:"uniqueIndex" json:"telegram_id"` } diff --git a/backend/internal/database/models/remote_server.go b/backend/internal/database/models/remote_server.go index 29fa29f..97570d3 100644 --- a/backend/internal/database/models/remote_server.go +++ b/backend/internal/database/models/remote_server.go @@ -1,16 +1,10 @@ package models -import ( - "time" +import "time" - "gorm.io/gorm" -) - -// RemoteServer registers an external 3m-ui / Mihomo host managed from this -// panel. Multi-node is metadata + health check first; full remote config -// push is a later phase (agent/token based). +// RemoteServer registers an external 3m-ui / Mihomo host managed from this panel. type RemoteServer struct { - gorm.Model + BaseModel Name string `gorm:"size:100;not null" json:"name"` BaseURL string `gorm:"size:512;not null" json:"base_url"` diff --git a/backend/internal/database/models/subscription.go b/backend/internal/database/models/subscription.go index f83dec0..9bd5558 100644 --- a/backend/internal/database/models/subscription.go +++ b/backend/internal/database/models/subscription.go @@ -1,15 +1,11 @@ package models -import ( - "time" - - "gorm.io/gorm" -) +import "time" type Subscription struct { - gorm.Model + BaseModel UserID uint `gorm:"not null;index" json:"user_id"` Token string `gorm:"uniqueIndex;not null" json:"token"` - Format string `gorm:"not null" json:"format"` // e.g., "clash", "sing-box" + Format string `gorm:"not null" json:"format"` ExpireTime *time.Time `json:"expire_time"` }