chore: query optimization

This commit is contained in:
2024-12-08 10:17:25 +01:00
parent a91c4d56b0
commit b154474075
5 changed files with 53 additions and 66 deletions

View File

@@ -1,9 +1,9 @@
import { PurchaseList, purchaseListSchema } from './types';
import { Tool } from './tool';
import { BaseTool, makeRequest } from '../anthropicClient';
import { BaseTool, makeRequest } from '@anthropic';
import { generatePrompt } from './prompt';
import { Consumer } from '../consumer/types';
import prisma from '../../prisma/prisma';
import { Consumer } from '@consumer/types';
import prisma from '@prisma';
export async function generate(
id: number | undefined,
@@ -17,29 +17,8 @@ export async function generate(
parseInt(process.env.NUMBER_OF_WEEKS ?? '4')
);
const consumer = id
? await prisma.consumer.update({
where: {
id
},
data: {
editedValue: editedConsumer
}
})
: await prisma.consumer.create({
data: {
editedValue: editedConsumer
}
});
const newPurchaseList = await prisma.purchaseList.create({
data: {
consumerId: consumer.id
}
});
console.info(
`Generating purchase list with id ${newPurchaseList.id} for consumer with id ${consumer.id}`
`Generating new purchase list for consumer with id ${id ?? 'N/A'}`
);
try {
@@ -58,21 +37,33 @@ export async function generate(
(acc, week) => acc + week.purchases.length,
0
);
console.info(
`Generated ${totalPurchases} purchases for purchase list with id ${newPurchaseList.id} for consumer wth id ${id}`
`Generated ${totalPurchases} purchases for new purchase list for consumer wth id ${id}`
);
await prisma.purchaseList.update({
where: {
id: newPurchaseList.id
},
data: {
value: validPurchases.data
}
const [consumer, purchaseList] = await prisma.$transaction(async tx => {
const consumer = id
? await tx.consumer.update({
where: { id },
data: { editedValue: editedConsumer }
})
: await tx.consumer.create({
data: { editedValue: editedConsumer }
});
const purchaseList = await tx.purchaseList.create({
data: {
consumerId: consumer.id,
value: validPurchases.data
}
});
return [consumer, purchaseList];
});
console.info(
`Purchase list with id ${newPurchaseList.id} for consumer with id ${id} stored in database.`
`Purchase list with id ${purchaseList.id} for consumer with id ${consumer.id} stored in database.`
);
return validPurchases.data;