From 19e61be2ae59888dbd9a499ffdc2c4cb8873b211 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Thu, 7 Mar 2024 16:13:09 +0330 Subject: [PATCH] fix(project):add list project --- app/models/design_progress.py | 6 +++- app/repositories/design_progress.py | 49 +++++++++++++++++++---------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/app/models/design_progress.py b/app/models/design_progress.py index a6eed3e..9a0eec8 100644 --- a/app/models/design_progress.py +++ b/app/models/design_progress.py @@ -50,4 +50,8 @@ class RecordModel(Record): design_progress_id: uuid.UUID = Field(description='کد شناسایی فیلد پیشرفت طراحی در این فیلد قرار می گیرد') class CreateDesignProgress(DesignProgressModel): - records:Optional[List[Record]]=Field(description='لیست رکوردها د این فیلد قرار میگیرد') \ No newline at end of file + records:Optional[List[Record]]=Field(description='لیست رکوردها د این فیلد قرار میگیرد') + +class GetRecord(pydantic.BaseModel): + project_id:uuid.UUID = Field(description='کد شناسایی پروژ') + type:Literal[1, 2, 3, 4, 5, 6, 7] = Field(description='نوع') \ No newline at end of file diff --git a/app/repositories/design_progress.py b/app/repositories/design_progress.py index b5eeb77..74c8292 100644 --- a/app/repositories/design_progress.py +++ b/app/repositories/design_progress.py @@ -3,7 +3,7 @@ import uuid from typing import List from uuid import UUID -from app.models.design_progress import DesignProgressModel, CreateDesignProgress, RecordModel +from app.models.design_progress import DesignProgressModel, CreateDesignProgress, RecordModel, GetRecord from core.repositories.base import BaseRepository from core.service.mongo_db import use_collection from core.utils.crudify import mongo_soft_deleter @@ -12,7 +12,8 @@ COLLECTION = "design_progress" class DesignProgressRepository(BaseRepository[CreateDesignProgress]): def __int__(self): super().__init__(collection=COLLECTION, model=CreateDesignProgress) - def create_progress_model(self,_inp:CreateDesignProgress)->DesignProgressModel: + def create_progress_model(self,_inp:CreateDesignProgress, type_create='create')->DesignProgressModel: + print(type_create) if _inp.complete_at: _inp.start_at = _inp.records[0].send.date_at progress = DesignProgressModel( @@ -23,7 +24,11 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]): start_at= _inp.start_at, complete_at= _inp.complete_at ) - progress.init_id().cu_at() + if type_create == 'create': + print('9999999999999') + progress.init_id().cu_at() + else: + progress.u_at() return progress def create_record(self,_inp:CreateDesignProgress,_id:uuid.UUID=None): records = [] @@ -40,18 +45,26 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]): progress = self.create_progress_model(create) await use_collection(COLLECTION).insert_one(progress.mongo_dict()) if create.records: + list_records = [] records = self.create_record(create, progress.id) for record in records: - await use_collection('design_progress_record').insert_one(record.mongo_dict()) - return await self.get(progress.id) + list_records.append(record.mongo_dict()) + await use_collection('design_progress_record').insert_many(list_records) + get_record = GetRecord( + project_id=create.project_id, + type=create.type + ) + return await self.get(get_record) - async def get(self, _id: UUID): - progress = await use_collection(COLLECTION).find_one({"_id":_id}) - progress['records'] = await use_collection('design_progress_record').find({"design_progress_id":_id}).to_list(None) + async def get(self,get_record:GetRecord): + progress = await use_collection(COLLECTION).find_one({"project_id":get_record.project_id,"type":get_record.type}) + progress['records'] = await use_collection('design_progress_record').find({"design_progress_id":progress["_id"]}).to_list(None) return progress async def update(self, _id: UUID, update: CreateDesignProgress): - progress = self.create_progress_model(update) + progress = self.create_progress_model(update,'update') + print(progress) + print(_id) await use_collection(COLLECTION).update_one({"_id":_id},{"$set":progress.mongo_dict()}) if update.records: before_records = await use_collection('design_progress_record').distinct("_id",{"design_progress_id":_id}) @@ -61,13 +74,14 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]): delete_records = list(before_records).copy() for record in update.records: if record.id: - save_record = RecordModel( - design_progress_id=_id, - title=record.title, - send=record.send, - receive=record.receive - ).u_at() - update_records.append(save_record.mongo_dict()) + save_record = { + "_id":record.id, + "title":record.title, + "design_progress_id":_id, + "send":record.send.dict(), + "receive":record.receive.dict() + } + update_records.append(save_record) update_record_ids.append(record.id) delete_records.remove(record.id) else: @@ -79,7 +93,8 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]): ).init_id().cu_at() create_records.append(save_record.mongo_dict()) if update_records: - await use_collection('design_progress_record').update_many({"_id":{"$in":update_record_ids}},{"$set":update_records}) + print("111111111",update_record_ids) + await use_collection('design_progress_record').update_many({"_id": {"$in":update_record_ids}},{"$set":update_records}) if create_records: await use_collection('design_progress_record').insert_many(create_records) if delete_records: