import { requireUser } from "#server/utils/context"; import { getProviderById } from "#server/service/llm"; import { dbGlobal } from "drizzle-pkg/lib/db"; import { llmProviders, llmModels } from "drizzle-pkg/lib/schema/llm"; import { eq, and } from "drizzle-orm"; export default defineWrappedResponseHandler(async (event) => { const user = await requireUser(event); const providers = await dbGlobal .select({ id: llmProviders.id, name: llmProviders.name, parseMode: llmProviders.parseMode, status: llmProviders.status, }) .from(llmProviders) .where(and(eq(llmProviders.userId, user.id), eq(llmProviders.status, "active"))); const result = []; for (const provider of providers) { const models = await dbGlobal .select({ id: llmModels.id, name: llmModels.name, modelId: llmModels.modelId, type: llmModels.type, maxTokens: llmModels.maxTokens, }) .from(llmModels) .where(and(eq(llmModels.providerId, provider.id), eq(llmModels.enabled, 1))); if (models.length > 0) { result.push({ ...provider, models, }); } } return R.success(result); });