* refactor: apply biome formatting to packages/features (batch 1 - small subdirs) Format small subdirectories in packages/features: di, flags, holidays, oauth, settings, users, assignment-reason, selectedCalendar, hashedLink, host, form, form-builder, availability, data-table, pbac, schedules, troubleshooter, eventtypes, calendar-subscription, and root-level files. Also includes straggler apps/web BookEventForm.tsx. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: apply biome formatting to packages/features (batch 2 - medium subdirs) Format medium subdirectories in packages/features: auth, credentials, calendars, routing-forms, routing-trace, attributes, watchlist, calAIPhone, tasker, and webhooks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: apply biome formatting to packages/features (batch 3 - bookings + insights) Format bookings and insights subdirectories in packages/features. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: apply biome formatting to packages/features (batch 4 - ee) Format packages/features/ee subdirectory covering billing, workflows, organizations, teams, managed-event-types, round-robin, dsync, integration-attribute-sync, and payments. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: apply biome formatting to packages/features (batch 5 - booking-audit part 1) Format booking-audit di, actions, common, dto, repository, and types subdirectories in packages/features/booking-audit. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: apply biome formatting to packages/features (batch 6 - booking-audit part 2) Format booking-audit service subdirectory in packages/features/booking-audit. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
import type { JsonValue } from "@calcom/types/Json";
|
|
import type { AuditActorType } from "./IAuditActorRepository";
|
|
import type { ActionSource } from "../types/actionSource";
|
|
import type { BookingAuditContext } from "../dto/types";
|
|
|
|
export type BookingAuditType = "RECORD_CREATED" | "RECORD_UPDATED" | "RECORD_DELETED";
|
|
|
|
/**
|
|
* Booking audit actions track changes to bookings throughout their lifecycle.
|
|
*
|
|
* Note: PENDING and AWAITING_HOST represent initial booking states, not transitions.
|
|
* They are reserved in the enum for potential future use but should not appear in audit logs.
|
|
* Use the CREATED action to capture initial booking status instead.
|
|
*/
|
|
export type BookingAuditAction =
|
|
| "CREATED"
|
|
| "CANCELLED"
|
|
| "ACCEPTED"
|
|
| "REJECTED"
|
|
| "PENDING"
|
|
| "AWAITING_HOST"
|
|
| "RESCHEDULED"
|
|
| "ATTENDEE_ADDED"
|
|
| "ATTENDEE_REMOVED"
|
|
| "REASSIGNMENT"
|
|
| "LOCATION_CHANGED"
|
|
| "NO_SHOW_UPDATED"
|
|
| "RESCHEDULE_REQUESTED"
|
|
| "SEAT_BOOKED"
|
|
| "SEAT_RESCHEDULED";
|
|
export type BookingAuditCreateInput = {
|
|
bookingUid: string;
|
|
actorId: string;
|
|
action: BookingAuditAction;
|
|
data: JsonValue;
|
|
type: BookingAuditType;
|
|
timestamp: Date;
|
|
source: ActionSource;
|
|
operationId: string;
|
|
context?: BookingAuditContext;
|
|
};
|
|
|
|
type BookingAudit = {
|
|
id: string;
|
|
bookingUid: string;
|
|
actorId: string;
|
|
action: BookingAuditAction;
|
|
type: BookingAuditType;
|
|
timestamp: Date;
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
data: JsonValue;
|
|
source: ActionSource;
|
|
operationId: string;
|
|
};
|
|
|
|
export type BookingAuditWithActor = BookingAudit & {
|
|
context: BookingAuditContext | null;
|
|
actor: {
|
|
id: string;
|
|
type: AuditActorType;
|
|
userUuid: string | null;
|
|
attendeeId: number | null;
|
|
credentialId: number | null;
|
|
name: string | null;
|
|
createdAt: Date;
|
|
};
|
|
};
|
|
|
|
export interface IBookingAuditRepository {
|
|
/**
|
|
* Creates a new booking audit record
|
|
*/
|
|
create(bookingAudit: BookingAuditCreateInput): Promise<BookingAudit>;
|
|
|
|
createMany(bookingAudits: BookingAuditCreateInput[]): Promise<{ count: number }>;
|
|
|
|
/**
|
|
* Retrieves all audit logs for a specific booking
|
|
* @param bookingUid - The unique identifier of the booking
|
|
* @returns Array of audit logs with actor information, ordered by timestamp DESC
|
|
*/
|
|
findAllForBooking(bookingUid: string): Promise<BookingAuditWithActor[]>;
|
|
|
|
/**
|
|
* Retrieves all RESCHEDULED audit logs for a specific booking
|
|
* @param bookingUid - The unique identifier of the booking
|
|
* @returns Array of RESCHEDULED audit logs with actor information, ordered by timestamp DESC
|
|
*/
|
|
findRescheduledLogsOfBooking(bookingUid: string): Promise<BookingAuditWithActor[]>;
|
|
}
|