refactor
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { ISponsorRepository } from '@core/racing/domain/repositories/ISponsorRepository';
|
||||
import { Sponsor } from '@core/racing/domain/entities/Sponsor';
|
||||
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
|
||||
import { Logger } from '@core/shared/application';
|
||||
|
||||
export class InMemorySponsorRepository implements ISponsorRepository {
|
||||
@@ -9,8 +9,8 @@ export class InMemorySponsorRepository implements ISponsorRepository {
|
||||
constructor(private readonly logger: Logger, initialSponsors: Sponsor[] = []) {
|
||||
this.logger.info('InMemorySponsorRepository initialized.');
|
||||
for (const sponsor of initialSponsors) {
|
||||
this.sponsors.set(sponsor.id, sponsor);
|
||||
this.emailIndex.set(sponsor.contactEmail.toLowerCase(), sponsor.id);
|
||||
this.sponsors.set(sponsor.id.toString(), sponsor);
|
||||
this.emailIndex.set(sponsor.contactEmail.toString().toLowerCase(), sponsor.id.toString());
|
||||
this.logger.debug(`Seeded sponsor: ${sponsor.id} (${sponsor.name}).`);
|
||||
}
|
||||
}
|
||||
@@ -43,37 +43,37 @@ export class InMemorySponsorRepository implements ISponsorRepository {
|
||||
|
||||
async create(sponsor: Sponsor): Promise<Sponsor> {
|
||||
this.logger.debug(`[InMemorySponsorRepository] Creating sponsor: ${sponsor.id} (${sponsor.name})`);
|
||||
if (this.sponsors.has(sponsor.id)) {
|
||||
if (this.sponsors.has(sponsor.id.toString())) {
|
||||
this.logger.warn(`Sponsor with ID ${sponsor.id} already exists.`);
|
||||
throw new Error('Sponsor already exists');
|
||||
}
|
||||
if (this.emailIndex.has(sponsor.contactEmail.toLowerCase())) {
|
||||
if (this.emailIndex.has(sponsor.contactEmail.toString().toLowerCase())) {
|
||||
this.logger.warn(`Sponsor with email ${sponsor.contactEmail} already exists.`);
|
||||
throw new Error('Sponsor with this email already exists');
|
||||
}
|
||||
this.sponsors.set(sponsor.id, sponsor);
|
||||
this.emailIndex.set(sponsor.contactEmail.toLowerCase(), sponsor.id);
|
||||
this.sponsors.set(sponsor.id.toString(), sponsor);
|
||||
this.emailIndex.set(sponsor.contactEmail.toString().toLowerCase(), sponsor.id.toString());
|
||||
this.logger.info(`Sponsor ${sponsor.id} (${sponsor.name}) created successfully.`);
|
||||
return Promise.resolve(sponsor);
|
||||
}
|
||||
|
||||
async update(sponsor: Sponsor): Promise<Sponsor> {
|
||||
this.logger.debug(`[InMemorySponsorRepository] Updating sponsor: ${sponsor.id} (${sponsor.name})`);
|
||||
if (!this.sponsors.has(sponsor.id)) {
|
||||
if (!this.sponsors.has(sponsor.id.toString())) {
|
||||
this.logger.warn(`Sponsor with ID ${sponsor.id} not found for update.`);
|
||||
throw new Error('Sponsor not found');
|
||||
}
|
||||
const existingSponsor = this.sponsors.get(sponsor.id);
|
||||
const existingSponsor = this.sponsors.get(sponsor.id.toString());
|
||||
// If email changed, update index
|
||||
if (existingSponsor && existingSponsor.contactEmail.toLowerCase() !== sponsor.contactEmail.toLowerCase()) {
|
||||
if (this.emailIndex.has(sponsor.contactEmail.toLowerCase()) && this.emailIndex.get(sponsor.contactEmail.toLowerCase()) !== sponsor.id) {
|
||||
if (existingSponsor && existingSponsor.contactEmail.toString().toLowerCase() !== sponsor.contactEmail.toString().toLowerCase()) {
|
||||
if (this.emailIndex.has(sponsor.contactEmail.toString().toLowerCase()) && this.emailIndex.get(sponsor.contactEmail.toString().toLowerCase()) !== sponsor.id.toString()) {
|
||||
this.logger.warn(`Cannot update sponsor ${sponsor.id} to email ${sponsor.contactEmail} as it's already taken.`);
|
||||
throw new Error('Sponsor with this email already exists');
|
||||
}
|
||||
this.emailIndex.delete(existingSponsor.contactEmail.toLowerCase());
|
||||
this.emailIndex.set(sponsor.contactEmail.toLowerCase(), sponsor.id);
|
||||
this.emailIndex.delete(existingSponsor.contactEmail.toString().toLowerCase());
|
||||
this.emailIndex.set(sponsor.contactEmail.toString().toLowerCase(), sponsor.id.toString());
|
||||
}
|
||||
this.sponsors.set(sponsor.id, sponsor);
|
||||
this.sponsors.set(sponsor.id.toString(), sponsor);
|
||||
this.logger.info(`Sponsor ${sponsor.id} (${sponsor.name}) updated successfully.`);
|
||||
return Promise.resolve(sponsor);
|
||||
}
|
||||
@@ -83,7 +83,7 @@ export class InMemorySponsorRepository implements ISponsorRepository {
|
||||
const sponsor = this.sponsors.get(id);
|
||||
if (sponsor) {
|
||||
this.sponsors.delete(id);
|
||||
this.emailIndex.delete(sponsor.contactEmail.toLowerCase());
|
||||
this.emailIndex.delete(sponsor.contactEmail.toString().toLowerCase());
|
||||
this.logger.info(`Sponsor ${id} deleted successfully.`);
|
||||
} else {
|
||||
this.logger.warn(`Sponsor with ID ${id} not found for deletion.`);
|
||||
|
||||
Reference in New Issue
Block a user