You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

43 lines
1.2 KiB

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);
});