and so it begins

This commit is contained in:
user
2025-10-20 18:59:38 +03:00
parent f5b99afc8f
commit e239b3bbf6
53 changed files with 4813 additions and 2887 deletions

View File

@@ -1,38 +1,25 @@
import { AirportsRepository } from "$lib/domains/airport/data/repository";
import { env } from "$env/dynamic/private";
import { convertAndFormatCurrency } from "$lib/domains/currency/view/currency.vm.svelte";
import { db } from "@pkg/db";
import { getError, Logger } from "@pkg/logger";
import { DiscountType, type CouponModel } from "@pkg/logic/domains/coupon/data";
import { ERROR_CODES, type Result } from "@pkg/result";
import type {
FlightPriceDetails,
FlightTicket,
TicketSearchPayload,
} from "../data/entities";
import { TicketRepository } from "../data/repository";
import { getError, Logger } from "@pkg/logger";
import { env } from "$env/dynamic/private";
import { ScrapedTicketsDataSource } from "../data/scrape.data.source";
import { db } from "@pkg/db";
import { airportsDb } from "@pkg/airports-db";
import { ERROR_CODES, type Result } from "@pkg/result";
import { DiscountType, type CouponModel } from "@pkg/logic/domains/coupon/data";
import { convertAndFormatCurrency } from "$lib/domains/currency/view/currency.vm.svelte";
import { AmadeusTicketsAPIDataSource } from "../data/amadeusapi.data.source";
import { getRedisInstance } from "$lib/server/redis";
export class TicketController {
private repo: TicketRepository;
private airportsRepo: AirportsRepository;
private TICKET_SCRAPERS = ["kiwi"];
constructor(repo: TicketRepository, airportsRepo: AirportsRepository) {
constructor(repo: TicketRepository) {
this.repo = repo;
this.airportsRepo = airportsRepo;
}
async searchAirports(query: string) {
return this.airportsRepo.searchAirports(query);
}
async getAirportByCode(query: string) {
return this.airportsRepo.getAirportByCode(query);
}
async searchForTickets(
payload: TicketSearchPayload,
coupon: CouponModel | undefined,
@@ -166,14 +153,5 @@ export function getTC() {
env.TICKET_SCRAPER_API_URL,
env.API_KEY,
);
const amadeusApi = new AmadeusTicketsAPIDataSource(
env.AMADEUS_API_BASE_URL,
env.AMADEUS_API_KEY,
env.AMADEUS_API_SECRET,
getRedisInstance(),
);
return new TicketController(
new TicketRepository(db, ds, amadeusApi),
new AirportsRepository(airportsDb),
);
return new TicketController(new TicketRepository(db, ds));
}