import { Client, isFullPage } from "@notionhq/client"; import { Contact } from "../../data/Contact"; import { checkboxPropertyToBoolean } from "../utils/properties/checkboxPropertyToBoolean"; import { relationPropertyToPageId } from "../utils/properties/relationPropertyToPageId"; import { titlePropertyToText } from "../utils/properties/titlePropertyToText"; import { queryAllDbResults } from "../utils/queryAllDbResults"; import { contactsDbId } from "./dbIds"; export async function fetchContacts( notionClient: Client, cacheConfig: boolean | { ttl: number }, missions: Readonly<{ notionId: string; Nom: string; Equipe: string; ContactsNotionIds: string[]; }>[] ) { const contactPages = ( await queryAllDbResults( notionClient, { database_id: contactsDbId, }, { cache: cacheConfig } ) ).filter(isFullPage); const contacts: Contact[] = contactPages.map((page) => ({ notionId: page.id, notionIdFamille: relationPropertyToPageId(page.properties, "Famille")!, Nom: titlePropertyToText(page.properties, "Nom"), AExercéUneMission: checkboxPropertyToBoolean( page.properties, "A exercé une mission" ), Missions: missions.filter((m) => m.ContactsNotionIds.includes(page.id)), })); return contacts; }