WASAPhoto/service/database/db-users.go

70 lines
1.9 KiB
Go
Raw Normal View History

2022-11-17 16:22:48 +01:00
package database
2022-11-18 13:05:40 +01:00
import (
"github.com/gofrs/uuid"
"github.com/notherealmarco/WASAPhoto/service/database/db_errors"
)
2022-11-18 10:54:14 +01:00
//Check if user exists and if exists return the user id by username
//todo
2022-11-18 13:05:40 +01:00
// Check if user exists
func (db *appdbimpl) UserExists(uid string) (bool, error) {
var name string
2022-11-18 17:18:46 +01:00
err := db.c.QueryRow(`SELECT "name" FROM "users" WHERE "uid" = ?`, uid).Scan(&name)
2022-11-18 13:05:40 +01:00
if db_errors.EmptySet(err) {
return false, nil
} else if err != nil {
return false, err
}
return true, nil
}
2022-11-18 10:54:14 +01:00
// Get user id by username
func (db *appdbimpl) GetUserID(name string) (string, error) {
var uid string
err := db.c.QueryRow(`SELECT "uid" FROM "users" WHERE "name" = ?`, name).Scan(&uid)
return uid, err
}
2022-11-17 16:22:48 +01:00
// Create a new user
2022-11-18 13:05:40 +01:00
func (db *appdbimpl) CreateUser(name string) (string, error) {
uid, err := uuid.NewV4()
if err != nil {
return "", err
}
_, err = db.c.Exec(`INSERT INTO "users" ("uid", "name") VALUES (?, ?)`, uid.String(), name)
return uid.String(), err
2022-11-17 16:22:48 +01:00
}
2022-11-18 17:18:46 +01:00
// Update username
func (db *appdbimpl) UpdateUsername(uid string, name string) error {
_, err := db.c.Exec(`UPDATE "users" SET "name" = ? WHERE "uid" = ?`, name, uid)
return err
}
2022-11-17 16:22:48 +01:00
// Follow a user
func (db *appdbimpl) FollowUser(uid string, follow string) error {
_, err := db.c.Exec(`INSERT INTO "follows" ("follower", "followed") VALUES (?, ?)`, uid, follow)
return err
}
// Unfollow a user
func (db *appdbimpl) UnfollowUser(uid string, unfollow string) error {
_, err := db.c.Exec(`DELETE FROM "follows" WHERE "follower" = ? AND "followed" = ?`, uid, unfollow)
return err
} //todo: should return boolean or something similar
// Ban a user
func (db *appdbimpl) BanUser(uid string, ban string) error {
_, err := db.c.Exec(`INSERT INTO "bans" ("user", "ban") VALUES (?, ?)`, uid, ban)
return err
}
// Unban a user
func (db *appdbimpl) UnbanUser(uid string, unban string) error {
_, err := db.c.Exec(`DELETE FROM "bans" WHERE "user" = ? AND "ban" = ?`, uid, unban)
return err
}