Initial commit

This commit is contained in:
2025-09-06 21:35:45 -04:00
commit b02525e28a
32 changed files with 1478 additions and 0 deletions

127
pkg/repo/user.go Normal file
View 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
}