mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
feat: 将 uin, tiny 分表以节省空间
This commit is contained in:
parent
2d42a968c9
commit
f1957e3814
@ -10,6 +10,8 @@ const (
|
|||||||
Sqlite3QuotedInfoTableName = "quoinf"
|
Sqlite3QuotedInfoTableName = "quoinf"
|
||||||
Sqlite3PrivateMessageTableName = "privmsg"
|
Sqlite3PrivateMessageTableName = "privmsg"
|
||||||
Sqlite3GuildChannelMessageTableName = "guildmsg"
|
Sqlite3GuildChannelMessageTableName = "guildmsg"
|
||||||
|
Sqlite3UinInfoTableName = "uininf"
|
||||||
|
Sqlite3TinyInfoTableName = "tinyinf"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StoredMessageAttribute 持久化消息属性
|
// StoredMessageAttribute 持久化消息属性
|
||||||
@ -18,7 +20,6 @@ type StoredMessageAttribute struct {
|
|||||||
MessageSeq int32
|
MessageSeq int32
|
||||||
InternalID int32
|
InternalID int32
|
||||||
SenderUin int64
|
SenderUin int64
|
||||||
SenderName string
|
|
||||||
Timestamp int64
|
Timestamp int64
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ type StoredGuildMessageAttribute struct {
|
|||||||
MessageSeq int64
|
MessageSeq int64
|
||||||
InternalID int64
|
InternalID int64
|
||||||
SenderTinyID int64
|
SenderTinyID int64
|
||||||
SenderName string
|
|
||||||
Timestamp int64
|
Timestamp int64
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,6 +40,18 @@ type QuotedInfo struct {
|
|||||||
QuotedContent string // QuotedContent is json of original content
|
QuotedContent string // QuotedContent is json of original content
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UinInfo QQ 与 昵称
|
||||||
|
type UinInfo struct {
|
||||||
|
Uin int64
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
// TinyInfo Tiny 与 昵称
|
||||||
|
type TinyInfo struct {
|
||||||
|
ID int64
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
// StoredGroupMessage 持久化群消息
|
// StoredGroupMessage 持久化群消息
|
||||||
type StoredGroupMessage struct {
|
type StoredGroupMessage struct {
|
||||||
GlobalID int32
|
GlobalID int32
|
||||||
|
@ -77,6 +77,14 @@ func (s *database) Open() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "create sqlite3 table error")
|
return errors.Wrap(err, "create sqlite3 table error")
|
||||||
}
|
}
|
||||||
|
err = s.db.Create(Sqlite3UinInfoTableName, &UinInfo{})
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "create sqlite3 table error")
|
||||||
|
}
|
||||||
|
err = s.db.Create(Sqlite3TinyInfoTableName, &TinyInfo{})
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "create sqlite3 table error")
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,12 +116,18 @@ func (s *database) GetGroupMessageByGlobalID(id int32) (*db.StoredGroupMessage,
|
|||||||
err = s.db.Find(Sqlite3MessageAttributeTableName, &attr, "WHERE ID="+strconv.FormatInt(grpmsg.AttributeID, 10))
|
err = s.db.Find(Sqlite3MessageAttributeTableName, &attr, "WHERE ID="+strconv.FormatInt(grpmsg.AttributeID, 10))
|
||||||
s.RUnlock()
|
s.RUnlock()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ret.Attribute = &db.StoredMessageAttribute{
|
var uin UinInfo
|
||||||
MessageSeq: attr.MessageSeq,
|
s.RLock()
|
||||||
InternalID: attr.InternalID,
|
err = s.db.Find(Sqlite3UinInfoTableName, &attr, "WHERE Uin="+strconv.FormatInt(attr.SenderUin, 10))
|
||||||
SenderUin: attr.SenderUin,
|
s.RUnlock()
|
||||||
SenderName: attr.SenderName,
|
if err == nil {
|
||||||
Timestamp: attr.Timestamp,
|
ret.Attribute = &db.StoredMessageAttribute{
|
||||||
|
MessageSeq: attr.MessageSeq,
|
||||||
|
InternalID: attr.InternalID,
|
||||||
|
SenderUin: attr.SenderUin,
|
||||||
|
SenderName: uin.Name,
|
||||||
|
Timestamp: attr.Timestamp,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -154,12 +168,18 @@ func (s *database) GetPrivateMessageByGlobalID(id int32) (*db.StoredPrivateMessa
|
|||||||
err = s.db.Find(Sqlite3MessageAttributeTableName, &attr, "WHERE ID="+strconv.FormatInt(privmsg.AttributeID, 10))
|
err = s.db.Find(Sqlite3MessageAttributeTableName, &attr, "WHERE ID="+strconv.FormatInt(privmsg.AttributeID, 10))
|
||||||
s.RUnlock()
|
s.RUnlock()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ret.Attribute = &db.StoredMessageAttribute{
|
var uin UinInfo
|
||||||
MessageSeq: attr.MessageSeq,
|
s.RLock()
|
||||||
InternalID: attr.InternalID,
|
err = s.db.Find(Sqlite3UinInfoTableName, &attr, "WHERE Uin="+strconv.FormatInt(attr.SenderUin, 10))
|
||||||
SenderUin: attr.SenderUin,
|
s.RUnlock()
|
||||||
SenderName: attr.SenderName,
|
if err == nil {
|
||||||
Timestamp: attr.Timestamp,
|
ret.Attribute = &db.StoredMessageAttribute{
|
||||||
|
MessageSeq: attr.MessageSeq,
|
||||||
|
InternalID: attr.InternalID,
|
||||||
|
SenderUin: attr.SenderUin,
|
||||||
|
SenderName: uin.Name,
|
||||||
|
Timestamp: attr.Timestamp,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,12 +225,18 @@ func (s *database) GetGuildChannelMessageByID(id string) (*db.StoredGuildChannel
|
|||||||
err = s.db.Find(Sqlite3GuildMessageAttributeTableName, &attr, "WHERE ID="+strconv.FormatInt(guildmsg.AttributeID, 10))
|
err = s.db.Find(Sqlite3GuildMessageAttributeTableName, &attr, "WHERE ID="+strconv.FormatInt(guildmsg.AttributeID, 10))
|
||||||
s.RUnlock()
|
s.RUnlock()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ret.Attribute = &db.StoredGuildMessageAttribute{
|
var tiny TinyInfo
|
||||||
MessageSeq: uint64(attr.MessageSeq),
|
s.RLock()
|
||||||
InternalID: uint64(attr.InternalID),
|
err = s.db.Find(Sqlite3TinyInfoTableName, &attr, "WHERE ID="+strconv.FormatInt(attr.SenderTinyID, 10))
|
||||||
SenderTinyID: uint64(attr.SenderTinyID),
|
s.RUnlock()
|
||||||
SenderName: attr.SenderName,
|
if err == nil {
|
||||||
Timestamp: attr.Timestamp,
|
ret.Attribute = &db.StoredGuildMessageAttribute{
|
||||||
|
MessageSeq: uint64(attr.MessageSeq),
|
||||||
|
InternalID: uint64(attr.InternalID),
|
||||||
|
SenderTinyID: uint64(attr.SenderTinyID),
|
||||||
|
SenderName: tiny.Name,
|
||||||
|
Timestamp: attr.Timestamp,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -252,14 +278,19 @@ func (s *database) InsertGroupMessage(msg *db.StoredGroupMessage) error {
|
|||||||
id++
|
id++
|
||||||
}
|
}
|
||||||
s.Lock()
|
s.Lock()
|
||||||
err := s.db.Insert(Sqlite3MessageAttributeTableName, &StoredMessageAttribute{
|
err := s.db.Insert(Sqlite3UinInfoTableName, &UinInfo{
|
||||||
ID: id,
|
Uin: msg.Attribute.SenderUin,
|
||||||
MessageSeq: msg.Attribute.MessageSeq,
|
Name: msg.Attribute.SenderName,
|
||||||
InternalID: msg.Attribute.InternalID,
|
|
||||||
SenderUin: msg.Attribute.SenderUin,
|
|
||||||
SenderName: msg.Attribute.SenderName,
|
|
||||||
Timestamp: msg.Attribute.Timestamp,
|
|
||||||
})
|
})
|
||||||
|
if err == nil {
|
||||||
|
err = s.db.Insert(Sqlite3MessageAttributeTableName, &StoredMessageAttribute{
|
||||||
|
ID: id,
|
||||||
|
MessageSeq: msg.Attribute.MessageSeq,
|
||||||
|
InternalID: msg.Attribute.InternalID,
|
||||||
|
SenderUin: msg.Attribute.SenderUin,
|
||||||
|
Timestamp: msg.Attribute.Timestamp,
|
||||||
|
})
|
||||||
|
}
|
||||||
s.Unlock()
|
s.Unlock()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
grpmsg.AttributeID = id
|
grpmsg.AttributeID = id
|
||||||
@ -328,14 +359,19 @@ func (s *database) InsertPrivateMessage(msg *db.StoredPrivateMessage) error {
|
|||||||
id++
|
id++
|
||||||
}
|
}
|
||||||
s.Lock()
|
s.Lock()
|
||||||
err := s.db.Insert(Sqlite3MessageAttributeTableName, &StoredMessageAttribute{
|
err := s.db.Insert(Sqlite3UinInfoTableName, &UinInfo{
|
||||||
ID: id,
|
Uin: msg.Attribute.SenderUin,
|
||||||
MessageSeq: msg.Attribute.MessageSeq,
|
Name: msg.Attribute.SenderName,
|
||||||
InternalID: msg.Attribute.InternalID,
|
|
||||||
SenderUin: msg.Attribute.SenderUin,
|
|
||||||
SenderName: msg.Attribute.SenderName,
|
|
||||||
Timestamp: msg.Attribute.Timestamp,
|
|
||||||
})
|
})
|
||||||
|
if err == nil {
|
||||||
|
err = s.db.Insert(Sqlite3MessageAttributeTableName, &StoredMessageAttribute{
|
||||||
|
ID: id,
|
||||||
|
MessageSeq: msg.Attribute.MessageSeq,
|
||||||
|
InternalID: msg.Attribute.InternalID,
|
||||||
|
SenderUin: msg.Attribute.SenderUin,
|
||||||
|
Timestamp: msg.Attribute.Timestamp,
|
||||||
|
})
|
||||||
|
}
|
||||||
s.Unlock()
|
s.Unlock()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
privmsg.AttributeID = id
|
privmsg.AttributeID = id
|
||||||
@ -402,14 +438,19 @@ func (s *database) InsertGuildChannelMessage(msg *db.StoredGuildChannelMessage)
|
|||||||
id++
|
id++
|
||||||
}
|
}
|
||||||
s.Lock()
|
s.Lock()
|
||||||
err := s.db.Insert(Sqlite3MessageAttributeTableName, &StoredGuildMessageAttribute{
|
err := s.db.Insert(Sqlite3TinyInfoTableName, &TinyInfo{
|
||||||
ID: id,
|
ID: int64(msg.Attribute.SenderTinyID),
|
||||||
MessageSeq: int64(msg.Attribute.MessageSeq),
|
Name: msg.Attribute.SenderName,
|
||||||
InternalID: int64(msg.Attribute.InternalID),
|
|
||||||
SenderTinyID: int64(msg.Attribute.SenderTinyID),
|
|
||||||
SenderName: msg.Attribute.SenderName,
|
|
||||||
Timestamp: msg.Attribute.Timestamp,
|
|
||||||
})
|
})
|
||||||
|
if err == nil {
|
||||||
|
err = s.db.Insert(Sqlite3MessageAttributeTableName, &StoredGuildMessageAttribute{
|
||||||
|
ID: id,
|
||||||
|
MessageSeq: int64(msg.Attribute.MessageSeq),
|
||||||
|
InternalID: int64(msg.Attribute.InternalID),
|
||||||
|
SenderTinyID: int64(msg.Attribute.SenderTinyID),
|
||||||
|
Timestamp: msg.Attribute.Timestamp,
|
||||||
|
})
|
||||||
|
}
|
||||||
s.Unlock()
|
s.Unlock()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
guildmsg.AttributeID = id
|
guildmsg.AttributeID = id
|
||||||
|
Loading…
x
Reference in New Issue
Block a user