import { jsonArrayFrom } from "kysely/helpers/postgres";
import { db } from "../db";

export const getAll = async () => {
	const data = await db
		.selectFrom("annunci")
		.innerJoin("servizio_annunci", "servizio_annunci.annunci_id", "annunci.id")

		.select((eb) => [
			"annunci.id",
			"annunci.titolo_it",
			"annunci.codice",
			jsonArrayFrom(
				eb
					.selectFrom("servizio_annunci")
					.select([
						"servizio_annunci.open_contatti_at",
						"servizio_annunci.servizio_id",
						"servizio_annunci.created_at",
						"servizio_annunci.user_confirmed_at",
						"servizio_annunci.hasConfermaAdmin",
					])
					.leftJoin(
						"servizio",
						"servizio.servizio_id",
						"servizio_annunci.servizio_id",
					)
					.leftJoin("users", "users.id", "servizio.user_id")
					.select(["users.username", "users.id as userId"])
					.whereRef("servizio_annunci.annunci_id", "=", "annunci.id"),
			).as("richieste"),
		])
		.groupBy("annunci.id")
		.execute();
	return data;
};
