started "real work"
This commit is contained in:
@@ -3,46 +3,70 @@ package events
|
||||
import (
|
||||
"github.com/johannesbuehl/golunteer/backend/pkg/db"
|
||||
"github.com/johannesbuehl/golunteer/backend/pkg/db/assignments"
|
||||
"github.com/johannesbuehl/golunteer/backend/pkg/logger"
|
||||
)
|
||||
|
||||
type Event struct {
|
||||
type EventWithAssignment struct {
|
||||
eventDataDB
|
||||
Tasks []string
|
||||
Assignments map[string]string
|
||||
Tasks map[string]*string `json:"tasks"`
|
||||
}
|
||||
|
||||
type eventDataDB struct {
|
||||
Id int `db:"id"`
|
||||
Date string `db:"date"`
|
||||
Description string `db:"description"`
|
||||
Id int `db:"id" json:"id"`
|
||||
Date string `db:"date" json:"date"`
|
||||
Description string `db:"description" json:"description"`
|
||||
}
|
||||
|
||||
// transform the database-entry to an Event
|
||||
func (e *eventDataDB) Event() (Event, error) {
|
||||
func (e *eventDataDB) Event() (EventWithAssignment, error) {
|
||||
// get the availabilites associated with the event
|
||||
if assignemnts, err := assignments.Event(e.Id); err != nil {
|
||||
return Event{}, err
|
||||
return EventWithAssignment{}, err
|
||||
} else {
|
||||
return Event{
|
||||
return EventWithAssignment{
|
||||
eventDataDB: *e,
|
||||
Assignments: assignemnts,
|
||||
Tasks: assignemnts,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
// get all the event ids
|
||||
func All() (map[int]eventDataDB, error) {
|
||||
func All() ([]eventDataDB, error) {
|
||||
var dbRows []eventDataDB
|
||||
|
||||
if err := db.DB.Select(&dbRows, "SELECT * FROM EVENTS"); err != nil {
|
||||
if err := db.DB.Select(&dbRows, "SELECT *, DATE_FORMAT(date, '%Y-%m-%dT%H:%i:%s') as date FROM EVENTS"); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
eventsMap := map[int]eventDataDB{}
|
||||
|
||||
for _, idRow := range dbRows {
|
||||
eventsMap[idRow.Id] = idRow
|
||||
}
|
||||
|
||||
return eventsMap, nil
|
||||
return dbRows, nil
|
||||
}
|
||||
}
|
||||
|
||||
func WithAssignments() ([]EventWithAssignment, error) {
|
||||
// get all events
|
||||
if eventsDB, err := All(); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
events := make([]EventWithAssignment, len(eventsDB))
|
||||
|
||||
for ii, e := range eventsDB {
|
||||
if ev, err := e.Event(); err != nil {
|
||||
logger.Logger.Error().Msgf("can't get assignments for event with id = %d: %v", e.Id, err)
|
||||
} else {
|
||||
events[ii] = ev
|
||||
}
|
||||
}
|
||||
|
||||
return events, nil
|
||||
}
|
||||
}
|
||||
|
||||
func UserPending(userName string) (int, error) {
|
||||
var result struct {
|
||||
Count int `db:"count(*)"`
|
||||
}
|
||||
|
||||
if err := db.DB.QueryRowx("SELECT count(*) FROM USERS WHERE name = ? AND name NOT IN (SELECT userName FROM USER_AVAILABILITIES)", userName).StructScan(&result); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
return result.Count, nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user