From 429e000040ac92629af23ea60cbbe3b888259f48 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Thu, 14 Mar 2024 15:33:17 +0330 Subject: [PATCH] feat(project):add sts --- app/models/project.py | 14 +++++++++++++- app/repositories/project.py | 23 ++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/models/project.py b/app/models/project.py index c8811c7..76cb3e5 100644 --- a/app/models/project.py +++ b/app/models/project.py @@ -6,6 +6,15 @@ from pydantic import Field from typing import Optional, List, Literal from core.models.base import BaseModel + +class UpdateSts(pydantic.BaseModel): + sts: Literal[1, 2, 3, 4] = Field(description=""" + 1.شروع نشده + 2.جاری + 3.متوقف + 4.خاتمه یافته + """) + reason_stop: Optional[str] = Field(description="دلیل موقف کردن پروژه در این فیلد قرار می گیرد") class Budget(pydantic.BaseModel): year:str=Field("سال بودجه") amount:int=Field("مبلغ بودجه") @@ -103,7 +112,10 @@ class Design(pydantic.BaseModel): class ProjectModel(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') user_id: Optional[int] = Field(description='کد شناسایی کاربر در این فیلد قرار می گیرد') - sts: Optional[int] = Field(description='وضعیت در این فیلد قرار می گیرد') + sts: Literal[1,2] = Field(default=1,description=""" + 1.جاری + 2.حذف شده + """) counter: Optional[int] = Field(description='شمارنده در این فیلد قرار می گیرد') lat:Optional[str]= Field(description='مقدار عرض جغرافیایی در این فیلد قرار می گیرد') lang:Optional[str]= Field(description='مقدار طول جغرافیایی در این فیلد قرار می گیرد') diff --git a/app/repositories/project.py b/app/repositories/project.py index e7027ca..ba1b542 100644 --- a/app/repositories/project.py +++ b/app/repositories/project.py @@ -1,6 +1,8 @@ from uuid import UUID -from app.models.project import ProjectModel +from fastapi import HTTPException + +from app.models.project import ProjectModel, UpdateSts from core.repositories.base import BaseRepository from core.service.mongo_db import use_collection @@ -47,6 +49,25 @@ class ProjectRepository(BaseRepository[ProjectModel]): await use_collection(COLLECTION).update_one({"_id":_id},{"$set":update.mongo_dict()}) return await self.get(_id) + async def update_design_sts(self, _id: UUID, update: UpdateSts): + old_project = await use_collection(COLLECTION).find_one({"_id":_id}) + if not old_project: + raise HTTPException(status_code=400,detail='این پروژه وجود ندارد') + await use_collection(COLLECTION).update_one({"_id":_id},{"$set":{ + 'design.sts':update.sts,'design.reason_stop':update.reason_stop + }}) + return True + + async def delete(self, _id: UUID): + old_project = await use_collection(COLLECTION).find_one({"_id":_id}) + if not old_project: + raise HTTPException(status_code=400,detail='این پروژه وجود ندارد') + await use_collection(COLLECTION).update_one({"_id":_id},{"$set":{ + 'sts':2, + }}) + return True + + async def list_project_design(self): project = await use_collection(COLLECTION).find({'monitor':{"$exists":0}}).to_list(None) return project