aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db.go35
-rw-r--r--main.go12
2 files changed, 37 insertions, 10 deletions
diff --git a/db.go b/db.go
new file mode 100644
index 0000000..6141553
--- /dev/null
+++ b/db.go
@@ -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{})
+}
diff --git a/main.go b/main.go
index b819690..4f6243e 100644
--- a/main.go
+++ b/main.go
@@ -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/*")