1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /**
* 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;
|