task-managment / src / server / material / domain / repositories.ts
repositories.ts
Raw
import { UserId } from "@/server/user/domain/models";
import {
  DeleteMaterial,
  DeleteProjectMaterial,
  Material,
  MaterialId,
  ProjectMaterial,
  UpdateProjectMaterial,
} from "./models";
import { ProjectId } from "@/server/project/domain/models";

export interface MaterialRepository {
  getAll(): Promise<Material[]>;

  create(data: Material, userId: UserId): Promise<Material>;

  createProjectMaterial(
    data: ProjectMaterial,
    userId: UserId
  ): Promise<ProjectMaterial>;

  updateProjectMaterial(
    data: ProjectMaterial,
    userId: UserId
  ): Promise<Partial<ProjectMaterial>>;

  delete(
    deleteMaterials: DeleteMaterial,
    userId: UserId
  ): Promise<Material[]>;

  deleteProjectMaterials(
    data: DeleteProjectMaterial,
    userId: UserId
  ): Promise<DeleteProjectMaterial>;
  getProjectMaterialByProject(
    materialId: MaterialId,
    projectId: ProjectId
  ): Promise<ProjectMaterial>;
  getById(materialId: MaterialId): Promise<Material>;
}