summaryrefslogtreecommitdiff
path: root/app/controllers/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/db.go')
-rw-r--r--app/controllers/db.go119
1 files changed, 0 insertions, 119 deletions
diff --git a/app/controllers/db.go b/app/controllers/db.go
deleted file mode 100644
index baa772c..0000000
--- a/app/controllers/db.go
+++ /dev/null
@@ -1,119 +0,0 @@
-package controllers
-
-import (
- "github.com/jinzhu/gorm"
- _ "github.com/mattn/go-sqlite3"
- "github.com/revel/revel"
- "time"
-)
-
-type User struct {
- Id int64
- Email string `sql:"unique"`
- Name string `sql:"unique"`
- Password string
- Confirmed bool
- ConfirmationKey string
- Alerts []Alert
- CreatedAt time.Time
- DeletedAt time.Time
- UpdatedAt time.Time
-}
-
-// Multiple accounts which are alerted
-type Alert struct {
- Id int64
- UserId int64
- Email string
- CreatedAt time.Time
- DeletedAt time.Time
- UpdatedAt time.Time
-}
-
-type Job struct {
- Id int64
- UserId int64
- Name string
- Url string
- Versions []Version
- Diff string
- DiffLen int64
- CreatedAt time.Time
- DeletedAt time.Time
- UpdatedAt time.Time
-}
-
-// Save history version of jobs
-type Version struct {
- Id int64
- JobId int64
- Content string
- Hash string
- CreatedAt time.Time
- DeletedAt time.Time
- UpdatedAt time.Time
-}
-
-var db = DBInit()
-
-func DBInit() gorm.DB {
- // Open database handler
- // !!! FIXME THIS THROWS A PANIC AT COMPILE TIME. WHY? !!!
-
- //db, err := gorm.Open(revel.Config.StringDefault("db.driver", "sqlite3"), revel.Config.StringDefault("db.spec", "webmon.db"))
-
- /* OR */
-
- /*
- var (
- d, s string
- )
- d = revel.Config.StringDefault("test.d", "sqlite3")
- s = revel.Config.StringDefault("test.s", "webmon.db")
- //db, err := gorm.Open(driver, spec)
-
- revel.WARN.Println(d)
- revel.WARN.Println(s)
- */
-
- // This works.
- db, err := gorm.Open("sqlite3", "webmon.db")
-
- // Set database logging to TRACE
- db.LogMode(true)
- db.SetLogger(gorm.Logger{revel.TRACE})
-
- // Ping database to check if up
- if err = db.DB().Ping(); err != nil {
- revel.ERROR.Panicf("Failed to init database. %s \n", err)
- }
- defer db.Close()
-
- // Set Pool connections
- db.DB().SetMaxIdleConns(10)
- db.DB().SetMaxOpenConns(100)
-
- // Create tables which are defined as struct
- db.Debug().CreateTable(&User{})
- db.Debug().CreateTable(&Alert{})
- db.Debug().CreateTable(&Job{})
- db.Debug().CreateTable(&Version{})
-
- // Automigration
- db.Debug().AutoMigrate(&User{}, &Job{}, &Version{}, &Alert{})
-
- // Add index on email and name to enforce uniqueness
- 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")
-
- // Makes hash unique
- // db.Debug().Model(&Version{}).AddUniqueIndex("idx_version_hash", "hash")
-
- return db
-}