/**
 * Extended database schema — branch protection, status checks,
 * notifications, organizations, and teams.
 *
 * These extend the base schema to add enterprise-grade features.
 */

import {
  pgTable,
  text,
  timestamp,
  uuid,
  boolean,
  integer,
  uniqueIndex,
  index,
  serial,
  jsonb,
} from "drizzle-orm/pg-core";
import { users, repositories } from "./schema";

// ─── Branch Protection Rules ────────────────────────────────────────────────


// ─── Status Checks (CI Integration) ────────────────────────────────────────


// ─── Notifications ──────────────────────────────────────────────────────────


// ─── Organizations ──────────────────────────────────────────────────────────

/**
 * Organizations lives in schema.ts — re-exported here so the historical
 * import path keeps working.
 *
 * This file used to declare its OWN pgTable("organizations") with a different
 * column set: display_name/website/location/is_verified but no `slug` and no
 * `created_by_id`. Two Drizzle objects, one physical table, irreconcilable
 * shapes. drizzle.config.ts only includes schema.ts and deploys run
 * db:migrate (never db:push), so this definition was never migrated — it
 * described a table that has never existed. Every insert through it wrote
 * columns Postgres does not have while omitting two NOT NULL columns, which
 * is why POST /orgs/new could never succeed.
 *
 * Migration 0113 adds the four extra columns to the real table so nothing the
 * create form collects is discarded. Keeping ONE definition is what stops the
 * two drifting apart again.
 */
import {
  organizations,
  orgMembers,
  teams,
  teamMembers,
  teamRepos,
  branchProtection,
  notifications,
} from "./schema";
export {
  organizations,
  orgMembers,
  teams,
  teamMembers,
  teamRepos,
  branchProtection,
  notifications,
};


// ─── Type Exports ───────────────────────────────────────────────────────────

export type BranchProtectionRule = typeof branchProtection.$inferSelect;
export type Notification = typeof notifications.$inferSelect;
export type Organization = typeof organizations.$inferSelect;
export type OrgMember = typeof orgMembers.$inferSelect;
export type Team = typeof teams.$inferSelect;
export type TeamMember = typeof teamMembers.$inferSelect;
