summaryrefslogtreecommitdiff
path: root/app/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'app/db.go')
-rw-r--r--app/db.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/app/db.go b/app/db.go
new file mode 100644
index 0000000..16c6c98
--- /dev/null
+++ b/app/db.go
@@ -0,0 +1,39 @@
+package controllers
+
+import (
+ "github.com/jinzhu/gorm"
+ _ "github.com/mattn/go-sqlite3"
+ "log"
+ "time"
+)
+
+var Db, dberr = gorm.Open(os.Getenv("WEBMON_DB_DRIVER"), os.Getenv("WEBMON_DB_CREDENTIALS"))
+
+func InitDB() {
+ if dberr != nil {
+ log.Panic(dberr)
+ }
+ logMode := os.Getenv("WEBMON_DB_LOG")
+ if logMode == "true" {
+ Db.LogMode(true)
+ }
+ if err := Db.DB().Ping(); err != nil {
+ log.Panic(err)
+ }
+
+ db.Debug().CreateTable(&User{})
+ db.Debug().CreateTable(&Alert{})
+ db.Debug().CreateTable(&Job{})
+ db.Debug().CreateTable(&Version{})
+
+ db.Debug().AutoMigrate(&User{}, &Job{}, &Version{}, &Alert{})
+
+ db.Debug().Model(&User{}).AddUniqueIndex("idx_user_email", "email")
+ db.Debug().Model(&User{}).AddUniqueIndex("idx_user_name", "name")
+
+ // Unique index on alert to ensure every user can specify not multiple equally alerts
+ db.Debug().Model(&Alert{}).AddUniqueIndex("idx_alert_email_userid", "email", "user_id")
+
+ // Unique index to ensure every user can have only one job with the same name
+ db.Debug().Model(&Job{}).AddUniqueIndex("idx_job_name_userid", "name", "user_id")
+}