/ opencodehub / src / db / schema / auto-merge-rules.ts
swadhinbiswas feat: OpenCodeHub v1.1.0 - Enterprise Features & Storage Adapters · 2/15/2026
719a1cb
30 lines · 1.3 KB
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
import { boolean, integer, pgTable, text, timestamp } from "drizzle-orm/pg-core";
import { repositories } from "./repositories";
import { users } from "./users";

export const autoMergeRules = pgTable("auto_merge_rules", {
  id: text("id").primaryKey(),
  repositoryId: text("repository_id")
    .notNull()
    .references(() => repositories.id, { onDelete: "cascade" }),
  name: text("name").notNull(),
  description: text("description"),
  matchLabels: text("match_labels"),
  requiredLabels: text("required_labels"),
  requiredChecks: text("required_checks"),
  minApprovals: integer("min_approvals").default(0),
  requireCodeOwner: boolean("require_code_owner").default(false),
  allowDraft: boolean("allow_draft").default(false),
  minTimeInQueueMinutes: integer("min_time_in_queue_minutes").default(0),
  mergeMethod: text("merge_method"),
  isEnabled: boolean("is_enabled").default(true),
  matchCount: integer("match_count").default(0),
  lastMatchedAt: timestamp("last_matched_at"),
  lastMismatchReason: text("last_mismatch_reason"),
  createdById: text("created_by_id").references(() => users.id),
  createdAt: timestamp("created_at").notNull().defaultNow(),
  updatedAt: timestamp("updated_at").notNull().defaultNow(),
});

export type AutoMergeRule = typeof autoMergeRules.$inferSelect;