Files
pfadi-bussle/lib/googlecalendar.ts
2022-03-01 23:40:21 +01:00

80 lines
1.6 KiB
TypeScript

import {google} from 'googleapis';
import { Booking } from '../db/booking';
const keyFile = process.env.GOOGLE_SERVICE_ACCOUNT_KEY_FILE;
const calendarId = process.env.GOOGLE_CALENDAR_ID;
const auth = new google.auth.GoogleAuth({
keyFile,
scopes: [
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.readonly'
],
});
const calendar = google.calendar({
version: 'v3',
auth,
});
export async function getNewEvents() {
const { data } = await calendar.events.list({
calendarId,
timeMin: new Date().toISOString()}
);
return data.items;
}
function getSummary(booking: Partial<Booking>) : string {
let summary = "";
if (booking.org) {
summary += `${booking.org} - `;
}
summary += booking.name;
return summary;
}
export async function createCalendarEvent(booking : Booking) : Promise<Booking> {
const response = await calendar.events.insert({
auth,
calendarId,
requestBody: {
summary: getSummary(booking),
// description,
start: { date: booking.startDate },
end: { date: booking.endDate },
}
});
booking.calendarEventId = response.data.id;
return booking;
}
export async function deleteCalendarEvent(booking: Booking) {
await calendar.events.delete({
auth,
calendarId,
eventId: booking.calendarEventId,
});
booking.calendarEventId = null;
}
//export async function patchCalendarEvent(booking: { calendarEventId: string } & Partial<Booking> ) : Promise<Booking> {
// const response = await calendar.events.patch({
// auth,
// calendarId,
// eventId: booking.calendarEventId,
// });
//
// return booking;
//}