|
|
|
|
@ -34,14 +34,14 @@ async def get_by_assetnum(*, db_session: DbSession, assetnum: str):
|
|
|
|
|
async def get_all(*, db_session: DbSession, common, scope_name: str = None, exclude: bool = False):
|
|
|
|
|
"""Returns all documents."""
|
|
|
|
|
query = Select(ScopeEquipment).options(selectinload(
|
|
|
|
|
ScopeEquipment.scope), selectinload(ScopeEquipment.master_equipment))
|
|
|
|
|
ScopeEquipment.parent_scope), selectinload(ScopeEquipment.current_scope), selectinload(ScopeEquipment.master_equipment))
|
|
|
|
|
|
|
|
|
|
query = query.order_by(desc(ScopeEquipment.created_at))
|
|
|
|
|
|
|
|
|
|
if scope_name:
|
|
|
|
|
scope = await get_scope_by_name_service(db_session=db_session, scope_name=scope_name)
|
|
|
|
|
query = query.filter(ScopeEquipment.scope_id == scope.id) if not exclude else query.filter(
|
|
|
|
|
ScopeEquipment.scope_id != scope.id)
|
|
|
|
|
query = query.filter(ScopeEquipment.current_scope_id == scope.id) if not exclude else query.filter(
|
|
|
|
|
ScopeEquipment.current_scope_id != scope.id)
|
|
|
|
|
|
|
|
|
|
results = await search_filter_sort_paginate(model=query, **common)
|
|
|
|
|
return results
|
|
|
|
|
@ -65,13 +65,13 @@ async def create(*, db_session: DbSession, scope_equipment_in: ScopeEquipmentCre
|
|
|
|
|
for assetnum in assetnums:
|
|
|
|
|
stmt = insert(ScopeEquipment).values(
|
|
|
|
|
assetnum=assetnum,
|
|
|
|
|
scope_id=scope.id
|
|
|
|
|
current_scope_id=scope.id
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
stmt = stmt.on_conflict_do_update(
|
|
|
|
|
index_elements=["assetnum"],
|
|
|
|
|
set_={
|
|
|
|
|
"scope_id": scope.id
|
|
|
|
|
"current_scope_id": scope.id
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@ -106,8 +106,9 @@ async def delete(*, db_session: DbSession, scope_equipment_id: str):
|
|
|
|
|
|
|
|
|
|
query = Select(ScopeEquipment).filter(
|
|
|
|
|
ScopeEquipment.id == scope_equipment_id)
|
|
|
|
|
|
|
|
|
|
scope_equipment = await db_session.execute(query)
|
|
|
|
|
scope_equipment = scope_equipment.scalars().one_or_none()
|
|
|
|
|
scope_equipment: ScopeEquipment = scope_equipment.scalars().one_or_none()
|
|
|
|
|
|
|
|
|
|
if not scope_equipment:
|
|
|
|
|
raise HTTPException(
|
|
|
|
|
@ -115,8 +116,10 @@ async def delete(*, db_session: DbSession, scope_equipment_id: str):
|
|
|
|
|
detail="A data with this id does not exist.",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
scope_equipment.scope_id = None
|
|
|
|
|
|
|
|
|
|
if not scope_equipment.scope_id:
|
|
|
|
|
await db_session.delete(scope_equipment)
|
|
|
|
|
else:
|
|
|
|
|
scope_equipment.current_scope_id = scope_equipment.scope_id
|
|
|
|
|
await db_session.commit()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -127,7 +130,7 @@ async def get_by_scope_name(*, db_session: DbSession, scope_name: Union[str, lis
|
|
|
|
|
query = Select(ScopeEquipment)
|
|
|
|
|
|
|
|
|
|
if scope:
|
|
|
|
|
query = query.filter(ScopeEquipment.scope_id == scope.id)
|
|
|
|
|
query = query.filter(ScopeEquipment.current_scope_id == scope.id)
|
|
|
|
|
|
|
|
|
|
result = await db_session.execute(query)
|
|
|
|
|
return result.scalars().all()
|
|
|
|
|
@ -139,10 +142,10 @@ async def get_exculed_scope_name(*, db_session: DbSession, scope_name: Union[str
|
|
|
|
|
query = Select(ScopeEquipment)
|
|
|
|
|
|
|
|
|
|
if scope:
|
|
|
|
|
query = query.filter(ScopeEquipment.scope_id != scope.id)
|
|
|
|
|
query = query.filter(ScopeEquipment.current_scope_id != scope.id)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
query = query.filter(ScopeEquipment.scope_id != None)
|
|
|
|
|
query = query.filter(ScopeEquipment.current_scope_id != None)
|
|
|
|
|
|
|
|
|
|
result = await db_session.execute(query)
|
|
|
|
|
return result.scalars().all()
|
|
|
|
|
@ -158,11 +161,8 @@ async def get_all_master_equipment(*, db_session: DbSession, exclude: Optional[s
|
|
|
|
|
|
|
|
|
|
if scope:
|
|
|
|
|
query = query.filter(
|
|
|
|
|
not_(ScopeEquipment.scope_id == scope.id) | (
|
|
|
|
|
ScopeEquipment.scope_id.is_(None))
|
|
|
|
|
not_(ScopeEquipment.current_scope_id == scope.id)
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
query = query.filter(ScopeEquipment.scope_id.is_(None))
|
|
|
|
|
|
|
|
|
|
results = await search_filter_sort_paginate(model=query, **common)
|
|
|
|
|
return results
|
|
|
|
|
|