Created
August 1, 2015 08:52
-
-
Save nl5887/be88f07b65f880852477 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package model | |
| import ( | |
| "time" | |
| "github.com/jmoiron/sqlx" | |
| db "db" | |
| utils "utils" | |
| ) | |
| type User struct { | |
| UserId utils.UUID `db:"user_id"` | |
| Username string `db:"username"` | |
| Email string `db:"email"` | |
| EmailConfirmed bool `db:"email_confirmed"` | |
| FirstName string `db:"first_name"` | |
| LastName string `db:"last_name"` | |
| AvatarUrl string `db:"avatar_url"` | |
| CreationDate time.Time `db:"creation_date"` | |
| LastLoginDate *time.Time `db:"last_login_date"` | |
| Password []byte `db:"password"` | |
| } | |
| var ( | |
| queryUserByUsername db.Query = "SELECT user_id, email, email_confirmed, password, first_name, last_name, last_login_date, avatar_url, creation_date, username FROM users WHERE username=?" | |
| queryUserByUserId db.Query = "SELECT user_id, email, email_confirmed, password, first_name, last_name, last_login_date, avatar_url, creation_date, username FROM users WHERE user_id=?" | |
| queryUserByTokenAndTokenType db.Query = "SELECT u.user_id, u.email, u.email_confirmed, u.password, u.first_name, u.last_name, u.last_login_date, u.avatar_url, u.creation_date, u.username FROM users u INNER JOIN tokens t ON u.user_id = t.user_id WHERE t.token=? AND t.type=?" | |
| queryUserUpdate db.Query = `UPDATE users SET username=:username, email=:email, email_confirmed=:email_confirmed, first_name=:first_name, last_name=:last_name, avatar_url=:avatar_url, last_login_date=:last_login_date, password=:password WHERE user_id=:user_id` | |
| queryUserInsert db.Query = `INSERT INTO users (user_id, username, email, email_confirmed, first_name, last_name, avatar_url, creation_date, last_login_date, password) VALUES (:user_id, :username, :email, :email_confirmed, :first_name, :last_name, :avatar_url, :creation_date, :last_login_date, :password)` | |
| ) | |
| func QueryUserByTokenAndTokenType(token string, t TokenType) db.Queryx { | |
| return db.Queryx{ | |
| Query: queryUserByTokenAndTokenType, | |
| Params: []interface{}{token, t}, | |
| } | |
| } | |
| func QueryUserByUserId(userid utils.UUID) db.Queryx { | |
| return db.Queryx{ | |
| Query: queryUserByUserId, | |
| Params: []interface{}{userid.String()}, | |
| } | |
| } | |
| func QueryUserByUsername(username string) db.Queryx { | |
| return db.Queryx{ | |
| Query: queryUserByUsername, | |
| Params: []interface{}{username}, | |
| } | |
| } | |
| func NewUser() *User { | |
| now := time.Now() | |
| return &User{UserId: utils.NewUUID(), CreationDate: time.Now(), LastLoginDate: &now} | |
| } | |
| func (s *User) Update(tx *sqlx.Tx) error { | |
| _, err := tx.NamedExec(string(queryUserUpdate), s) | |
| return err | |
| } | |
| func (s *User) Insert(tx *sqlx.Tx) error { | |
| _, err := tx.NamedExec(string(queryUserInsert), s) | |
| return err | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment