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.go92
1 files changed, 92 insertions, 0 deletions
diff --git a/app/controllers/db.go b/app/controllers/db.go
new file mode 100644
index 0000000..0f50968
--- /dev/null
+++ b/app/controllers/db.go
@@ -0,0 +1,92 @@
+package controllers
+
+import (
+ "github.com/jinzhu/gorm"
+ _ "github.com/mattn/go-sqlite3"
+ "github.com/revel/revel"
+ "time"
+)
+
+type User struct {
+ Id int64
+ Name string
+ Email string
+ Password string
+ Domains []Domain
+ CreatedAt time.Time
+ UpdatedAt time.Time
+ DeletedAt time.Time
+}
+
+type Domain struct {
+ Id int64
+ UserId int64
+ Domain string
+ CreatedAt time.Time
+ UpdatedAt time.Time
+ DeletedAt time.Time
+}
+
+type GormController struct {
+ *revel.Controller
+ Db *gorm.DB
+}
+
+var Gdb gorm.DB
+
+func InitDB() {
+ Gdb, err := gorm.Open(revel.Config.StringDefault("db.driver", "sqlite3"), revel.Config.StringDefault("db.spec", "email.db"))
+ if err != nil {
+ revel.ERROR.Printf("%s", err)
+ }
+ Gdb.LogMode(true)
+ Gdb.SetLogger(gorm.Logger{revel.TRACE})
+ user := User{}
+ Gdb.AutoMigrate(&user)
+ Gdb.Model(&user).AddUniqueIndex("idx_user_password", "password")
+ Gdb.Model(&user).AddUniqueIndex("idx_user_email", "email")
+
+ domain := Domain{}
+ Gdb.AutoMigrate(&domain)
+ Gdb.Model(&domain).AddUniqueIndex("idx_domain_name", "domain")
+}
+
+/*
+// transactions
+
+// This method fills the c.Txn before each transaction
+func (c *GormController) Begin() revel.Result {
+ txn := Gdb.Begin()
+ if txn.Error != nil {
+ panic(txn.Error)
+ }
+ c.Txn = txn
+ return nil
+}
+
+// This method clears the c.Txn after each transaction
+func (c *GormController) Commit() revel.Result {
+ if c.Txn == nil {
+ return nil
+ }
+ c.Txn.Commit()
+ if err := c.Txn.Error; err != nil && err != sql.ErrTxDone {
+ panic(err)
+ }
+ c.Txn = nil
+ return nil
+}
+
+// This method clears the c.Txn after each transaction, too
+func (c *GormController) Rollback() revel.Result {
+ if c.Txn == nil {
+ return nil
+ }
+ c.Txn.Rollback()
+ if err := c.Txn.Error; err != nil && err != sql.ErrTxDone {
+ panic(err)
+ }
+ c.Txn = nil
+ return nil
+}
+*/