Files
cal.diy/specs/cancellation-reason-requirement/decisions.md
T
e3a9f54ba5 feat: Configure cancellation reason (#26872)
* feat: Configure cancellation reason

* fix: use enums

* tests: add unit tests

* fix: type error

* chore: remove duplicate dialog

* fix: type erro

* refator: improvements

* refator: improvements

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-02-24 13:35:51 -03:00

897 B

Cancellation Reason Requirement Decisions

ADR-001: Store in Database Column vs Metadata JSON

Context

Need to store the cancellation reason requirement setting on EventType.

Options Considered

  1. New database column with enum — Requires migration, type-safe, cleaner queries
  2. Metadata JSON field — No migration, but less type-safe for a core setting

Decision

Use a dedicated database column with a Prisma enum (CancellationReasonRequirement).

Rationale:

  • This is a core booking flow setting, similar to disableCancelling and requiresConfirmation
  • Type-safe at the database level
  • Cleaner to query in cancellation validation logic
  • Consistent with how similar settings (disableCancelling, disableRescheduling) are stored

Consequences

  • Requires database migration
  • Type-safe enum values
  • Direct column access in queries (no JSON parsing)