49 lines
1011 B
Go
49 lines
1011 B
Go
package events
|
|
|
|
import (
|
|
"github.com/johannesbuehl/golunteer/backend/pkg/db"
|
|
"github.com/johannesbuehl/golunteer/backend/pkg/db/assignments"
|
|
)
|
|
|
|
type Event struct {
|
|
eventDataDB
|
|
Tasks []string
|
|
Assignments map[string]string
|
|
}
|
|
|
|
type eventDataDB struct {
|
|
Id int `db:"id"`
|
|
Date string `db:"date"`
|
|
Description string `db:"description"`
|
|
}
|
|
|
|
// transform the database-entry to an Event
|
|
func (e *eventDataDB) Event() (Event, error) {
|
|
// get the availabilites associated with the event
|
|
if assignemnts, err := assignments.Event(e.Id); err != nil {
|
|
return Event{}, err
|
|
} else {
|
|
return Event{
|
|
eventDataDB: *e,
|
|
Assignments: assignemnts,
|
|
}, nil
|
|
}
|
|
}
|
|
|
|
// get all the event ids
|
|
func All() (map[int]eventDataDB, error) {
|
|
var dbRows []eventDataDB
|
|
|
|
if err := db.DB.Select(&dbRows, "SELECT * FROM EVENTS"); err != nil {
|
|
return nil, err
|
|
} else {
|
|
eventsMap := map[int]eventDataDB{}
|
|
|
|
for _, idRow := range dbRows {
|
|
eventsMap[idRow.Id] = idRow
|
|
}
|
|
|
|
return eventsMap, nil
|
|
}
|
|
}
|