Files
sakhteman/app/repositories/monitor_physical_secondary_progress.py
T

51 lines
2.0 KiB
Python

import datetime
import uuid
from app.config import TaskEnv
from app.models.monitor_physical_secondary_progress import SecondaryProgressModel, SubSecondaryProgressModel, LastRecord
from app.repositories.monitor_physical_progress import PhysicalProgressRepository
from core.repositories.base import BaseRepository
from core.service.mongo_db import use_collection
class SecondaryProgressRepository(BaseRepository):
def __init__(self):
super().__init__(collection=TaskEnv.CLN_MONITOR_SECONDARY, model=SecondaryProgressModel)
async def get_list(self,project_id:uuid.UUID):
get_list = await use_collection(TaskEnv.CLN_MONITOR_SECONDARY).find({'project_id':project_id}).to_list(None)
ids = [i["_id"] for i in get_list]
get_subs = await use_collection(TaskEnv.CLN_MONITOR_SUB_SECONDARY).aggregate([
{"$match":{'parent_id':{"$in":ids}}},
{"$group":{"_id":"$parent_id",'subs': {"$push": "$$ROOT"}}}
]).to_list(None)
for i in get_list:
for j in get_subs:
if i["_id"] == j["_id"]:
i['subs'] = j["subs"]
return get_list
class SubSecondaryProgressRepository(BaseRepository):
def __init__(self):
super().__init__(collection=TaskEnv.CLN_MONITOR_SUB_SECONDARY, model=SubSecondaryProgressModel)
async def get_list_by_parent_id(self,parent_id:uuid.UUID):
get_subs = await use_collection(TaskEnv.CLN_MONITOR_SUB_SECONDARY).find({"parent_id":parent_id}).to_list(None)
return get_subs
async def last_record(self, _inp: LastRecord):
m_first = _inp.date_at - datetime.timedelta(days=35)
print(m_first)
m_end = _inp.date_at - datetime.timedelta(days=25)
print(m_end)
last = await use_collection(TaskEnv.CLN_MONITOR_SUB_SECONDARY).find({
'parent_id': _inp.parent_id,
'date_at': {'$gte': m_first, '$lte': m_end}
}).sort("$natural", -1).to_list(None)
if last:
return last[0]
else:
return {}