import { UserId } from "@/server/user/domain/models"; import { DeleteMaterial, DeleteProjectMaterial, Material, MaterialId, ProjectMaterial, UpdateProjectMaterial, } from "../domain/models"; import { MaterialRepository } from "../domain/repositories"; import { MaterialService } from "./material-service-definition"; import { defaultMaterialRepository } from "../infrastructure/repositories-impl"; import { ProjectId } from "@/server/project/domain/models"; class MaterialServiceImpl implements MaterialService { constructor(private materialRepository: MaterialRepository) {} getAllMaterials(): Promise { return this.materialRepository.getAll(); } createMaterial(data: Material, userId: UserId): Promise { return this.materialRepository.create(data, userId); } createProjectMaterial( data: ProjectMaterial, userId: UserId ): Promise { return this.materialRepository.createProjectMaterial(data, userId); } updateProjectMaterial( data: ProjectMaterial, userId: UserId ): Promise> { return this.materialRepository.updateProjectMaterial(data, userId); } deleteMaterials( deleteMaterials: DeleteMaterial, userId: UserId ): Promise { return this.materialRepository.delete(deleteMaterials, userId); } deleteProjectMaterials( data: DeleteProjectMaterial, userId: UserId ): Promise { return this.materialRepository.deleteProjectMaterials(data, userId); } getMaterialById(materialId: MaterialId): Promise { return this.materialRepository.getById(materialId); } getProjectMaterialByProject( materialId: MaterialId, projectId: ProjectId ): Promise { return this.materialRepository.getProjectMaterialByProject( materialId, projectId ); } } export const defaultMaterialService = new MaterialServiceImpl( defaultMaterialRepository );