feat: creating events and attaching locations

This commit is contained in:
2025-03-26 16:16:48 +00:00
parent caf168c7a1
commit f90876f499
8 changed files with 185 additions and 62 deletions

View File

@@ -3,7 +3,7 @@ package models
import (
"context"
"database/sql"
"log"
. "github.com/go-jet/jet/v2/postgres"
"screenmark/screenmark/.gen/haystack/haystack/model"
. "screenmark/screenmark/.gen/haystack/haystack/table"
@@ -14,49 +14,32 @@ type EventModel struct {
dbPool *sql.DB
}
// This looks stupid
func getEventValues(event model.Events) []any {
arr := make([]any, 0)
if event.Description != nil {
arr = append(arr, *event.Description)
} else {
arr = append(arr, nil)
}
if event.LocationID != nil {
arr = append(arr, *event.LocationID)
} else {
arr = append(arr, nil)
}
return arr
}
func (m EventModel) Save(ctx context.Context, events []model.Events) (model.Events, error) {
func (m EventModel) Save(ctx context.Context, userId uuid.UUID, event model.Events) (model.Events, error) {
// TODO tx here
insertEventStmt := Events.
INSERT(Events.Name, Events.Description)
for _, event := range events {
insertEventStmt = insertEventStmt.VALUES(event.Name, getEventValues(event)...)
}
insertEventStmt = insertEventStmt.RETURNING(Events.AllColumns)
log.Println(insertEventStmt.DebugSql())
INSERT(Events.Name, Events.Description).
VALUES(event.Name, event.Description).
RETURNING(Events.AllColumns)
insertedEvent := model.Events{}
err := insertEventStmt.QueryContext(ctx, m.dbPool, &insertedEvent)
if err != nil {
return insertedEvent, err
}
insertUserEventStmt := UserEvents.
INSERT(UserEvents.UserID, UserEvents.EventID).
VALUES(userId, insertedEvent.ID).
RETURNING(UserEvents.AllColumns)
_, err = insertUserEventStmt.ExecContext(ctx, m.dbPool)
return insertedEvent, err
}
func (m EventModel) SaveToImage(ctx context.Context, imageId uuid.UUID, events []model.Events) error {
if len(events) == 0 {
return nil
}
event, err := m.Save(ctx, events)
func (m EventModel) SaveToImage(ctx context.Context, userId uuid.UUID, imageId uuid.UUID, event model.Events) error {
event, err := m.Save(ctx, userId, event)
if err != nil {
return err
@@ -71,6 +54,19 @@ func (m EventModel) SaveToImage(ctx context.Context, imageId uuid.UUID, events [
return err
}
func (m EventModel) UpdateLocation(ctx context.Context, eventId uuid.UUID, locationId uuid.UUID) (model.Events, error) {
updateEventLocationStmt := Events.
UPDATE(Events.LocationID).
SET(locationId).
WHERE(Events.ID.EQ(UUID(eventId))).
RETURNING(Events.AllColumns)
updatedEvent := model.Events{}
err := updateEventLocationStmt.QueryContext(ctx, m.dbPool, &updatedEvent)
return updatedEvent, err
}
func NewEventModel(db *sql.DB) EventModel {
return EventModel{dbPool: db}
}

View File

@@ -3,7 +3,6 @@ package models
import (
"context"
"database/sql"
"log"
"screenmark/screenmark/.gen/haystack/haystack/model"
. "screenmark/screenmark/.gen/haystack/haystack/table"
@@ -57,7 +56,7 @@ func (m LocationModel) SaveToImage(ctx context.Context, imageId uuid.UUID, locat
VALUES(imageId, locationId)
imageLocation := model.ImageLocations{}
_, err := insertImageLocationStmt.ExecContext(ctx, m.dbPool)
err := insertImageLocationStmt.QueryContext(ctx, m.dbPool, &imageLocation)
return imageLocation, err
}