diff options
Diffstat (limited to 'app/db.go')
| -rw-r--r-- | app/db.go | 39 |
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") +} |
