ctx.db
.select({
...getTableColumns(organizers),
ratings: {
rating: sql<number>`AVG(value)`,
reviews: sql<number>`COUNT(value)`,
},
pictures: sql<
(typeof files.$inferSelect)[]
>`JSON_ARRAYAGG(JSON_OBJECT("id", ${files}.id, "name", ${files}.name, "url", ${files.url}))`.as(
"pictures",
),
})
.from(organizers)
.leftJoin(files, eq(organizers.id, files.entityId))
.leftJoin(ratings, eq(organizers.id, ratings.organizerId))
.groupBy(organizers.id);
ctx.db
.select({
...getTableColumns(organizers),
ratings: {
rating: sql<number>`AVG(value)`,
reviews: sql<number>`COUNT(value)`,
},
pictures: sql<
(typeof files.$inferSelect)[]
>`JSON_ARRAYAGG(JSON_OBJECT("id", ${files}.id, "name", ${files}.name, "url", ${files.url}))`.as(
"pictures",
),
})
.from(organizers)
.leftJoin(files, eq(organizers.id, files.entityId))
.leftJoin(ratings, eq(organizers.id, ratings.organizerId))
.groupBy(organizers.id);