@@ -4,19 +4,13 @@ import (
44 "fmt"
55 "github.com/RomiChan/syncx"
66 "github.com/jinzhu/gorm"
7+ "github.com/sirupsen/logrus"
78)
89
910var (
1011 migratedGroups = syncx.Map [string , bool ]{} // key: string, value: bool
11- tableHooks []tableHook
1212)
1313
14- type tableHook func (gid int64 ) error
15-
16- type model struct {
17- * gorm.DB
18- }
19-
2014func ensureTable [T userInfo | AuctionInfo ](gid int64 , prefix string ) error {
2115 table := fmt .Sprintf ("group_%d_%s_info" , gid , prefix )
2216 if _ , ok := migratedGroups .Load (table ); ok {
@@ -32,29 +26,25 @@ func ensureTable[T userInfo | AuctionInfo](gid int64, prefix string) error {
3226 return nil
3327}
3428
35- func ensureUserInfo (gid int64 ) error {
36- return ensureTable [userInfo ](gid , ur )
37- }
29+ func tableFor (gid int64 , prefix string ) * gorm.DB {
3830
39- func ensureAuctionInfo (gid int64 ) error {
40- return ensureTable [AuctionInfo ](gid , ac )
41- }
42-
43- // registerTableHook 注册钩子
44- func registerTableHook (h ... tableHook ) {
45- tableHooks = append (tableHooks , h ... )
46- }
47-
48- func tableFor (gid int64 , prefix string ) * model {
49- // 先跑钩子
50- for _ , h := range tableHooks {
51- if err := h (gid ); err != nil {
52- panic (fmt .Sprintf ("执行钩子失败: %v" , err ))
31+ switch prefix {
32+ case ur :
33+ err := ensureTable [userInfo ](gid , ur )
34+ if err != nil {
35+ logrus .Error ("ensureTable error: %v" , err )
36+ return nil
37+ }
38+ case ac :
39+ err := ensureTable [AuctionInfo ](gid , ac )
40+ if err != nil {
41+ logrus .Error ("ensureTable error: %v" , err )
42+ return nil
5343 }
5444 }
5545
5646 tableName := fmt .Sprintf ("group_%d_%s_info" , gid , prefix )
57- return & model { db .Table (tableName )}
47+ return db .Table (tableName )
5848}
5949
6050func listUsers (gid int64 ) (users , error ) {
0 commit comments