aboutsummaryrefslogtreecommitdiff
path: root/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'db.go')
-rw-r--r--db.go35
1 files changed, 35 insertions, 0 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{})
+}