fix(sqlite): database is locked issue

This commit is contained in:
Gustavo "Guz" L. de Mello
2024-08-29 13:59:23 -03:00
parent 641e7ebdbf
commit 7225415b22
2 changed files with 11 additions and 2 deletions

View File

@@ -22,6 +22,7 @@ func NewSQLiteDB[C any](file string) (*SQLiteDB[C], error) {
if err != nil {
return &SQLiteDB[C]{}, err
}
db.SetMaxOpenConns(1)
return &SQLiteDB[C]{db}, nil
}
@@ -201,6 +202,8 @@ func (db *SQLiteDB[C]) selectMessages(query string, args ...any) ([]Message, err
SELECT GuildID, ChannelID, ID, Language, OriginChannelID, OriginID FROM messages
%s
`, query), args...)
defer r.Close()
if err != nil {
return []Message{}, errors.Join(ErrInternal, err)
}
@@ -435,6 +438,8 @@ func (db *SQLiteDB[C]) selectChannels(query string, args ...any) ([]Channel, err
SELECT GuildID, ID, Language FROM channels
%s
`, query), args...)
defer r.Close()
if err != nil {
return []Channel{}, errors.Join(ErrInternal, err)
}

View File

@@ -25,7 +25,11 @@ const (
// var translation_provider = flag.String("tprovider", string(GOOGLE_TRANSLATE), "Translation provider")
var (
database_file = flag.String("db", "file:./guild.db", "SQLite database file/location")
discord_token = flag.String("token", os.Getenv("DISCORD_TOKEN"), "Discord bot authentication token")
discord_token = flag.String(
"token",
os.Getenv("DISCORD_TOKEN"),
"Discord bot authentication token",
)
)
func init() {
@@ -39,7 +43,7 @@ func main() {
ReportCaller: true,
}))
db, err := guilddb.NewSQLiteDB[gconf.ConfigString](*database_file)
db, err := guilddb.NewSQLiteDB[gconf.ConfigString](*database_file + "?_busy_timeout=5000")
if err != nil {
logger.Error("Failed to open database connection", slog.String("err", err.Error()))
return