diff options
| author | Horus_Arch | 2015-02-14 23:11:57 +0100 |
|---|---|---|
| committer | Horus_Arch | 2015-02-14 23:11:57 +0100 |
| commit | 2f9fe2cfad83416647beed9c3c9085d686c43b09 (patch) | |
| tree | fce1e043672f94cf42f8197079ce6fb3017dade0 /app/controllers | |
| download | freemail-2f9fe2cfad83416647beed9c3c9085d686c43b09.tar.gz | |
Initial commit.
Diffstat (limited to 'app/controllers')
| -rw-r--r-- | app/controllers/app.go | 20 | ||||
| -rw-r--r-- | app/controllers/db.go | 92 | ||||
| -rw-r--r-- | app/controllers/email.db | bin | 0 -> 6144 bytes | |||
| -rw-r--r-- | app/controllers/init.go | 12 |
4 files changed, 124 insertions, 0 deletions
diff --git a/app/controllers/app.go b/app/controllers/app.go new file mode 100644 index 0000000..754deee --- /dev/null +++ b/app/controllers/app.go @@ -0,0 +1,20 @@ +package controllers + +import "github.com/revel/revel" + +type App struct { + //*revel.Controller + GormController +} + +func (c App) Index() revel.Result { + return c.Render() +} + +func (c App) Register() revel.Result { + return c.Render() +} + +func (c App) DoRegister() revel.Result { + return c.Render() +} 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 +} +*/ diff --git a/app/controllers/email.db b/app/controllers/email.db Binary files differnew file mode 100644 index 0000000..2199268 --- /dev/null +++ b/app/controllers/email.db diff --git a/app/controllers/init.go b/app/controllers/init.go new file mode 100644 index 0000000..affa2e0 --- /dev/null +++ b/app/controllers/init.go @@ -0,0 +1,12 @@ +package controllers + +import "github.com/revel/revel" + +func init() { + revel.OnAppStart(InitDB) // invoke InitDB function before + /* + revel.InterceptMethod((*GormController).Begin, revel.BEFORE) + revel.InterceptMethod((*GormController).Commit, revel.AFTER) + revel.InterceptMethod((*GormController).Rollback, revel.FINALLY) + */ +} |
