MCPcopy Create free account
hub / github.com/Writesonic/GPTRouter / initModels

Function initModels

src/scripts/initModels.ts:12–79  ·  view source on GitHub ↗
(orm: DataSource)

Source from the content-addressed store, hash-verified

10 * @param {DataSource} orm - The ORM connection to use for database operations
11 */
12export default async function initModels(orm: DataSource) {
13 const existingProviders = await orm.createQueryBuilder().select("provider").from(Provider, "provider").getMany();
14
15 const existingModels = await orm.createQueryBuilder().select("model").from(Model, "model").getMany();
16
17 const filterdModels = models.filter(
18 model => !existingModels.find(existingModel => existingModel.name === model.name),
19 );
20
21 await orm
22 .createQueryBuilder()
23 .insert()
24 .into(Model)
25 .values(
26 filterdModels.map(model => ({
27 name: model.name,
28 providerId: existingProviders.find(provider => provider.name === model.provider)?.id,
29 inputType: model.inputType,
30 order: model.order,
31 })),
32 )
33 .execute();
34
35 const newModels = await orm.createQueryBuilder().select("model").from(Model, "model").getMany();
36
37 await orm
38 .createQueryBuilder()
39 .insert()
40 .into(ModelCost)
41 .values(
42 filterdModels.map(filterdModel => ({
43 modelId: newModels.find(model => model.name === filterdModel.name)?.id,
44 providerId: newModels.find(model => model.name === filterdModel.name)?.providerId,
45 input: filterdModel?.inputCost,
46 output: filterdModel?.outputCost,
47 factor: filterdModel?.costFactor,
48 })),
49 )
50 .execute();
51
52 existingModels.map(async existingModel => {
53 await orm
54 .createQueryBuilder()
55 .update(Model)
56 .where("id = :id", { id: existingModel.id })
57 .set({
58 inputType: models.find(m => m.name === existingModel.name)?.inputType,
59 order: models.find(m => m.name === existingModel.name)?.order,
60 providerId: existingProviders.find(
61 provider => provider.name === models.find(m => m.name === existingModel.name)?.provider,
62 )?.id,
63 })
64 .execute();
65
66 await orm
67 .createQueryBuilder()
68 .update(ModelCost)
69 .where("modelId = :modelId", { modelId: existingModel.id })

Callers 1

initDataFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected