260 lines · 8.4 KB · TypeScript
RawDownload
import {  pgTable,  varchar,  text,  json,  bigint,  boolean,  timestamp,  uniqueIndex,} from "drizzle-orm/pg-core";import { createId } from "@executor-js/fumadb/cuid"; export const integration = pgTable(  "integration",  {    slug: varchar("slug", { length: 255 }).notNull(),    plugin_id: text("plugin_id").notNull(),    name: text("name"),    description: text("description"),    config: json("config"),    health_check: json("health_check"),    config_revised_at: bigint("config_revised_at", { mode: "bigint" }),    can_remove: boolean("can_remove").notNull().default(true),    can_refresh: boolean("can_refresh").notNull().default(false),    created_at: timestamp("created_at").notNull(),    updated_at: timestamp("updated_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),  },  (table) => [uniqueIndex("integration_uidx").on(table.tenant, table.slug)],); export const connection = pgTable(  "connection",  {    integration: varchar("integration", { length: 255 }).notNull(),    name: varchar("name", { length: 255 }).notNull(),    template: text("template").notNull(),    provider: text("provider").notNull(),    item_ids: json("item_ids").notNull(),    identity_label: text("identity_label"),    description: text("description"),    last_health: json("last_health"),    tools_synced_at: bigint("tools_synced_at", { mode: "bigint" }),    oauth_client: text("oauth_client"),    oauth_client_owner: text("oauth_client_owner"),    refresh_item_id: text("refresh_item_id"),    expires_at: bigint("expires_at", { mode: "bigint" }),    oauth_scope: text("oauth_scope"),    oauth_token_url: text("oauth_token_url"),    provider_state: json("provider_state"),    created_at: timestamp("created_at").notNull(),    updated_at: timestamp("updated_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [    uniqueIndex("connection_uidx").on(      table.tenant,      table.owner,      table.subject,      table.integration,      table.name,    ),  ],); export const oauth_client = pgTable(  "oauth_client",  {    slug: varchar("slug", { length: 255 }).notNull(),    authorization_url: text("authorization_url").notNull(),    token_url: text("token_url").notNull(),    grant: text("grant").notNull(),    client_id: text("client_id").notNull(),    client_secret_item_id: text("client_secret_item_id"),    resource: text("resource"),    origin_kind: text("origin_kind"),    origin_integration: text("origin_integration"),    origin_issuer: text("origin_issuer"),    origin_redirect_uri: text("origin_redirect_uri"),    created_at: timestamp("created_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [    uniqueIndex("oauth_client_uidx").on(table.tenant, table.owner, table.subject, table.slug),  ],); export const oauth_session = pgTable(  "oauth_session",  {    state: varchar("state", { length: 255 }).notNull(),    client_slug: text("client_slug").notNull(),    integration: text("integration").notNull(),    name: text("name").notNull(),    template: text("template").notNull(),    redirect_url: text("redirect_url").notNull(),    pkce_verifier: text("pkce_verifier"),    identity_label: text("identity_label"),    payload: json("payload").notNull(),    expires_at: bigint("expires_at", { mode: "bigint" }).notNull(),    created_at: timestamp("created_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [uniqueIndex("oauth_session_uidx").on(table.tenant, table.state)],); export const tool = pgTable(  "tool",  {    integration: varchar("integration", { length: 255 }).notNull(),    connection: varchar("connection", { length: 255 }).notNull(),    plugin_id: text("plugin_id").notNull(),    name: varchar("name", { length: 255 }).notNull(),    description: text("description").notNull(),    input_schema: json("input_schema"),    output_schema: json("output_schema"),    annotations: json("annotations"),    created_at: timestamp("created_at").notNull(),    updated_at: timestamp("updated_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [    uniqueIndex("tool_uidx").on(      table.tenant,      table.owner,      table.subject,      table.integration,      table.connection,      table.name,    ),  ],); export const definition = pgTable(  "definition",  {    integration: varchar("integration", { length: 255 }).notNull(),    connection: varchar("connection", { length: 255 }).notNull(),    plugin_id: text("plugin_id").notNull(),    name: varchar("name", { length: 255 }).notNull(),    schema: json("schema").notNull(),    created_at: timestamp("created_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [    uniqueIndex("definition_uidx").on(      table.tenant,      table.owner,      table.subject,      table.integration,      table.connection,      table.name,    ),  ],); export const tool_policy = pgTable(  "tool_policy",  {    id: varchar("id", { length: 255 }).notNull(),    pattern: text("pattern").notNull(),    action: text("action").notNull(),    position: text("position").notNull(),    created_at: timestamp("created_at").notNull(),    updated_at: timestamp("updated_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [    uniqueIndex("tool_policy_uidx").on(table.tenant, table.owner, table.subject, table.id),  ],); export const plugin_storage = pgTable(  "plugin_storage",  {    plugin_id: varchar("plugin_id", { length: 255 }).notNull(),    collection: varchar("collection", { length: 255 }).notNull(),    key: varchar("key", { length: 255 }).notNull(),    data: json("data").notNull(),    created_at: timestamp("created_at").notNull(),    updated_at: timestamp("updated_at").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    tenant: varchar("tenant", { length: 255 }).notNull(),    owner: varchar("owner", { length: 255 }).notNull(),    subject: varchar("subject", { length: 255 }).notNull(),  },  (table) => [    uniqueIndex("plugin_storage_uidx").on(      table.tenant,      table.owner,      table.subject,      table.plugin_id,      table.collection,      table.key,    ),  ],); export const blob = pgTable(  "blob",  {    namespace: varchar("namespace", { length: 255 }).notNull(),    key: varchar("key", { length: 255 }).notNull(),    value: text("value").notNull(),    row_id: varchar("row_id", { length: 255 })      .primaryKey()      .notNull()      .$defaultFn(() => createId()),    id: varchar("id", { length: 255 }).notNull(),  },  (table) => [uniqueIndex("blob_id_uidx").on(table.id)],); export const private_executor_cloud_settings = pgTable("private_executor_cloud_settings", {  id: varchar("id", { length: 255 }).primaryKey().notNull(),  version: varchar("version", { length: 255 }).notNull().default("1.0.0"),});