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