import {
  pgTable,
  uuid,
  text,
  jsonb,
  timestamp,
  index,
} from "drizzle-orm/pg-core";
import { users } from "./users";

/**
 * Audit-Log für Admin-/Bereitstellungsaktionen. `actorUserId` -> set null,
 * damit Historie auch nach Benutzerlöschung erhalten bleibt.
 */
export const auditLog = pgTable(
  "audit_log",
  {
    id: uuid("id").primaryKey().defaultRandom(),
    actorUserId: uuid("actor_user_id").references(() => users.id, {
      onDelete: "set null",
    }),
    aktion: text("aktion").notNull(),
    zielTyp: text("ziel_typ"),
    zielId: uuid("ziel_id"),
    details: jsonb("details"),
    zeitpunkt: timestamp("zeitpunkt", { withTimezone: true })
      .notNull()
      .defaultNow(),
  },
  (t) => ({
    zeitpunktIdx: index("audit_log_zeitpunkt_idx").on(t.zeitpunkt),
    aktionIdx: index("audit_log_aktion_idx").on(t.aktion),
  }),
);
