Spaces:
Sleeping
Sleeping
File size: 1,946 Bytes
338036b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | from .BaseDataModel import BaseDataModel
from .db_schemes.minirag.schemes import Asset
from sqlalchemy.future import select
from sqlalchemy import func, delete
from bson import ObjectId
class AssetModel(BaseDataModel):
def __init__(self, db_client: object):
super().__init__(db_client=db_client)
self.db_client = db_client
@classmethod
async def create_instance(cls, db_client: object):
instance = cls(db_client)
return instance
async def create_asset(self, asset: Asset):
async with self.db_client() as session:
async with session.begin():
session.add(asset)
await session.commit()
await session.refresh(asset)
return asset
async def get_all_project_assets(self, asset_project_id: str, asset_type: str):
async with self.db_client() as session:
stmt = select(Asset).where(
Asset.asset_project_id==asset_project_id,
Asset.asset_type==asset_type
)
result = await session.execute(stmt)
records = result.scalars().all()
return records
async def get_asset_record(self, asset_project_id: str, asset_name: str):
async with self.db_client() as session:
stmt = select(Asset).where(
Asset.asset_project_id==asset_project_id,
Asset.asset_name==asset_name
)
result = await session.execute(stmt)
records = result.scalar_one_or_none()
return records
# record = await self.collection.find_one({
# "asset_project_id": ObjectId(asset_project_id) if isinstance(asset_project_id, str) else asset_project_id,
# "asset_name": asset_name,
# })
# if record:
# return Asset(**record)
# return None
|