From 103bcb5dff24cc840b0ef2a1d8a73cc0f5eab1cc Mon Sep 17 00:00:00 2001 From: Alfex4936 Date: Thu, 22 Feb 2024 16:23:55 +0900 Subject: [PATCH] [Backend] Include username/userid on marker apis --- backend/dto/marker_dto.go | 1 + backend/handlers/marker_api.go | 1 + backend/models/marker.go | 3 ++- backend/services/marker_service.go | 29 ++++++++++++++++++----------- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/backend/dto/marker_dto.go b/backend/dto/marker_dto.go index 5c2fa414..36c1229a 100644 --- a/backend/dto/marker_dto.go +++ b/backend/dto/marker_dto.go @@ -14,5 +14,6 @@ type MarkerResponse struct { Longitude float64 `json:"longitude"` Description string `json:"description"` Username string `json:"username"` + UserID int `json:"userID"` PhotoURLs []string `json:"photoUrls"` } diff --git a/backend/handlers/marker_api.go b/backend/handlers/marker_api.go index 7786a8f5..98613aac 100644 --- a/backend/handlers/marker_api.go +++ b/backend/handlers/marker_api.go @@ -100,6 +100,7 @@ func CreateMarkerWithPhotosHandler(c *fiber.Ctx) error { } marker.Username = username + marker.UserID = userId return c.Status(fiber.StatusCreated).JSON(marker) } diff --git a/backend/models/marker.go b/backend/models/marker.go index 6f9d7bf9..f5f5e530 100644 --- a/backend/models/marker.go +++ b/backend/models/marker.go @@ -21,5 +21,6 @@ type MarkerWithPhoto struct { type MarkerWithPhotos struct { Marker - Photos []Photo `json:"photos,omitempty"` + Username string `json:"username,omitempty"` + Photos []Photo `json:"photos,omitempty"` } diff --git a/backend/services/marker_service.go b/backend/services/marker_service.go index cac2374c..0123ef8a 100644 --- a/backend/services/marker_service.go +++ b/backend/services/marker_service.go @@ -116,30 +116,37 @@ func CreateMarkerWithPhotos(markerDto *dto.MarkerRequest, userID int, form *mult } func GetAllMarkers() ([]models.MarkerWithPhotos, error) { - // Query to select all markers - const markerQuery = `SELECT * FROM Markers` + // Assuming an updated query that joins Markers with Users to select the username as well + const markerQuery = ` + SELECT Markers.*, Users.Username + FROM Markers + JOIN Users ON Markers.UserID = Users.UserID` // Query to select photos for a marker const photoQuery = `SELECT * FROM Photos WHERE MarkerID = ?` - // Slice to hold the results - var markers []models.Marker - err := database.DB.Select(&markers, markerQuery) + var markersWithUsernames []struct { + models.Marker + Username string `db:"Username"` + } + err := database.DB.Select(&markersWithUsernames, markerQuery) if err != nil { - return nil, fmt.Errorf("fetching markers: %w", err) + return nil, fmt.Errorf("fetching markers with usernames: %w", err) } var markersWithPhotos []models.MarkerWithPhotos - for _, marker := range markers { + for _, markerWithUsername := range markersWithUsernames { var photos []models.Photo - err := database.DB.Select(&photos, photoQuery, marker.MarkerID) + err := database.DB.Select(&photos, photoQuery, markerWithUsername.MarkerID) if err != nil { - return nil, fmt.Errorf("fetching photos for marker %d: %w", marker.MarkerID, err) + return nil, fmt.Errorf("fetching photos for marker %d: %w", markerWithUsername.MarkerID, err) } + // Adding Username to the MarkerWithPhotos markersWithPhotos = append(markersWithPhotos, models.MarkerWithPhotos{ - Marker: marker, - Photos: photos, + Marker: markerWithUsername.Marker, // Marker includes all previous fields + Photos: photos, + Username: markerWithUsername.Username, // Include the fetched Username }) }