INNER CODE UNIT · TypeScript
bookingsOn
rowboatlabs/rowboat · apps/harbor/packages/server/src/connectors/cal/index.ts:109
async function bookingsOn(api: CalApi, from: string, toExclusive: string, empty: string, heading: string): Promise<string> {
const me = await api.profile();
const afterStart = zonedToUtc(`${from}T00:00:00`, me.timeZone).toISOString();
const beforeEnd = zonedToUtc(`${toExclusive}T00:00:00`, me.timeZone).toISOString();
const bookings = (await api.bookings({ status: 'upcoming', afterStart, beforeEnd, limit: 50 }))
.filter((b) => b.start < beforeEnd)
.sort((a, b) => a.start.localeCompare(b.start));
if (bookings.length === 0) return empty;
return [heading, ...bookings.slice(0, 20).map((b) => bookingLine(b, me.timeZone))].join('\n');
}
const today = (tz: string) => dateInZone(new Date(), tz);
const DATE = /^\d{4}-\d{2}-\d{2}$/;
const commands: Command<CalApi>[] = [
{
name: 'today',
summary: "today's bookings",