You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openim-sdk-cpp/go/chao-sdk-core/wasm/indexdb/init.go

101 lines
3.3 KiB

// Copyright © 2023 OpenIM SDK. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build js && wasm
// +build js,wasm
package indexdb
import (
"context"
"github.com/openimsdk/openim-sdk-core/v3/wasm/exec"
)
//1,使用wasm原生的方式,tinygo应用于go的嵌入式领域,支持的功能有限,支持go语言的子集,甚至json序列化都无法支持
//2.函数命名遵从驼峰命名
//3.提供的sql生成语句中,关于bool值需要特殊处理,create语句的设计的到bool值的需要在创建语句中单独说明,这是因为在原有的sqlite中并不支持bool,用整数1或者0替代,gorm对其做了转换。
//4.提供的sql生成语句中,字段名是下划线方式 例如:recv_id,但是接口转换的数据json tag字段的风格是recvID,类似的所有的字段需要做个map映射
//5.任何涉及到gorm获取的是否需要返回错误,比如take和find都需要在文档上说明
//6.任何涉及到update的操作,一定要看gorm原型中实现,如果有select(*)则不需要用temp_struct中的结构体
//7.任何和接口重名的时候,db接口统一加上后缀DB
//8.任何map类型统一使用json字符串转换,文档说明
type IndexDB struct {
LocalUsers
LocalConversations
*LocalChatLogs
LocalSuperGroupChatLogs
LocalSuperGroup
LocalConversationUnreadMessages
LocalGroups
LocalGroupMember
LocalGroupRequest
LocalCacheMessage
LocalStrangers
LocalUserCommand
*FriendRequest
*Black
*Friend
LocalChatLogReactionExtensions
loginUserID string
}
func (i IndexDB) Close(ctx context.Context) error {
_, err := exec.Exec()
return err
}
func (i IndexDB) InitDB(ctx context.Context, userID string, dataDir string) error {
_, err := exec.Exec(userID, dataDir)
return err
}
func (i IndexDB) SetChatLogFailedStatus(ctx context.Context) {
//msgList, err := i.GetSendingMessageList()
//if err != nil {
// log.Error("", "GetSendingMessageList failed ", err.Error())
// return
//}
//for _, v := range msgList {
// v.Status = constant.MsgStatusSendFailed
// err := i.UpdateMessage(v)
// if err != nil {
// log.Error("", "UpdateMessage failed ", err.Error(), v)
// continue
// }
//}
//groupIDList, err := i.GetReadDiffusionGroupIDList()
//if err != nil {
// log.Error("", "GetReadDiffusionGroupIDList failed ", err.Error())
// return
//}
//for _, v := range groupIDList {
// msgList, err := i.SuperGroupGetSendingMessageList(v)
// if err != nil {
// log.Error("", "GetSendingMessageList failed ", err.Error())
// return
// }
// if len(msgList) > 0 {
// for _, v := range msgList {
// v.Status = constant.MsgStatusSendFailed
// err := i.SuperGroupUpdateMessage(v)
// if err != nil {
// log.Error("", "UpdateMessage failed ", err.Error(), v)
// continue
// }
// }
// }
//
//}
}