qq_bot/service/kw/kw.go
2024-10-20 15:47:00 +08:00

112 lines
2.2 KiB
Go

package kw
import "git.lxtend.com/qqbot/sqlite3"
func init() {
kwTable := `
CREATE TABLE IF NOT EXISTS kw (
id INTEGER PRIMARY KEY AUTOINCREMENT,
kw TEXT,
reply TEXT,
group_id TEXT,
created_by TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
`
sqlite3.TryCreateTable(kwTable)
}
func AddKW(kw string, reply string, groupID string, createdBy string) (int64, error) {
kwData := Kw{
Kw: kw,
Reply: reply,
GroupID: groupID,
CreatedBy: createdBy,
}
tx, err := sqlite3.GetTran()
if err != nil {
return 0, err
}
defer tx.Rollback()
res, err := tx.Exec("INSERT INTO kw (kw, reply, group_id, created_by) VALUES (:kw, :reply, :group_id, :created_by)", kwData.Kw, kwData.Reply, kwData.GroupID, kwData.CreatedBy)
if err != nil {
return 0, err
}
id, _ := res.LastInsertId()
tx.Commit()
return id, nil
}
func DeleteKW(kw string, groupID string) error {
tx, err := sqlite3.GetTran()
if err != nil {
return err
}
defer tx.Rollback()
_, err = tx.Exec("DELETE FROM kw WHERE kw = ? AND group_id = ?", kw, groupID)
if err != nil {
return err
}
tx.Commit()
return nil
}
func DeleteKWReply(kw string, reply string, groupID string) error {
tx, err := sqlite3.GetTran()
if err != nil {
return err
}
defer tx.Rollback()
_, err = tx.Exec("DELETE FROM kw WHERE kw = ? AND reply = ? AND group_id = ?", kw, reply, groupID)
if err != nil {
return err
}
tx.Commit()
return nil
}
func GetKW(kw string, groupId string) ([]Kw, error) {
var kws []Kw
tx, err := sqlite3.GetTran()
if err != nil {
return nil, err
}
defer tx.Rollback()
err = tx.Select(&kws, "SELECT * FROM kw WHERE kw = ? AND group_id = ?", kw, groupId)
if err != nil {
return nil, err
}
tx.Commit()
return kws, nil
}
func GetGroupAllKW(groupID string) ([]Kw, error) {
var kws []Kw
tx, err := sqlite3.GetTran()
if err != nil {
return nil, err
}
defer tx.Rollback()
err = tx.Select(&kws, "SELECT * FROM kw WHERE group_id = ?", groupID)
if err != nil {
return nil, err
}
tx.Commit()
return kws, nil
}
func GetAllKW() ([]Kw, error) {
var kws []Kw
tx, err := sqlite3.GetTran()
if err != nil {
return nil, err
}
defer tx.Rollback()
err = tx.Select(&kws, "SELECT * FROM kw")
if err != nil {
return nil, err
}
tx.Commit()
return kws, nil
}