Files
electron-egg/go/demo/sql/sqlitelib/stat.go
gaoshuaixing d14241fdf5 feat: v4 demo
2024-12-24 14:56:55 +08:00

85 lines
1.6 KiB
Go

package sqlitelib
import (
"database/sql"
"fmt"
"strings"
"electron-egg/demo/util"
"github.com/wallace5303/ee-go/elog"
)
type Stat struct {
Key string `json:"key"`
Val string `json:"value"`
}
const (
dbVersionName = "duola_database_version"
)
func GetDatabaseVer() (ret string) {
stmt := "SELECT value FROM stat WHERE `key` = '" + dbVersionName + "'"
row := db.QueryRow(stmt)
if err := row.Scan(&ret); nil != err {
if !strings.Contains(err.Error(), "no such table") {
elog.Logger.Errorf("query database version failed: %s", err)
}
}
return
}
func setDatabaseVer() {
key := dbVersionName
tx, err := beginTx()
if err != nil {
return
}
if err = PutStat(tx, key, util.DatabaseVer); err != nil {
return
}
commitTx(tx)
}
func PutStat(tx *sql.Tx, key, value string) (err error) {
stmt := "DELETE FROM stat WHERE `key` = '" + key + "'"
if err = execStmtTx(tx, stmt); err != nil {
return
}
stmt = "INSERT INTO stat VALUES ('" + key + "', '" + value + "')"
err = execStmtTx(tx, stmt)
return
}
func GetStat(key string) (ret string) {
stmt := "SELECT value FROM stat WHERE `key` = '" + key + "'"
row := queryRow(stmt)
row.Scan(&ret)
return
}
func SetStatData(key string, value any) (err error) {
tx, bErr := beginTx()
if bErr != nil {
fmt.Printf("SetStatData bErr %v\n", bErr)
return
}
stmt := "DELETE FROM stat WHERE `key` = '" + key + "'"
if err = execStmtTx(tx, stmt); err != nil {
return
}
stmt = "INSERT INTO stat (key, value) VALUES (?, ?)"
err = execStmtTx(tx, stmt, key, value)
if err != nil {
return
}
commitTx(tx)
return
}