Configurable database path

Allow the database file to reside in a user defined location instead of
requiring it to be in the working directory.

Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
This commit is contained in:
Georg Pfuetzenreuter 2024-10-10 00:04:16 +02:00
parent e300f71370
commit dfe7deff72
Signed by: Georg
GPG Key ID: 1ED2F138E7E6FF57
4 changed files with 7 additions and 3 deletions

View File

@ -1,4 +1,5 @@
watbot: watbot:
database: wat.db # wat.db (in the working directory) is the default
server: server:
host: irc.casa # mandatory, no default host: irc.casa # mandatory, no default
port: 6697 port: 6697

View File

@ -20,6 +20,7 @@ type Config struct {
} }
type watConfig struct { type watConfig struct {
Database string `default:"wat.db" yaml:"database"`
Nick string `yaml:"nick"` Nick string `yaml:"nick"`
Pass string `yaml:"pass"` Pass string `yaml:"pass"`
User string `yaml:"user"` User string `yaml:"user"`
@ -99,6 +100,7 @@ func main() {
Name: config.Name, Name: config.Name,
} }
watConfig := wat.WatConfig{ watConfig := wat.WatConfig{
DatabasePath: config.Database,
AutoJoinChannels: config.Channels.Join, AutoJoinChannels: config.Channels.Join,
PermittedChannels: config.Channels.Permitted, PermittedChannels: config.Channels.Permitted,
IgnoredHosts: config.Ignores.Hosts, IgnoredHosts: config.Ignores.Hosts,

View File

@ -20,6 +20,7 @@ type WatBot struct {
} }
type WatConfig struct { type WatConfig struct {
DatabasePath string
BotHosts []string BotHosts []string
BotGames BotGameConfig BotGames BotGameConfig
AdminHosts []string AdminHosts []string
@ -30,7 +31,7 @@ type WatConfig struct {
func NewWatBot(config *irc.ClientConfig, watConfig *WatConfig, serverConn *tls.Conn) *WatBot { func NewWatBot(config *irc.ClientConfig, watConfig *WatConfig, serverConn *tls.Conn) *WatBot {
wat := WatBot{conn: serverConn, Nick: config.Nick, c: watConfig} wat := WatBot{conn: serverConn, Nick: config.Nick, c: watConfig}
wat.Db = NewWatDb() wat.Db = NewWatDb(watConfig.DatabasePath)
wat.game = NewWatGame(&wat, wat.Db) wat.game = NewWatGame(&wat, wat.Db)
wat.integration = NewWatIntegration(&wat, wat.Db, &WatIntegrationConfig{BotHosts: watConfig.BotHosts, BotGames: watConfig.BotGames}) wat.integration = NewWatIntegration(&wat, wat.Db, &WatIntegrationConfig{BotHosts: watConfig.BotHosts, BotGames: watConfig.BotGames})
config.Handler = irc.HandlerFunc(wat.HandleIrcMsg) config.Handler = irc.HandlerFunc(wat.HandleIrcMsg)

View File

@ -52,10 +52,10 @@ type WatDb struct {
db *gorm.DB db *gorm.DB
} }
func NewWatDb() *WatDb { func NewWatDb(dbpath string) *WatDb {
w := WatDb{} w := WatDb{}
var err error var err error
w.db, err = gorm.Open(sqlite.Open("wat.db"), &gorm.Config{}) w.db, err = gorm.Open(sqlite.Open(dbpath), &gorm.Config{})
if err != nil { if err != nil {
panic(err) panic(err)
} }