task-managment / src / server / project / domain / repositories.ts
repositories.ts
Raw
import { UserId } from "@/server/user/domain/models";
import { Area, AreaId, Floor, FloorId, Project, ProjectDetail, ProjectEarningsResults, ProjectFilter, ProjectId, ProjectMaterials, ProjectQueryResuls, ProjectSummary } from "./models";

export interface ProjectRepository {
    create(data: Project,userId:UserId): Promise<Project>;
    update(data: Project,userId:UserId): Promise<Project>;
    getAll(filter: ProjectFilter): Promise<ProjectQueryResuls>;
    getById(projectId: ProjectId): Promise<ProjectDetail>;
    getProductSearch(filter: ProjectFilter): Promise<Partial<Project[]>>;
    getAllProjectMaterials(): Promise<ProjectMaterials[]>;
    getProjectSummary(filter: ProjectFilter): Promise<ProjectSummary[]>;
    getProjectEarnings(filter: ProjectFilter): Promise<ProjectEarningsResults>;
    createProjectArea(data: Area, userId: UserId): Promise<Area>;
    updateProjectArea(data: Partial<Area>, userId: UserId): Promise<Partial<Area>>;
    deleteProjectArea(areaId: AreaId, userId: UserId): Promise<Area>;
    createProjectFloor(data: Floor, userId: UserId): Promise<Floor>;
    isFloorInProjectExist(floorName:string,projectId: ProjectId):Promise<boolean>;
    updateProjectFloor(
      data: Partial<Floor>,
      userId: UserId
    ): Promise<Partial<Floor>>;
  
    deleteProjectFloor(
      floorId: FloorId,
      userId: UserId
    ): Promise<Partial<Floor>>;
    
  }