diff --git a/src/main.mts b/src/main.mts index 9d68a9a..fb8638a 100644 --- a/src/main.mts +++ b/src/main.mts @@ -5,6 +5,19 @@ dotenv.config(); await main(); +type TrainingSession = { + name: string; + slug: string; + location: string; + price: number; + date?: string; + dates?: { + start: string; + end: string; + }, + signUpFormURL?: string; +} + async function main() { const notion = new Client({ auth: process.env.NOTION_KEY as string, @@ -14,7 +27,44 @@ async function main() { const pages = await queryDatabase(notion, databaseID); - console.log(pages); + const sessions: TrainingSession[] = [] + for (const page of pages) { + const session = mapPageToTrainingSession(page); + + if (!session) { + continue; + } + + sessions.push(session); + } + + console.log(""); + console.log("Sessions:"); + console.log("========"); + console.log(sessions); +} + +function mapPageToTrainingSession(page: any): TrainingSession | null { + const props = page.properties; + + const session: TrainingSession = { + name: props.Training.title[0].plain_text, + slug: props.meta_slug.select.name, + location: props.Location.rich_text[0].plain_text, + price: props.Price.number, + signUpFormURL: props["Sign up form URL"].url, + } as TrainingSession; + + if (props.Date.date.end !== null) { + session.dates = { + start: props.Date.date.start, + end: props.Date.date.end, + }; + } else { + session.date = props.Date.date.start; + } + + return session; } async function queryDatabase(notion: Client, databaseID: string) {