40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { nanoid } from "nanoid";
|
|
import { Providers } from "~/types/model";
|
|
import { db } from "~~/server/lib/db";
|
|
import { providers as providersSchema } from "~~/drizzle/schema";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
await protectRoute(event);
|
|
const userId = event.context.user!.id as string;
|
|
|
|
const providers = await db.query.providers.findMany({
|
|
where: {
|
|
userId,
|
|
},
|
|
with: {
|
|
models: true,
|
|
},
|
|
});
|
|
|
|
Providers.forEach(async p => {
|
|
if (!providers.find(provider => provider.type === p)) {
|
|
const [created] = await db.insert(providersSchema).values({
|
|
id: nanoid(),
|
|
userId,
|
|
type: p,
|
|
name: p,
|
|
enabled: false,
|
|
config: {},
|
|
createdAt: new Date(),
|
|
updatedAt: new Date(),
|
|
}).returning() as typeof providers;
|
|
if (created) {
|
|
created.models = [];
|
|
providers.push(created);
|
|
}
|
|
}
|
|
});
|
|
|
|
return providers;
|
|
})
|