@@ -26,7 +26,6 @@ import (
26
26
27
27
"github.com/openimsdk/openim-sdk-core/v3/pkg/constant"
28
28
"github.com/openimsdk/openim-sdk-core/v3/pkg/db/model_struct"
29
- "github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
30
29
"github.com/openimsdk/openim-sdk-core/v3/version"
31
30
32
31
"gorm.io/driver/sqlite"
@@ -38,23 +37,19 @@ import (
38
37
)
39
38
40
39
type TableChecker struct {
41
- db * gorm.DB
42
40
tableCache map [string ]bool
43
41
mu sync.RWMutex
44
42
}
45
43
46
- func NewTableChecker (db * gorm. DB ) * TableChecker {
44
+ func NewTableChecker (tables [] string ) * TableChecker {
47
45
tc := & TableChecker {
48
- db : db ,
49
46
tableCache : make (map [string ]bool ),
50
47
}
51
- tc .InitTableCache ()
48
+ tc .InitTableCache (tables )
52
49
return tc
53
50
}
54
51
55
- func (tc * TableChecker ) InitTableCache () {
56
- var tables []string
57
- tc .db .Raw ("SELECT name FROM sqlite_master WHERE type='table'" ).Scan (& tables )
52
+ func (tc * TableChecker ) InitTableCache (tables []string ) {
58
53
tc .mu .Lock ()
59
54
defer tc .mu .Unlock ()
60
55
for _ , table := range tables {
@@ -126,8 +121,14 @@ func NewDataBase(ctx context.Context, loginUserID string, dbDir string, logLevel
126
121
dataBase := & DataBase {loginUserID : loginUserID , dbDir : dbDir }
127
122
err := dataBase .initDB (ctx , logLevel )
128
123
if err != nil {
129
- return dataBase , utils . Wrap (err , "initDB failed " + dbDir )
124
+ return dataBase , errs . WrapMsg (err , "initDB failed " + dbDir )
130
125
}
126
+ tables , err := dataBase .GetExistTables (ctx )
127
+ if err != nil {
128
+ return dataBase , errs .Wrap (err )
129
+ }
130
+ dataBase .tableChecker = NewTableChecker (tables )
131
+
131
132
return dataBase , nil
132
133
}
133
134
@@ -154,12 +155,12 @@ func (d *DataBase) initDB(ctx context.Context, logLevel int) error {
154
155
}
155
156
db , err := gorm .Open (sqlite .Open (dbFileName ), & gorm.Config {Logger : log .NewSqlLogger (zLogLevel , false , time .Millisecond * 200 )})
156
157
if err != nil {
157
- return utils . Wrap (err , "open db failed " + dbFileName )
158
+ return errs . WrapMsg (err , "open db failed " + dbFileName )
158
159
}
159
160
log .ZDebug (ctx , "open db success" , "db" , db , "dbFileName" , dbFileName )
160
161
sqlDB , err := db .DB ()
161
162
if err != nil {
162
- return utils . Wrap (err , "get sql db failed" )
163
+ return errs . WrapMsg (err , "get sql db failed" )
163
164
}
164
165
165
166
sqlDB .SetConnMaxLifetime (time .Hour * 1 )
@@ -180,7 +181,7 @@ func (d *DataBase) initDB(ctx context.Context, logLevel int) error {
180
181
//if err := db.Table(constant.SuperGroupTableName).AutoMigrate(superGroup); err != nil {
181
182
// return err
182
183
//}
183
- d . tableChecker = NewTableChecker ( db )
184
+
184
185
return nil
185
186
}
186
187
0 commit comments