diff options
Diffstat (limited to '')
-rw-r--r-- | db.go | 35 | ||||
-rw-r--r-- | main.go | 12 |
2 files changed, 37 insertions, 10 deletions
@@ -0,0 +1,35 @@ +package main + +import ( + "fmt" + + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +type user_t struct { + Subject string `gorm:"primaryKey"` + Name string + Email string + Sessions []session_t `gorm:"foreignKey:UserSubject"` +} + +type session_t struct { + Cookie string `gorm:"primaryKey"` + UserSubject string + User user_t `gorm:"foreignKey:UserSubject"` +} + +func setup_database() error { + var err error + switch config.Db.Type { + case "sqlite": + db, err = gorm.Open(sqlite.Open(config.Db.Conn), &gorm.Config{}) + if err != nil { + return err + } + default: + return (fmt.Errorf("Database type \"%s\" unsupported", config.Db.Type)) + } + return db.AutoMigrate(&user_t{}, &session_t{}) +} @@ -22,14 +22,12 @@ package main import ( "errors" - "fmt" "html/template" "log" "net" "net/http" "net/http/fcgi" - "gorm.io/driver/sqlite" "gorm.io/gorm" ) @@ -71,14 +69,8 @@ func main() { fbfp_get_config("fbfp.scfg") - log.Printf("Opening database\n") - switch config.Db.Type { - case "sqlite": - db, err = gorm.Open(sqlite.Open(config.Db.Conn), &gorm.Config{}) - e(err) - default: - e(fmt.Errorf("Database type \"%s\" unsupported", config.Db.Type)) - } + log.Printf("Setting up database\n") + e(setup_database()) log.Printf("Setting up templates\n") tmpl, err = template.ParseGlob("tmpl/*") |