fix(project):add list project

This commit is contained in:
shahzeydyfah
2024-03-07 16:13:09 +03:30
parent 27cf23e6c4
commit 19e61be2ae
2 changed files with 37 additions and 18 deletions
+5 -1
View File
@@ -50,4 +50,8 @@ class RecordModel(Record):
design_progress_id: uuid.UUID = Field(description='کد شناسایی فیلد پیشرفت طراحی در این فیلد قرار می گیرد') design_progress_id: uuid.UUID = Field(description='کد شناسایی فیلد پیشرفت طراحی در این فیلد قرار می گیرد')
class CreateDesignProgress(DesignProgressModel): class CreateDesignProgress(DesignProgressModel):
records:Optional[List[Record]]=Field(description='لیست رکوردها د این فیلد قرار میگیرد') 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='نوع')
+32 -17
View File
@@ -3,7 +3,7 @@ import uuid
from typing import List from typing import List
from uuid import UUID 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.repositories.base import BaseRepository
from core.service.mongo_db import use_collection from core.service.mongo_db import use_collection
from core.utils.crudify import mongo_soft_deleter from core.utils.crudify import mongo_soft_deleter
@@ -12,7 +12,8 @@ COLLECTION = "design_progress"
class DesignProgressRepository(BaseRepository[CreateDesignProgress]): class DesignProgressRepository(BaseRepository[CreateDesignProgress]):
def __int__(self): def __int__(self):
super().__init__(collection=COLLECTION, model=CreateDesignProgress) 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: if _inp.complete_at:
_inp.start_at = _inp.records[0].send.date_at _inp.start_at = _inp.records[0].send.date_at
progress = DesignProgressModel( progress = DesignProgressModel(
@@ -23,7 +24,11 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]):
start_at= _inp.start_at, start_at= _inp.start_at,
complete_at= _inp.complete_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 return progress
def create_record(self,_inp:CreateDesignProgress,_id:uuid.UUID=None): def create_record(self,_inp:CreateDesignProgress,_id:uuid.UUID=None):
records = [] records = []
@@ -40,18 +45,26 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]):
progress = self.create_progress_model(create) progress = self.create_progress_model(create)
await use_collection(COLLECTION).insert_one(progress.mongo_dict()) await use_collection(COLLECTION).insert_one(progress.mongo_dict())
if create.records: if create.records:
list_records = []
records = self.create_record(create, progress.id) records = self.create_record(create, progress.id)
for record in records: for record in records:
await use_collection('design_progress_record').insert_one(record.mongo_dict()) list_records.append(record.mongo_dict())
return await self.get(progress.id) 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): async def get(self,get_record:GetRecord):
progress = await use_collection(COLLECTION).find_one({"_id":_id}) 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":_id}).to_list(None) progress['records'] = await use_collection('design_progress_record').find({"design_progress_id":progress["_id"]}).to_list(None)
return progress return progress
async def update(self, _id: UUID, update: CreateDesignProgress): 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()}) await use_collection(COLLECTION).update_one({"_id":_id},{"$set":progress.mongo_dict()})
if update.records: if update.records:
before_records = await use_collection('design_progress_record').distinct("_id",{"design_progress_id":_id}) 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() delete_records = list(before_records).copy()
for record in update.records: for record in update.records:
if record.id: if record.id:
save_record = RecordModel( save_record = {
design_progress_id=_id, "_id":record.id,
title=record.title, "title":record.title,
send=record.send, "design_progress_id":_id,
receive=record.receive "send":record.send.dict(),
).u_at() "receive":record.receive.dict()
update_records.append(save_record.mongo_dict()) }
update_records.append(save_record)
update_record_ids.append(record.id) update_record_ids.append(record.id)
delete_records.remove(record.id) delete_records.remove(record.id)
else: else:
@@ -79,7 +93,8 @@ class DesignProgressRepository(BaseRepository[CreateDesignProgress]):
).init_id().cu_at() ).init_id().cu_at()
create_records.append(save_record.mongo_dict()) create_records.append(save_record.mongo_dict())
if update_records: 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: if create_records:
await use_collection('design_progress_record').insert_many(create_records) await use_collection('design_progress_record').insert_many(create_records)
if delete_records: if delete_records: