codigo0/backend/src/infrastructure/persistence/MongoProtocolRepository.ts
Javier 6c560de2bd
Some checks are pending
Deploy Código 0 / deploy (push) Waiting to run
feat: migrate protocols to MongoDB and implement admin list view
2026-03-25 11:59:07 +01:00

38 lines
1.3 KiB
TypeScript

import { IProtocolRepository } from '../../domain/repositories/IProtocolRepository';
import { TelephoneProtocol, ProtocolCategory, AgeGroup } from '../../domain/entities/TelephoneProtocol';
import { ClinicalProtocol } from '../../domain/entities/ClinicalProtocol';
import { ProtocolModel } from '../database/models/ProtocolModel';
export class MongoProtocolRepository implements IProtocolRepository {
async findAll(): Promise<any[]> {
return await ProtocolModel.find().lean();
}
async findById(id: string): Promise<any | null> {
return await ProtocolModel.findOne({ id }).lean();
}
async findByCategory(category: ProtocolCategory): Promise<any[]> {
return await ProtocolModel.find({ categoria: category }).lean();
}
async findByAgeGroup(ageGroup: AgeGroup): Promise<any[]> {
// Nota: El modelo de ClinicalProtocol maneja grupos_edad de forma distinta
return await ProtocolModel.find({
$or: [{ 'grupos_edad.id': ageGroup }, { 'grupos_edad': { $exists: false } }]
}).lean();
}
async save(protocol: any): Promise<void> {
await ProtocolModel.findOneAndUpdate(
{ id: protocol.id },
protocol,
{ upsert: true, new: true }
);
}
async delete(id: string): Promise<void> {
await ProtocolModel.findOneAndDelete({ id });
}
}