fixed assignments view once again

This commit is contained in:
z1glr
2025-01-21 09:41:27 +00:00
parent c9fb212386
commit 67a4001883
29 changed files with 695 additions and 449 deletions

View File

@@ -4,27 +4,19 @@ import (
"github.com/johannesbuehl/golunteer/backend/pkg/db"
)
type assignments map[string]*string
type eventAssignmentDB struct {
TaskName string `db:"taskName"`
UserName *string `db:"userName"`
type EventAssignment struct {
TaskID int `db:"taskID" json:"taskID"`
TaskName string `db:"taskName" json:"taskName"`
UserName *string `db:"userName" json:"userName"`
}
func Event(eventID int) (assignments, error) {
func Event(eventID int) ([]EventAssignment, error) {
// get the assignments from the database
var assignmentRows []eventAssignmentDB
var assignmentRows []EventAssignment
if err := db.DB.Select(&assignmentRows, "SELECT USERS.name AS userName, TASKS.text AS taskName FROM USER_ASSIGNMENTS LEFT JOIN USERS ON USER_ASSIGNMENTS.userName = USERS.name LEFT JOIN TASKS ON USER_ASSIGNMENTS.taskID = TASKS.id WHERE USER_ASSIGNMENTS.eventID = ?", eventID); err != nil {
if err := db.DB.Select(&assignmentRows, "SELECT USERS.name AS userName, taskID, TASKS.name AS taskName FROM USER_ASSIGNMENTS LEFT JOIN USERS ON USER_ASSIGNMENTS.userName = USERS.name LEFT JOIN TASKS ON USER_ASSIGNMENTS.taskID = TASKS.id WHERE USER_ASSIGNMENTS.eventID = ?", eventID); err != nil {
return nil, err
} else {
// transform the rows into the returned map
eventAssignments := assignments{}
for _, assignment := range assignmentRows {
eventAssignments[assignment.TaskName] = assignment.UserName
}
return eventAssignments, nil
return assignmentRows, nil
}
}

View File

@@ -10,19 +10,19 @@ type AvailabilityDB struct {
}
type Availability struct {
Text string `db:"text" json:"text" validate:"required"`
Name string `db:"name" json:"name" validate:"required"`
Enabled bool `db:"enabled" json:"enabled" validate:"required"`
Color string `db:"color" json:"color" validate:"required"`
}
func Add(a Availability) error {
_, err := db.DB.NamedExec("INSERT INTO AVAILABILITIES (text, color, enabled) VALUES (:text, :color, :enabled)", a)
_, err := db.DB.NamedExec("INSERT INTO AVAILABILITIES (name, color, enabled) VALUES (:name, :color, :enabled)", a)
return err
}
func Update(a AvailabilityDB) error {
_, err := db.DB.NamedExec("UPDATE AVAILABILITIES SET text = :text, color = :color, enabled = :enabled WHERE id = :id", a)
_, err := db.DB.NamedExec("UPDATE AVAILABILITIES SET name = :name, color = :color, enabled = :enabled WHERE id = :id", a)
return err
}
@@ -47,7 +47,7 @@ func Keys() (map[int]Availability, error) {
for _, a := range availabilitiesRaw {
availabilities[a.Id] = Availability{
Text: a.Text,
Name: a.Name,
Enabled: a.Enabled,
Color: a.Color,
}
@@ -56,3 +56,9 @@ func Keys() (map[int]Availability, error) {
return availabilities, nil
}
}
func Delete(id int) error {
_, err := db.DB.Exec("DELETE FROM AVAILABILITIES WHERE id = $1", id)
return err
}

View File

@@ -24,7 +24,7 @@ func Event(eventID int) (map[string]string, error) {
return nil, err
} else {
for _, a := range availabilitiesRows {
eventAvailabilities[a.UserName] = availabilitiesMap[a.AvailabilityID].Text
eventAvailabilities[a.UserName] = availabilitiesMap[a.AvailabilityID].Name
}
return eventAvailabilities, nil

View File

@@ -19,6 +19,8 @@ func init() {
// connect to the database
DB = sqlx.MustOpen("sqlite", config.Database)
DB.MustExec("PRAGMA foreign_keys = ON")
// create the tables if they don't exist
if dbSetupInstructions, err := os.ReadFile("setup.sql"); err != nil {
panic("can't read database-setup")

View File

@@ -11,7 +11,7 @@ import (
type EventWithAssignment struct {
eventDataDB
Tasks map[string]*string `json:"tasks"`
Tasks []assignments.EventAssignment `json:"tasks"`
}
type EventWithAvailabilities struct {
@@ -61,6 +61,7 @@ type EventCreate struct {
}
func Create(event EventCreate) error {
// convert the date to utc
if result, err := db.DB.NamedExec("INSERT INTO EVENTS (date, description) VALUES (:date, :description)", event); err != nil {
return err
} else if id, err := result.LastInsertId(); err != nil {
@@ -160,7 +161,7 @@ func Update(event EventPatch) error {
func All() ([]eventDataDB, error) {
var dbRows []eventDataDB
if err := db.DB.Select(&dbRows, "SELECT *, DATE_FORMAT(date, '%Y-%m-%dT%H:%i:%s') as date FROM EVENTS"); err != nil {
if err := db.DB.Select(&dbRows, "SELECT * FROM EVENTS"); err != nil {
return nil, err
} else {
return dbRows, nil

View File

@@ -10,7 +10,7 @@ type TaskDB struct {
}
type Task struct {
Text string `json:"text" db:"text" validate:"required"`
Name string `json:"name" db:"name" validate:"required"`
Enabled bool `json:"enabled" db:"enabled" validate:"required"`
}
@@ -34,7 +34,7 @@ func GetMap() (map[int]Task, error) {
for _, a := range tasksRaw {
tasks[a.ID] = Task{
Text: a.Text,
Name: a.Name,
Enabled: a.Enabled,
}
}
@@ -44,13 +44,19 @@ func GetMap() (map[int]Task, error) {
}
func Add(t Task) error {
_, err := db.DB.NamedExec("INSERT INTO TASKS (text, enabled) VALUES (:text, :enabled)", &t)
_, err := db.DB.NamedExec("INSERT INTO TASKS (name, enabled) VALUES (:name, :enabled)", &t)
return err
}
func Update(t TaskDB) error {
_, err := db.DB.NamedExec("UPDATE TASKS set text = :text, enabled = :enabled WHERE id = :id", &t)
_, err := db.DB.NamedExec("UPDATE TASKS set name = :name, enabled = :enabled WHERE id = :id", &t)
return err
}
func Delete(i int) error {
_, err := db.DB.Exec("DELETE FROM TASKS WHERE id = $1", i)
return err
}