Initial commit
This commit is contained in:
127
pkg/repo/user.go
Normal file
127
pkg/repo/user.go
Normal file
@@ -0,0 +1,127 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
Id int64 `json:"id"`
|
||||
FirstName string `json:"firstName"`
|
||||
LastName string `json:"lastName"`
|
||||
EmailAddress string `json:"emailAddress"`
|
||||
PhoneNumber string `json:"phoneNumber"`
|
||||
Password string `json:"-"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
func AddUser(user User) (int64, error) {
|
||||
//TODO: Creating the password needs to be split out so that the temporary password can be emailed to the user as part of their validation email
|
||||
// password, err := // auth.GetTempPassword(8)
|
||||
// if err != nil {
|
||||
// return 0, err
|
||||
// }
|
||||
|
||||
password := "abc123"
|
||||
|
||||
db := getDB()
|
||||
|
||||
result, err := db.Exec("INSERT INTO `user` (first_name, last_name, email_address, phone_number, password) VALUES (?, ?, ?, ?, ?)", user.FirstName, user.LastName, user.EmailAddress, user.PhoneNumber, password)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return result.LastInsertId()
|
||||
}
|
||||
|
||||
func GetUserByEmail(email string) (User, error) {
|
||||
db := getDB()
|
||||
row := db.QueryRow("SELECT `id`, `first_name`, `last_name`, `email_address`, `phone_number`, `password`, `created_at`, `image_id` FROM `user` WHERE email_address = ?", email)
|
||||
u := User{}
|
||||
|
||||
if err := row.Scan(&u.Id, &u.FirstName, &u.LastName, &u.EmailAddress, &u.PhoneNumber, &u.Password, &u.CreatedAt); err != nil {
|
||||
return User{}, err
|
||||
}
|
||||
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func GetUserById(id int64) (User, error) {
|
||||
db := getDB()
|
||||
row := db.QueryRow("SELECT `id`, `first_name`, `last_name`, `email_address`, `phone_number`, `password`, `created_at`, `image_id` FROM `user` WHERE `id` = ?", id)
|
||||
u := User{}
|
||||
|
||||
if err := row.Scan(&u.Id, &u.FirstName, &u.LastName, &u.EmailAddress, &u.PhoneNumber, &u.Password, &u.CreatedAt); err != nil {
|
||||
return User{}, err
|
||||
}
|
||||
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func UpdateUser(u User) error {
|
||||
db := getDB()
|
||||
|
||||
_, err := db.Exec("UPDATE `user` SET `first_name` = ?, `last_name` = ?, `email_address` = ?, `phone_number` = ? where `id` = ?", u.FirstName, u.LastName, u.EmailAddress, u.PhoneNumber, u.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func UpdateUserPassword(u User) error {
|
||||
db := getDB()
|
||||
|
||||
_, err := db.Exec("UPDATE `user` SET `password` = ? where `id` = ?", u.Password, u.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type UserSession struct {
|
||||
UserId int64
|
||||
TokenId string
|
||||
Expiration time.Time
|
||||
}
|
||||
|
||||
func GetUserSessionById(userId int64) (UserSession, error) {
|
||||
db := getDB()
|
||||
row := db.QueryRow("SELECT user_id, token_id, expiration FROM `user_session` WHERE user_id = ?", userId)
|
||||
|
||||
us := UserSession{}
|
||||
if err := row.Scan(&us.UserId, &us.TokenId, &us.Expiration); err != nil {
|
||||
return UserSession{}, err
|
||||
}
|
||||
|
||||
return us, nil
|
||||
}
|
||||
|
||||
func AddUserSession(session UserSession) error {
|
||||
err := DeleteUserSession(session.UserId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
db := getDB()
|
||||
|
||||
_, err = db.Exec("INSERT INTO `user_session` VALUES (?, ?, ?)", session.UserId, session.TokenId, session.Expiration)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func DeleteUserSession(userId int64) error {
|
||||
db := getDB()
|
||||
|
||||
_, err := db.Exec("DELETE FROM `user_session` WHERE user_id = ?", userId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user