Skip to content

Commit d770d74

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents ce35f09 + e89a2f8 commit d770d74

File tree

6 files changed

+76
-12
lines changed

6 files changed

+76
-12
lines changed

pkg/db/db_init.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626

2727
"github.com/openimsdk/openim-sdk-core/v3/pkg/constant"
2828
"github.com/openimsdk/openim-sdk-core/v3/pkg/db/model_struct"
29-
"github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
3029
"github.com/openimsdk/openim-sdk-core/v3/version"
3130

3231
"gorm.io/driver/sqlite"
@@ -38,23 +37,19 @@ import (
3837
)
3938

4039
type TableChecker struct {
41-
db *gorm.DB
4240
tableCache map[string]bool
4341
mu sync.RWMutex
4442
}
4543

46-
func NewTableChecker(db *gorm.DB) *TableChecker {
44+
func NewTableChecker(tables []string) *TableChecker {
4745
tc := &TableChecker{
48-
db: db,
4946
tableCache: make(map[string]bool),
5047
}
51-
tc.InitTableCache()
48+
tc.InitTableCache(tables)
5249
return tc
5350
}
5451

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) {
5853
tc.mu.Lock()
5954
defer tc.mu.Unlock()
6055
for _, table := range tables {
@@ -126,8 +121,14 @@ func NewDataBase(ctx context.Context, loginUserID string, dbDir string, logLevel
126121
dataBase := &DataBase{loginUserID: loginUserID, dbDir: dbDir}
127122
err := dataBase.initDB(ctx, logLevel)
128123
if err != nil {
129-
return dataBase, utils.Wrap(err, "initDB failed "+dbDir)
124+
return dataBase, errs.WrapMsg(err, "initDB failed "+dbDir)
130125
}
126+
tables, err := dataBase.GetExistTables(ctx)
127+
if err != nil {
128+
return dataBase, errs.Wrap(err)
129+
}
130+
dataBase.tableChecker = NewTableChecker(tables)
131+
131132
return dataBase, nil
132133
}
133134

@@ -154,12 +155,12 @@ func (d *DataBase) initDB(ctx context.Context, logLevel int) error {
154155
}
155156
db, err := gorm.Open(sqlite.Open(dbFileName), &gorm.Config{Logger: log.NewSqlLogger(zLogLevel, false, time.Millisecond*200)})
156157
if err != nil {
157-
return utils.Wrap(err, "open db failed "+dbFileName)
158+
return errs.WrapMsg(err, "open db failed "+dbFileName)
158159
}
159160
log.ZDebug(ctx, "open db success", "db", db, "dbFileName", dbFileName)
160161
sqlDB, err := db.DB()
161162
if err != nil {
162-
return utils.Wrap(err, "get sql db failed")
163+
return errs.WrapMsg(err, "get sql db failed")
163164
}
164165

165166
sqlDB.SetConnMaxLifetime(time.Hour * 1)
@@ -180,7 +181,7 @@ func (d *DataBase) initDB(ctx context.Context, logLevel int) error {
180181
//if err := db.Table(constant.SuperGroupTableName).AutoMigrate(superGroup); err != nil {
181182
// return err
182183
//}
183-
d.tableChecker = NewTableChecker(db)
184+
184185
return nil
185186
}
186187

pkg/db/db_interface/databse.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,9 @@ type AppSDKVersion interface {
243243
SetAppSDKVersion(ctx context.Context, version *model_struct.LocalAppSDKVersion) error
244244
}
245245

246+
type TableMaster interface {
247+
GetExistTables(ctx context.Context) ([]string, error)
248+
}
246249
type DataBase interface {
247250
Close(ctx context.Context) error
248251
InitDB(ctx context.Context, userID string, dataDir string) error
@@ -256,4 +259,5 @@ type DataBase interface {
256259
SendingMessagesModel
257260
VersionSyncModel
258261
AppSDKVersion
262+
TableMaster
259263
}

pkg/db/db_js.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type IndexDB struct {
4646
*indexdb.LocalUserCommand
4747
*indexdb.LocalVersionSync
4848
*indexdb.LocalAppSDKVersion
49+
*indexdb.LocalTableMaster
4950
loginUserID string
5051
}
5152

@@ -81,6 +82,7 @@ func NewDataBase(ctx context.Context, loginUserID string, dbDir string, logLevel
8182
LocalUserCommand: indexdb.NewLocalUserCommand(),
8283
LocalVersionSync: indexdb.NewLocalVersionSync(),
8384
LocalAppSDKVersion: indexdb.NewLocalAppSDKVersion(),
85+
LocalTableMaster: indexdb.NewLocalTableMaster(),
8486
loginUserID: loginUserID,
8587
}
8688
err := i.InitDB(ctx, loginUserID, dbDir)

pkg/db/table_master.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//go:build !js
2+
// +build !js
3+
4+
package db
5+
6+
import (
7+
"context"
8+
9+
"github.com/openimsdk/tools/errs"
10+
)
11+
12+
func (d *DataBase) GetExistTables(ctx context.Context) ([]string, error) {
13+
var tables []string
14+
return tables, errs.Wrap(d.conn.WithContext(ctx).Raw("SELECT name FROM sqlite_master WHERE type='table'").Scan(&tables).Error)
15+
16+
}

wasm/indexdb/conversation_model.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package indexdb
1919

2020
import (
2121
"context"
22+
2223
"github.com/openimsdk/openim-sdk-core/v3/pkg/db/model_struct"
2324
"github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
2425
"github.com/openimsdk/openim-sdk-core/v3/wasm/exec"
@@ -173,6 +174,11 @@ func (i *LocalConversations) DeleteConversation(ctx context.Context, conversatio
173174
return err
174175
}
175176

177+
func (i *LocalConversations) DeleteAllConversation(ctx context.Context) error {
178+
_, err := exec.Exec()
179+
return err
180+
}
181+
176182
func (i *LocalConversations) UpdateConversation(ctx context.Context, c *model_struct.LocalConversation) error {
177183
if c.ConversationID == "" {
178184
return exec.PrimaryKeyNull

wasm/indexdb/table_master.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//go:build js && wasm
2+
// +build js,wasm
3+
4+
package indexdb
5+
6+
import (
7+
"context"
8+
9+
"github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
10+
"github.com/openimsdk/openim-sdk-core/v3/wasm/exec"
11+
)
12+
13+
type LocalTableMaster struct {
14+
}
15+
16+
func NewLocalTableMaster() *LocalTableMaster {
17+
return &LocalTableMaster{}
18+
}
19+
20+
func (i *LocalTableMaster) GetExistTables(ctx context.Context) (result []string, err error) {
21+
nameList, err := exec.Exec()
22+
if err != nil {
23+
return nil, err
24+
} else {
25+
if v, ok := nameList.(string); ok {
26+
err := utils.JsonStringToStruct(v, &result)
27+
if err != nil {
28+
return nil, err
29+
}
30+
return result, err
31+
} else {
32+
return nil, exec.ErrType
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)