import { createTRPCRouter, controllerProcedure } from "../trpc.js";
import {
  auditLogActivitySummaryInputSchema,
  auditLogByEntityInputSchema,
  auditLogEntryByIdInputSchema,
  auditLogListInputSchema,
  auditLogTimelineInputSchema,
  getAuditLogActivitySummary,
  getAuditLogEntriesByEntity,
  getAuditLogEntriesByEntityDetail,
  getAuditLogEntryById,
  getAuditLogEntryByIdDetail,
  getAuditLogTimeline,
  getAuditLogTimelineDetail,
  listAuditLogEntries,
  listAuditLogEntriesDetail,
} from "./audit-log-procedure-support.js";

export const auditLogRouter = createTRPCRouter({
  list: controllerProcedure
    .input(auditLogListInputSchema)
    .query(({ ctx, input }) => listAuditLogEntries(ctx, input)),

  listDetail: controllerProcedure
    .input(auditLogListInputSchema)
    .query(({ ctx, input }) => listAuditLogEntriesDetail(ctx, input)),

  getById: controllerProcedure
    .input(auditLogEntryByIdInputSchema)
    .query(({ ctx, input }) => getAuditLogEntryById(ctx, input)),

  getByIdDetail: controllerProcedure
    .input(auditLogEntryByIdInputSchema)
    .query(({ ctx, input }) => getAuditLogEntryByIdDetail(ctx, input)),

  getByEntity: controllerProcedure
    .input(auditLogByEntityInputSchema)
    .query(({ ctx, input }) => getAuditLogEntriesByEntity(ctx, input)),

  getByEntityDetail: controllerProcedure
    .input(auditLogByEntityInputSchema)
    .query(({ ctx, input }) => getAuditLogEntriesByEntityDetail(ctx, input)),

  getTimeline: controllerProcedure
    .input(auditLogTimelineInputSchema)
    .query(({ ctx, input }) => getAuditLogTimeline(ctx, input)),

  getTimelineDetail: controllerProcedure
    .input(auditLogTimelineInputSchema)
    .query(({ ctx, input }) => getAuditLogTimelineDetail(ctx, input)),

  getActivitySummary: controllerProcedure
    .input(auditLogActivitySummaryInputSchema)
    .query(({ ctx, input }) => getAuditLogActivitySummary(ctx, input)),
});
