import { pgTable, uuid, text, boolean, timestamp, unique } from "drizzle-orm/pg-core";
import { brigades } from "./brigades";
import { roleEnum, authTypEnum } from "./enums";

/**
 * Benutzer. Platform-Admin: `brigadeId = NULL`. Authentik-Konten: `passwortHash = NULL`.
 */
export const users = pgTable(
  "users",
  {
    id: uuid("id").primaryKey().defaultRandom(),
    brigadeId: uuid("brigade_id").references(() => brigades.id, {
      onDelete: "restrict",
    }),
    rolle: roleEnum("rolle").notNull(),
    authTyp: authTypEnum("auth_typ").notNull(),
    email: text("email").notNull(),
    name: text("name").notNull(),
    passwortHash: text("passwort_hash"),
    aktiv: boolean("aktiv").notNull().default(true),
    erstelltVon: uuid("erstellt_von"),
    erstelltAm: timestamp("erstellt_am", { withTimezone: true })
      .notNull()
      .defaultNow(),
  },
  (t) => ({ emailUq: unique("users_email_uq").on(t.email) }),
);
