35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
![]() |
import { CronJob } from "quirrel/blitz"
|
||
|
import { PrismaClient, Item } from '@prisma/client';
|
||
|
import { RawItemData } from '../../core/dto/rawData/RawItemData';
|
||
|
import { propsToClassKey } from "@mui/styles";
|
||
|
|
||
|
export default CronJob(
|
||
|
"api/items/refresh", // the path of this API route
|
||
|
"@daily", // cron schedule (see https://crontab.guru)
|
||
|
async () => {
|
||
|
const itemsResponse = await fetch('https://dev.sp-tarkov.com/SPT-AKI/Server/raw/branch/development/project/assets/database/templates/items.json');
|
||
|
if (itemsResponse.status >= 300) {
|
||
|
throw Error(`Could not retrieve items from Gitea: code ${itemsResponse.status}`)
|
||
|
}
|
||
|
const items: { [id: string]: RawItemData } = await itemsResponse.json();
|
||
|
const prisma: PrismaClient = new PrismaClient();
|
||
|
|
||
|
const promises: any[] = []
|
||
|
|
||
|
Object.entries(items).forEach(
|
||
|
async ([key, value]) => {
|
||
|
const {props, ...data} = RawItemData.fromRawData(value).toItemData();
|
||
|
promises.push(await prisma.item.upsert({
|
||
|
create: {props, ...data},
|
||
|
update: data,
|
||
|
where: {
|
||
|
internalId: data.internalId
|
||
|
},
|
||
|
}))
|
||
|
}
|
||
|
);
|
||
|
|
||
|
await Promise.all(promises);
|
||
|
}
|
||
|
)
|