/ opencodehub / src / db / schema / deploy-keys.ts
Swadhin Biswas Feature/ai code reviewer (#80) · 8/17/2026
9740d3d
38 lines · 1.2 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
31
32
33
34
35
36
37
38
/**
 * Deploy Keys Schema - Drizzle ORM
 * Defines SSH deploy keys for repositories
 */

import { relations } from "drizzle-orm";
import { boolean, pgTable, text, timestamp } from "drizzle-orm/pg-core";
import { index } from "drizzle-orm/pg-core";
import { repositories } from "./repositories";

export const deployKeys = pgTable("deploy_keys", {
    id: text("id").primaryKey(),
    repositoryId: text("repository_id")
        .notNull()
        .references(() => repositories.id, { onDelete: "cascade" }),
    title: text("title").notNull(),
    key: text("key").notNull(),
    fingerprint: text("fingerprint").notNull(),
    readOnly: boolean("read_only").default(true).notNull(),
    createdAt: timestamp("created_at").notNull().defaultNow(),
    lastUsedAt: timestamp("last_used_at"),
}, (table) => [
    index("deploy_keys_repository_id_idx").on(table.repositoryId),
]);

export const deployKeysRelations = relations(
    deployKeys,
    ({ one }) => ({
        repository: one(repositories, {
            fields: [deployKeys.repositoryId],
            references: [repositories.id],
        }),
    })
);

export type DeployKey = typeof deployKeys.$inferSelect;
export type NewDeployKey = typeof deployKeys.$inferInsert;