catbase/plugins/velouremon/database.go

74 lines
1.6 KiB
Go
Raw Normal View History

2019-07-07 01:56:26 +00:00
package velouremon
import (
"github.com/rs/zerolog/log"
)
func (vp *VelouremonPlugin) checkAndBuildDBOrFail() {
2019-07-08 00:28:06 +00:00
dbNeedsPopulating := false
if rows, err := vp.db.Queryx(`select name from sqlite_master where type='table' and name='velouremon_players';`); err != nil {
log.Fatal().Err(err)
} else {
dbNeedsPopulating = rows.Next()
}
2019-07-07 01:56:26 +00:00
if _, err := vp.db.Exec(`create table if not exists velouremon_players (
2019-07-08 00:28:06 +00:00
id integer primary key,
chatid string,
player string,
health integer,
experience integer
2019-07-07 01:56:26 +00:00
);`); err != nil {
log.Fatal().Err(err)
}
if _, err := vp.db.Exec(`create table if not exists velouremon_creature_ref (
2019-07-08 00:28:06 +00:00
id integer primary key,
player integer,
creature integer,
health integer,
2019-07-07 01:56:26 +00:00
experience integer
);`); err != nil {
log.Fatal().Err(err)
}
if _, err := vp.db.Exec(`create table if not exists velouremon_creatures (
2019-07-08 00:28:06 +00:00
id integer primary key,
name string,
defense integer,
attack integer
2019-07-07 01:56:26 +00:00
);`); err != nil {
log.Fatal().Err(err)
}
if _, err := vp.db.Exec(`create table if not exists velouremon_ability_ref (
2019-07-08 00:28:06 +00:00
id integer primary key,
2019-07-07 01:56:26 +00:00
creatureref integer,
2019-07-08 00:28:06 +00:00
ability integer
2019-07-07 01:56:26 +00:00
);`); err != nil {
log.Fatal().Err(err)
}
if _, err := vp.db.Exec(`create table if not exists velouremon_abilities (
2019-07-08 00:28:06 +00:00
id integer primary key,
name string,
damage int,
heal int,
shield int,
weaken int,
2019-07-07 01:56:26 +00:00
critical int
);`); err != nil {
log.Fatal().Err(err)
}
2019-07-08 00:28:06 +00:00
if dbNeedsPopulating {
vp.populateDBWithBaseData()
}
2019-07-07 01:56:26 +00:00
}
func (vp *VelouremonPlugin) loadFromDB() {
vp.loadPlayers()
vp.loadCreatures()
vp.loadAbilities()
}