1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00

feat: add foreign key constraints

This commit is contained in:
源文雨 2022-11-10 14:42:31 +08:00
parent f1957e3814
commit 8da043f012
3 changed files with 30 additions and 13 deletions

View File

@ -53,15 +53,27 @@ func (s *database) Open() error {
if err != nil { if err != nil {
return errors.Wrap(err, "open sqlite3 error") return errors.Wrap(err, "open sqlite3 error")
} }
err = s.db.Create(Sqlite3GroupMessageTableName, &StoredGroupMessage{}) _, err = s.db.DB.Exec("PRAGMA foreign_keys = ON;")
if err != nil {
return errors.Wrap(err, "enable foreign_keys error")
}
err = s.db.Create(Sqlite3UinInfoTableName, &UinInfo{})
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(Sqlite3MessageAttributeTableName, &StoredMessageAttribute{}) err = s.db.Create(Sqlite3TinyInfoTableName, &TinyInfo{})
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(Sqlite3GuildMessageAttributeTableName, &StoredGuildMessageAttribute{}) err = s.db.Create(Sqlite3MessageAttributeTableName, &StoredMessageAttribute{},
"FOREIGN KEY(SenderUin) REFERENCES "+Sqlite3UinInfoTableName+"(Uin)",
)
if err != nil {
return errors.Wrap(err, "create sqlite3 table error")
}
err = s.db.Create(Sqlite3GuildMessageAttributeTableName, &StoredGuildMessageAttribute{},
"FOREIGN KEY(SenderTinyID) REFERENCES "+Sqlite3TinyInfoTableName+"(ID)",
)
if err != nil { if err != nil {
return errors.Wrap(err, "create sqlite3 table error") return errors.Wrap(err, "create sqlite3 table error")
} }
@ -69,19 +81,24 @@ 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(Sqlite3PrivateMessageTableName, &StoredPrivateMessage{}) err = s.db.Create(Sqlite3GroupMessageTableName, &StoredGroupMessage{},
"FOREIGN KEY(AttributeID) REFERENCES "+Sqlite3MessageAttributeTableName+"(ID)",
"FOREIGN KEY(QuotedInfoID) REFERENCES "+Sqlite3QuotedInfoTableName+"(ID)",
)
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(Sqlite3GuildChannelMessageTableName, &StoredGuildChannelMessage{}) err = s.db.Create(Sqlite3PrivateMessageTableName, &StoredPrivateMessage{},
"FOREIGN KEY(AttributeID) REFERENCES "+Sqlite3MessageAttributeTableName+"(ID)",
"FOREIGN KEY(QuotedInfoID) REFERENCES "+Sqlite3QuotedInfoTableName+"(ID)",
)
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{}) err = s.db.Create(Sqlite3GuildChannelMessageTableName, &StoredGuildChannelMessage{},
if err != nil { "FOREIGN KEY(AttributeID) REFERENCES "+Sqlite3MessageAttributeTableName+"(ID)",
return errors.Wrap(err, "create sqlite3 table error") "FOREIGN KEY(QuotedInfoID) REFERENCES "+Sqlite3QuotedInfoTableName+"(ID)",
} )
err = s.db.Create(Sqlite3TinyInfoTableName, &TinyInfo{})
if err != nil { if err != nil {
return errors.Wrap(err, "create sqlite3 table error") return errors.Wrap(err, "create sqlite3 table error")
} }

2
go.mod
View File

@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp
go 1.19 go 1.19
require ( require (
github.com/FloatTech/sqlite v0.5.0 github.com/FloatTech/sqlite v0.5.1
github.com/Microsoft/go-winio v0.5.1 github.com/Microsoft/go-winio v0.5.1
github.com/Mrs4s/MiraiGo v0.0.0-20220828090150-a3c348100dfe github.com/Mrs4s/MiraiGo v0.0.0-20220828090150-a3c348100dfe
github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c

4
go.sum
View File

@ -1,5 +1,5 @@
github.com/FloatTech/sqlite v0.5.0 h1:U7J5Omc534PqmH6csfu+ypCo3DS8L91l5lTsxUu3b/U= github.com/FloatTech/sqlite v0.5.1 h1:IjTdnqMVIVIoIEFXhvh/KKBfYxFvG0tk7Rghz65/DAU=
github.com/FloatTech/sqlite v0.5.0/go.mod h1:i33d92OtR8jcp5fBUvQtospf27+MkfUxnGwnZ95E/dA= github.com/FloatTech/sqlite v0.5.1/go.mod h1:i33d92OtR8jcp5fBUvQtospf27+MkfUxnGwnZ95E/dA=
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw= github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw=
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY=