| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { z } from "zod"
- import { fn } from "./util/fn"
- import { Actor } from "./actor"
- import { and, Database, eq, isNull } from "./drizzle"
- import { Identifier } from "./identifier"
- import { ProviderTable } from "./schema/provider.sql"
- export namespace Provider {
- export const list = fn(z.void(), () =>
- Database.use((tx) =>
- tx
- .select()
- .from(ProviderTable)
- .where(
- and(eq(ProviderTable.workspaceID, Actor.workspace()), isNull(ProviderTable.timeDeleted)),
- ),
- ),
- )
- export const create = fn(
- z.object({
- provider: z.string().min(1).max(64),
- credentials: z.string(),
- }),
- async ({ provider, credentials }) => {
- Actor.assertAdmin()
- return Database.use((tx) =>
- tx
- .insert(ProviderTable)
- .values({
- id: Identifier.create("provider"),
- workspaceID: Actor.workspace(),
- provider,
- credentials,
- })
- .onDuplicateKeyUpdate({
- set: {
- credentials,
- timeDeleted: null,
- },
- }),
- )
- },
- )
- export const remove = fn(
- z.object({
- provider: z.string(),
- }),
- async ({ provider }) => {
- Actor.assertAdmin()
- return Database.transaction((tx) =>
- tx
- .delete(ProviderTable)
- .where(
- and(
- eq(ProviderTable.provider, provider),
- eq(ProviderTable.workspaceID, Actor.workspace()),
- ),
- ),
- )
- },
- )
- }
|