DeleteProject added in db.go, untested

This commit is contained in:
borean 2024-03-20 11:09:48 +01:00
parent a468b896db
commit cd74758b2f

View file

@ -3,6 +3,7 @@ package database
import (
"embed"
"errors"
"fmt"
"path/filepath"
"ttime/internal/types"
@ -19,6 +20,7 @@ type Database interface {
PromoteToAdmin(username string) error
GetUserId(username string) (int, error)
AddProject(name string, description string, username string) error
// DeleteProject(name string, username string) error
Migrate() error
MigrateSampleData() error
GetProjectId(projectname string) (int, error)
@ -70,6 +72,8 @@ const getProjectsForUser = `SELECT p.id, p.name, p.description FROM projects p
JOIN user_roles ur ON p.id = ur.project_id
JOIN users u ON ur.user_id = u.id
WHERE u.username = ?`
const deleteProject = `DELETE FROM projects
WHERE id = ? AND owner_username = ?`
// DbConnect connects to the database
func DbConnect(dbpath string) Database {
@ -225,6 +229,21 @@ func (d *Db) AddProject(name string, description string, username string) error
return err
}
func (d *Db) DeleteProject(projectID string, username string) error {
tx := d.MustBegin()
_, err := tx.Exec(deleteProject, projectID, username)
if err != nil {
if rollbackErr := tx.Rollback(); rollbackErr != nil {
return fmt.Errorf("error rolling back transaction: %v, delete error: %v", rollbackErr, err)
}
panic(err)
}
return err
}
func (d *Db) GetAllUsersProject(projectname string) ([]UserProjectMember, error) {
// Define the SQL query to fetch users and their roles for a given project
query := `