|
|
|
@ -250,6 +250,34 @@ export class DataGatheringService {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async getIsInProgress() {
|
|
|
|
|
return await this.prismaService.property.findUnique({
|
|
|
|
|
where: { key: 'LOCKED_DATA_GATHERING' }
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async getLastDataGathering() {
|
|
|
|
|
const lastDataGathering = await this.prismaService.property.findUnique({
|
|
|
|
|
where: { key: 'LAST_DATA_GATHERING' }
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (lastDataGathering?.value) {
|
|
|
|
|
return new Date(lastDataGathering.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async reset() {
|
|
|
|
|
console.log('Data gathering has been reset.');
|
|
|
|
|
|
|
|
|
|
await this.prismaService.property.deleteMany({
|
|
|
|
|
where: {
|
|
|
|
|
OR: [{ key: 'LAST_DATA_GATHERING' }, { key: 'LOCKED_DATA_GATHERING' }]
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private getBenchmarksToGather(startDate: Date): IDataGatheringItem[] {
|
|
|
|
|
const benchmarksToGather = benchmarks.map(({ dataSource, symbol }) => {
|
|
|
|
|
return {
|
|
|
|
@ -373,18 +401,13 @@ export class DataGatheringService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async isDataGatheringNeeded() {
|
|
|
|
|
const lastDataGathering = await this.prismaService.property.findUnique({
|
|
|
|
|
where: { key: 'LAST_DATA_GATHERING' }
|
|
|
|
|
});
|
|
|
|
|
const lastDataGathering = await this.getLastDataGathering();
|
|
|
|
|
|
|
|
|
|
const isDataGatheringLocked = await this.prismaService.property.findUnique({
|
|
|
|
|
where: { key: 'LOCKED_DATA_GATHERING' }
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const diffInHours = differenceInHours(
|
|
|
|
|
new Date(),
|
|
|
|
|
new Date(lastDataGathering?.value)
|
|
|
|
|
);
|
|
|
|
|
const diffInHours = differenceInHours(new Date(), lastDataGathering);
|
|
|
|
|
|
|
|
|
|
return (diffInHours >= 1 || !lastDataGathering) && !isDataGatheringLocked;
|
|
|
|
|
}
|
|
|
|
|