From e31b06b7b56aaf1cf5510d4bb0261f73bc0e8893 Mon Sep 17 00:00:00 2001 From: Horus_Arch Date: Mon, 2 Mar 2015 15:31:39 +0100 Subject: Migrating from revel. --- app/db.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/db.go (limited to 'app/db.go') 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") +} -- cgit v1.2.3