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") }