Implement admin api handlers

This commit is contained in:
2024-11-07 21:32:09 +01:00
parent 24f877e50b
commit 0480c165ae
8 changed files with 333 additions and 5 deletions

View File

@@ -5,6 +5,7 @@ import (
"novamd/internal/models"
)
// CreateUser inserts a new user record into the database
func (db *DB) CreateUser(user *models.User) error {
tx, err := db.Begin()
if err != nil {
@@ -54,6 +55,7 @@ func (db *DB) CreateUser(user *models.User) error {
return nil
}
// Helper function to create a workspace in a transaction
func (db *DB) createWorkspaceTx(tx *sql.Tx, workspace *models.Workspace) error {
result, err := tx.Exec(`
INSERT INTO workspaces (
@@ -78,6 +80,7 @@ func (db *DB) createWorkspaceTx(tx *sql.Tx, workspace *models.Workspace) error {
return nil
}
// GetUserByID retrieves a user by ID
func (db *DB) GetUserByID(id int) (*models.User, error) {
user := &models.User{}
err := db.QueryRow(`
@@ -94,6 +97,7 @@ func (db *DB) GetUserByID(id int) (*models.User, error) {
return user, nil
}
// GetUserByEmail retrieves a user by email
func (db *DB) GetUserByEmail(email string) (*models.User, error) {
user := &models.User{}
err := db.QueryRow(`
@@ -111,6 +115,7 @@ func (db *DB) GetUserByEmail(email string) (*models.User, error) {
return user, nil
}
// UpdateUser updates a user's information
func (db *DB) UpdateUser(user *models.User) error {
_, err := db.Exec(`
UPDATE users
@@ -120,6 +125,7 @@ func (db *DB) UpdateUser(user *models.User) error {
return err
}
// UpdateLastWorkspace updates the last workspace the user accessed
func (db *DB) UpdateLastWorkspace(userID int, workspaceName string) error {
tx, err := db.Begin()
if err != nil {
@@ -142,6 +148,7 @@ func (db *DB) UpdateLastWorkspace(userID int, workspaceName string) error {
return tx.Commit()
}
// DeleteUser deletes a user and all their workspaces
func (db *DB) DeleteUser(id int) error {
tx, err := db.Begin()
if err != nil {
@@ -164,6 +171,7 @@ func (db *DB) DeleteUser(id int) error {
return tx.Commit()
}
// GetLastWorkspaceName returns the name of the last workspace the user accessed
func (db *DB) GetLastWorkspaceName(userID int) (string, error) {
var workspaceName string
err := db.QueryRow(`