diff --git a/src/datasources/interior-api.ts b/src/datasources/interior-api.ts index ae48552..2478691 100644 --- a/src/datasources/interior-api.ts +++ b/src/datasources/interior-api.ts @@ -110,8 +110,18 @@ export class InteriorAPI extends BaseSQLDataSource { Scopes.INTERIORS_PUBLIC_READ, ]); const sql = /* sql */ ` - SELECT rooms.*, room_types.name roomType FROM rooms - LEFT JOIN room_types ON rooms.room_type_id = room_types.id + SELECT + r.*, + r.id, + r.name as room_name, + (ARRAY_AGG(rt.name ORDER BY rt.name) FILTER (WHERE rt.name IS NOT NULL))[1] + AS roomtype, + ARRAY_AGG(rt.name ORDER BY rt.name) FILTER (WHERE rt.name IS NOT NULL) AS roomtypes + FROM rooms r + LEFT JOIN room_roomtypes rrt ON r.id = rrt.room_id + LEFT JOIN roomtypes rt ON rrt.roomtype_id = rt.id + GROUP BY r.id, r.name + ORDER BY r.id; `; const allInteriors = await this.cachedRaw(sql, null) @@ -122,6 +132,7 @@ export class InteriorAPI extends BaseSQLDataSource { ...row, roomName: row.name, roomType: row.roomtype, + roomTypes: row.roomtypes, id: row.s3_suffix, }; this.decorateRow(res); diff --git a/src/schema.graphql b/src/schema.graphql index 92279ff..7acda56 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -374,6 +374,7 @@ type Interior { roomName: String position: Int roomType: String + roomTypes: [String] """ uri is set when there is a generated file on s3, null otherwise """