Show total responses on admin page
This commit is contained in:
@ -133,17 +133,17 @@ func (s *Store) CreateEvent(ctx context.Context, cmd CreateEventCommand) (result
|
||||
return
|
||||
}
|
||||
|
||||
type GetEventQuery struct {
|
||||
type GetEventMetadataQuery struct {
|
||||
AlphaID string
|
||||
}
|
||||
|
||||
type GetEventResult struct {
|
||||
type GetEventMetadataResult struct {
|
||||
Name string
|
||||
Description string
|
||||
EarliestDate, LatestDate time.Time
|
||||
}
|
||||
|
||||
func (s *Store) GetEvent(ctx context.Context, query GetEventQuery) (GetEventResult, error) {
|
||||
func (s *Store) GetEventMetadata(ctx context.Context, query GetEventMetadataQuery) (GetEventMetadataResult, error) {
|
||||
conn := s.pool.Get(ctx)
|
||||
defer s.pool.Put(conn)
|
||||
|
||||
@ -151,7 +151,7 @@ func (s *Store) GetEvent(ctx context.Context, query GetEventQuery) (GetEventResu
|
||||
SELECT name, description, earliest_date, latest_date
|
||||
FROM event
|
||||
WHERE alpha_id = ?;`
|
||||
var result GetEventResult
|
||||
var result GetEventMetadataResult
|
||||
var found bool
|
||||
err := sqlitex.Exec(conn, dbQuery,
|
||||
func(stmt *sqlite.Stmt) error {
|
||||
@ -171,11 +171,38 @@ func (s *Store) GetEvent(ctx context.Context, query GetEventQuery) (GetEventResu
|
||||
return err
|
||||
}, query.AlphaID)
|
||||
if err != nil {
|
||||
return GetEventResult{}, err
|
||||
return GetEventMetadataResult{}, err
|
||||
}
|
||||
if !found {
|
||||
// TODO return a constant or a specific error type for Not Found
|
||||
return GetEventResult{}, errors.New("not found")
|
||||
return GetEventMetadataResult{}, errors.New("not found")
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
type GetEventResponsesQuery struct {
|
||||
AlphaID string
|
||||
}
|
||||
|
||||
type GetEventResponsesResult struct {
|
||||
TotalResponses int
|
||||
}
|
||||
|
||||
func (s *Store) GetEventResponses(ctx context.Context, query GetEventResponsesQuery) (GetEventResponsesResult, error) {
|
||||
conn := s.pool.Get(ctx)
|
||||
defer s.pool.Put(conn)
|
||||
|
||||
var result GetEventResponsesResult
|
||||
const dbQuery = `
|
||||
SELECT COUNT(*)
|
||||
FROM response
|
||||
JOIN event ON response.event_id = event.id
|
||||
WHERE event.alpha_id = ?;`
|
||||
err := sqlitex.Exec(conn, dbQuery,
|
||||
func(stmt *sqlite.Stmt) error {
|
||||
result.TotalResponses = stmt.ColumnInt(0)
|
||||
return nil
|
||||
}, query.AlphaID)
|
||||
// TODO return an error if the event does not exist?
|
||||
return result, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user