@@ -79,46 +79,47 @@ type ParentAggregateGroupInfo struct {
7979
8080// Group 对应 groups 表
8181type Group struct {
82- ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
83- EffectiveConfig types.SystemSettings `gorm:"-" json:"effective_config,omitempty"`
84- Name string `gorm:"type:varchar(255);not null;unique" json:"name"`
85- Endpoint string `gorm:"-" json:"endpoint"`
86- DisplayName string `gorm:"type:varchar(255)" json:"display_name"`
87- ProxyKeys string `gorm:"type:text" json:"proxy_keys"`
88- Description string `gorm:"type:varchar(512)" json:"description"`
89- GroupType string `gorm:"type:varchar(50);default:'standard'" json:"group_type"` // 'standard' or 'aggregate'
90- Upstreams datatypes.JSON `gorm:"type:json;not null" json:"upstreams"`
91- ValidationEndpoint string `gorm:"type:varchar(255)" json:"validation_endpoint"`
92- ChannelType string `gorm:"type:varchar(50);not null" json:"channel_type"`
93- Sort int `gorm:"default:0" json:"sort"`
94- TestModel string `gorm:"type:varchar(255);not null" json:"test_model"`
95- ParamOverrides datatypes.JSONMap `gorm:"type:json" json:"param_overrides"`
96- Config datatypes.JSONMap `gorm:"type:json" json:"config"`
97- HeaderRules datatypes.JSON `gorm:"type:json" json:"header_rules"`
98- ModelRedirectRules datatypes.JSONMap `gorm:"type:json" json:"model_redirect_rules"`
99- ModelRedirectStrict bool `gorm:"default:false" json:"model_redirect_strict"`
100- APIKeys []APIKey `gorm:"foreignKey:GroupID" json:"api_keys"`
101- SubGroups []GroupSubGroup `gorm:"-" json:"sub_groups,omitempty"`
102- LastValidatedAt * time.Time `json:"last_validated_at"`
103- CreatedAt time.Time `json:"created_at"`
104- UpdatedAt time.Time `json:"updated_at"`
82+ ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
83+ EffectiveConfig types.SystemSettings `gorm:"-" json:"effective_config,omitempty"`
84+ Name string `gorm:"type:varchar(255);not null;unique" json:"name"`
85+ Endpoint string `gorm:"-" json:"endpoint"`
86+ DisplayName string `gorm:"type:varchar(255)" json:"display_name"`
87+ ProxyKeys string `gorm:"type:text" json:"proxy_keys"`
88+ Description string `gorm:"type:varchar(512)" json:"description"`
89+ GroupType string `gorm:"type:varchar(50);default:'standard'" json:"group_type"` // 'standard' or 'aggregate'
90+ Upstreams datatypes.JSON `gorm:"type:json;not null" json:"upstreams"`
91+ ValidationEndpoint string `gorm:"type:varchar(255)" json:"validation_endpoint"`
92+ ChannelType string `gorm:"type:varchar(50);not null" json:"channel_type"`
93+ Sort int `gorm:"default:0" json:"sort"`
94+ TestModel string `gorm:"type:varchar(255);not null" json:"test_model"`
95+ ParamOverrides datatypes.JSONMap `gorm:"type:json" json:"param_overrides"`
96+ Config datatypes.JSONMap `gorm:"type:json" json:"config"`
97+ HeaderRules datatypes.JSON `gorm:"type:json" json:"header_rules"`
98+ ModelRedirectRules datatypes.JSONMap `gorm:"type:json" json:"model_redirect_rules"`
99+ ModelRedirectStrict bool `gorm:"default:false" json:"model_redirect_strict"`
100+ APIKeys []APIKey `gorm:"foreignKey:GroupID" json:"api_keys"`
101+ SubGroups []GroupSubGroup `gorm:"-" json:"sub_groups,omitempty"`
102+ LastValidatedAt * time.Time `json:"last_validated_at"`
103+ CreatedAt time.Time `json:"created_at"`
104+ UpdatedAt time.Time `json:"updated_at"`
105105
106106 // For cache
107- ProxyKeysMap map [string ]struct {} `gorm:"-" json:"-"`
108- HeaderRuleList []HeaderRule `gorm:"-" json:"-"`
109- ModelRedirectMap map [string ]string `gorm:"-" json:"-"`
107+ ProxyKeysMap map [string ]struct {} `gorm:"-" json:"-"`
108+ HeaderRuleList []HeaderRule `gorm:"-" json:"-"`
109+ ModelRedirectMap map [string ]string `gorm:"-" json:"-"`
110110}
111111
112112// APIKey 对应 api_keys 表
113113type APIKey struct {
114- ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
114+ ID uint `gorm:"primaryKey;autoIncrement;index:idx_api_keys_group_last_used_id,priority:3 " json:"id"`
115115 KeyValue string `gorm:"type:text;not null" json:"key_value"`
116116 KeyHash string `gorm:"type:varchar(128);index" json:"key_hash"`
117- GroupID uint `gorm:"not null;index" json:"group_id"`
117+ GroupID uint `gorm:"not null;index;index:idx_api_keys_group_last_used_id,priority:1 " json:"group_id"`
118118 Status string `gorm:"type:varchar(50);not null;default:'active';index" json:"status"`
119119 Notes string `gorm:"type:varchar(255);default:''" json:"notes"`
120120 RequestCount int64 `gorm:"not null;default:0" json:"request_count"`
121121 FailureCount int64 `gorm:"not null;default:0" json:"failure_count"`
122+ LastUsedAt * time.Time `gorm:"index:idx_api_keys_group_last_used_id,priority:2" json:"last_used_at"`
122123 CreatedAt time.Time `json:"created_at"`
123124 UpdatedAt time.Time `json:"updated_at"`
124125}
0 commit comments