mirror of
https://gitlab.com/mobicoop/v3/service/matcher.git
synced 2026-01-01 04:52:40 +00:00
move matching services to ad module WIP
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
import { Inject, Injectable, Logger } from '@nestjs/common';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { AdRepositoryPort } from '../core/application/ports/ad.repository.port';
|
||||
import {
|
||||
AdRepositoryPort,
|
||||
CandidateQuery,
|
||||
} from '../core/application/ports/ad.repository.port';
|
||||
import { LoggerBase, MessagePublisherPort } from '@mobicoop/ddd-library';
|
||||
import { PrismaService } from './prisma.service';
|
||||
import { AD_MESSAGE_PUBLISHER } from '../ad.di-tokens';
|
||||
import { AdEntity } from '../core/domain/ad.entity';
|
||||
import { AdMapper } from '../ad.mapper';
|
||||
import { ExtendedPrismaRepositoryBase } from '@mobicoop/ddd-library/dist/db/prisma-repository.base';
|
||||
import { Frequency } from '../core/domain/ad.types';
|
||||
import { Frequency, Role } from '../core/domain/ad.types';
|
||||
import { Candidate } from '../core/application/types/algorithm.types';
|
||||
import { AdSelector } from './ad.selector';
|
||||
|
||||
export type AdBaseModel = {
|
||||
uuid: string;
|
||||
@@ -87,4 +92,40 @@ export class AdRepository
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
getCandidates = async (query: CandidateQuery): Promise<Candidate[]> => {
|
||||
// let candidates: Candidate[] = [];
|
||||
const sqlQueries: QueryRole[] = [];
|
||||
if (query.driver)
|
||||
sqlQueries.push({
|
||||
query: AdSelector.select(Role.DRIVER, query),
|
||||
role: Role.DRIVER,
|
||||
});
|
||||
if (query.passenger)
|
||||
sqlQueries.push({
|
||||
query: AdSelector.select(Role.PASSENGER, query),
|
||||
role: Role.PASSENGER,
|
||||
});
|
||||
const results = await Promise.all(
|
||||
sqlQueries.map(
|
||||
async (queryRole: QueryRole) =>
|
||||
({
|
||||
ads: (await this.queryRawUnsafe(queryRole.query)) as AdEntity[],
|
||||
role: queryRole.role,
|
||||
} as AdsRole),
|
||||
),
|
||||
);
|
||||
console.log(results[0].ads);
|
||||
return [];
|
||||
};
|
||||
}
|
||||
|
||||
type QueryRole = {
|
||||
query: string;
|
||||
role: Role;
|
||||
};
|
||||
|
||||
type AdsRole = {
|
||||
ads: AdEntity[];
|
||||
role: Role;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user