blob: 16c6c98298d233201433100b117106950b32e348 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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")
}
|