import { pgTable, uuid, bigint, timestamp } from "drizzle-orm/pg-core"

import { authProfiles } from "./auth_profiles"
import { branches } from "./branches"
import { authUsers } from "./auth_users"

export const authProfileBranches = pgTable(
    "auth_profile_branches",
    {
        created_at: timestamp("created_at", { withTimezone: true })
            .notNull()
            .defaultNow(),

        profile_id: uuid("profile_id")
            .notNull()
            .references(() => authProfiles.id, { onDelete: "cascade" }),

        branch_id: bigint("branch_id", { mode: "number" })
            .notNull()
            .references(() => branches.id, { onDelete: "cascade" }),

        created_by: uuid("created_by").references(() => authUsers.id),
    },
    (table) => ({
        primaryKey: [table.profile_id, table.branch_id],
    })
)

export type AuthProfileBranch = typeof authProfileBranches.$inferSelect
export type NewAuthProfileBranch = typeof authProfileBranches.$inferInsert
