167 lines · 4.8 KB · TypeScript
RawDownload
import {  createSelectSchema,} from "drizzle-orm/effect-schema";import { Schema } from "effect"; import { sourcesTable } from "../../persistence/schema";import { TimestampMsSchema } from "../common";import { SourceIdSchema, WorkspaceIdSchema } from "../ids"; export const SourceKindSchema = Schema.Literal(  "mcp",  "openapi",  "graphql",  "internal",); export const SourceStatusSchema = Schema.Literal(  "draft",  "probing",  "auth_required",  "connected",  "error",); export const SourceTransportSchema = Schema.Literal(  "auto",  "streamable-http",  "sse",); export const SecretRefSchema = Schema.Struct({  providerId: Schema.String,  handle: Schema.String,}); export const SourceAuthSchema = Schema.Union(  Schema.Struct({    kind: Schema.Literal("none"),  }),  Schema.Struct({    kind: Schema.Literal("bearer"),    headerName: Schema.String,    prefix: Schema.String,    token: SecretRefSchema,  }),  Schema.Struct({    kind: Schema.Literal("oauth2"),    headerName: Schema.String,    prefix: Schema.String,    accessToken: SecretRefSchema,    refreshToken: Schema.NullOr(SecretRefSchema),  }),); export const StringMapSchema = Schema.Record({  key: Schema.String,  value: Schema.String,}); const sourceRowSchemaOverrides = {  workspaceId: WorkspaceIdSchema,  sourceId: SourceIdSchema,  kind: SourceKindSchema,  status: SourceStatusSchema,  transport: Schema.NullOr(SourceTransportSchema),  createdAt: TimestampMsSchema,  updatedAt: TimestampMsSchema,} as const; const SourceStorageRowSchema = createSelectSchema(sourcesTable, sourceRowSchemaOverrides); export const StoredSourceRecordSchema = Schema.transform(  SourceStorageRowSchema,  Schema.Struct({    id: SourceIdSchema,    workspaceId: WorkspaceIdSchema,    name: Schema.String,    kind: SourceKindSchema,    endpoint: Schema.String,    status: SourceStatusSchema,    enabled: Schema.Boolean,    namespace: Schema.NullOr(Schema.String),    transport: Schema.NullOr(SourceTransportSchema),    queryParamsJson: Schema.NullOr(Schema.String),    headersJson: Schema.NullOr(Schema.String),    specUrl: Schema.NullOr(Schema.String),    defaultHeadersJson: Schema.NullOr(Schema.String),    sourceHash: Schema.NullOr(Schema.String),    sourceDocumentText: Schema.NullOr(Schema.String),    lastError: Schema.NullOr(Schema.String),    createdAt: TimestampMsSchema,    updatedAt: TimestampMsSchema,  }),  {    strict: false,    decode: (row, _input) => ({      id: row.sourceId,      workspaceId: row.workspaceId,      name: row.name,      kind: row.kind,      endpoint: row.endpoint,      status: row.status,      enabled: row.enabled,      namespace: row.namespace,      transport: row.transport,      queryParamsJson: row.queryParamsJson,      headersJson: row.headersJson,      specUrl: row.specUrl,      defaultHeadersJson: row.defaultHeadersJson,      sourceHash: row.sourceHash,      sourceDocumentText: row.sourceDocumentText,      lastError: row.lastError,      createdAt: row.createdAt,      updatedAt: row.updatedAt,    }),    encode: (source, _output) => ({      workspaceId: source.workspaceId,      sourceId: source.id,      name: source.name,      kind: source.kind,      endpoint: source.endpoint,      status: source.status,      enabled: source.enabled,      namespace: source.namespace,      transport: source.transport,      queryParamsJson: source.queryParamsJson,      headersJson: source.headersJson,      specUrl: source.specUrl,      defaultHeadersJson: source.defaultHeadersJson,      sourceHash: source.sourceHash,      sourceDocumentText: source.sourceDocumentText,      lastError: source.lastError,      createdAt: source.createdAt,      updatedAt: source.updatedAt,    }),  },); export const SourceSchema = Schema.Struct({  id: SourceIdSchema,  workspaceId: WorkspaceIdSchema,  name: Schema.String,  kind: SourceKindSchema,  endpoint: Schema.String,  status: SourceStatusSchema,  enabled: Schema.Boolean,  namespace: Schema.NullOr(Schema.String),  transport: Schema.NullOr(SourceTransportSchema),  queryParams: Schema.NullOr(StringMapSchema),  headers: Schema.NullOr(StringMapSchema),  specUrl: Schema.NullOr(Schema.String),  defaultHeaders: Schema.NullOr(StringMapSchema),  auth: SourceAuthSchema,  sourceHash: Schema.NullOr(Schema.String),  lastError: Schema.NullOr(Schema.String),  createdAt: TimestampMsSchema,  updatedAt: TimestampMsSchema,}); export type SourceKind = typeof SourceKindSchema.Type;export type SourceStatus = typeof SourceStatusSchema.Type;export type SourceTransport = typeof SourceTransportSchema.Type;export type SecretRef = typeof SecretRefSchema.Type;export type SourceAuth = typeof SourceAuthSchema.Type;export type StoredSourceRecord = typeof StoredSourceRecordSchema.Type;export type StringMap = typeof StringMapSchema.Type;export type Source = typeof SourceSchema.Type;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t