event subscriptions
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
import { PlaywrightCrawler } from "crawlee";
|
||||
import * as dateFns from "date-fns";
|
||||
import type { Request } from "express";
|
||||
import type { FoundEventDto } from "../../dtos/foundEvents.js";
|
||||
import { inject } from "../../infrastructure/di/index.js";
|
||||
import { Injectable } from "../../infrastructure/di/injectable-decorator.js";
|
||||
import { DatabaseService } from "../db/prisma.js";
|
||||
@@ -16,7 +19,9 @@ export class FoundEventsService {
|
||||
const top = this;
|
||||
|
||||
this.crawler = new PlaywrightCrawler({
|
||||
async requestHandler({ request, page, log }) {
|
||||
maxRequestsPerMinute: 100,
|
||||
maxConcurrency: 2,
|
||||
requestHandler: async ({ request, page, log }) => {
|
||||
if (request.retryCount > 0) return;
|
||||
|
||||
const label = request.label;
|
||||
@@ -62,4 +67,39 @@ export class FoundEventsService {
|
||||
}));
|
||||
return await this.crawler.run(sources);
|
||||
}
|
||||
|
||||
public async getFutureEvents(request: Request): Promise<FoundEventDto[]> {
|
||||
const allEvents = await this.database.doRequest(
|
||||
async prisma =>
|
||||
prisma.foundEvents.findMany({
|
||||
include: {
|
||||
attachedFiles: true,
|
||||
},
|
||||
}),
|
||||
request,
|
||||
);
|
||||
|
||||
const today = new Date(Date.now());
|
||||
return allEvents.filter(event => {
|
||||
const parts = event.eventDate?.split("-");
|
||||
let date: Date | null = null;
|
||||
if (!parts) {
|
||||
return true;
|
||||
}
|
||||
if (parts.length == 1) {
|
||||
// like '10.05.2012'
|
||||
date = dateFns.parse(parts[0]!, "dd.MM.yyyy", new Date());
|
||||
}
|
||||
if (parts.length == 2) {
|
||||
// like '12.-25.04.2026'
|
||||
date = dateFns.parse(parts[1]!, "dd.MM.yyyy", new Date());
|
||||
}
|
||||
|
||||
if (!date) {
|
||||
console.warn("Unknown Date Format", event.eventDate);
|
||||
return true;
|
||||
}
|
||||
return isNaN(date.valueOf()) || date >= today;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user