import { calendarHref } from "@/worker/caldav/paths"; import type { CalDavDoDb } from "@/worker/db/cal-dav-do/client"; import { calendarSyncToken, ensureCalendar, latestChangeSeq, objectByName } from "@/worker/db/cal-dav-do/repository"; import { calDavError, type CalDavError } from "@/worker/objects/cal-dav/types"; import { collectionWritePrecondition, type CollectionConditionalInput, } from "@/worker/objects/common/collection-preconditions"; export type CalendarConditionalInput = CollectionConditionalInput; export function calendarWritePrecondition( db: CalDavDoDb, input: CalendarConditionalInput, targetHref: string, targetEtag: string | null, ): CalDavError | null { return collectionWritePrecondition(db, input, targetHref, targetEtag, { basePath: "/calendars", collectionHref: calendarHref, ensureCollection: ensureCalendar, objectEtag: (db, calendarId, objectName) => objectByName(db, calendarId, objectName)?.etag ?? null, latestChangeSeq, syncToken: calendarSyncToken, preconditionFailed: (message) => calDavError(412, "precondition_failed", message), }); }