use sqlalchemy pattern
This commit is contained in:
@@ -1,58 +1,23 @@
|
||||
"""Database operations for MediaAsset — SQLModel."""
|
||||
"""MediaAsset queries."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
from uuid import UUID
|
||||
|
||||
from sqlmodel import select
|
||||
from sqlmodel import Session, select
|
||||
|
||||
from .connection import get_session
|
||||
from .models import MediaAsset
|
||||
from .tables import MediaAsset
|
||||
|
||||
|
||||
def list_assets(status: Optional[str] = None, search: Optional[str] = None) -> list[MediaAsset]:
|
||||
with get_session() as session:
|
||||
stmt = select(MediaAsset)
|
||||
if status:
|
||||
stmt = stmt.where(MediaAsset.status == status)
|
||||
if search:
|
||||
stmt = stmt.where(MediaAsset.filename.ilike(f"%{search}%"))
|
||||
return list(session.exec(stmt).all())
|
||||
def list_assets(session: Session, status: Optional[str] = None, search: Optional[str] = None) -> list[MediaAsset]:
|
||||
stmt = select(MediaAsset)
|
||||
if status:
|
||||
stmt = stmt.where(MediaAsset.status == status)
|
||||
if search:
|
||||
stmt = stmt.where(MediaAsset.filename.ilike(f"%{search}%"))
|
||||
return list(session.exec(stmt).all())
|
||||
|
||||
|
||||
def get_asset(id: UUID) -> MediaAsset | None:
|
||||
with get_session() as session:
|
||||
return session.get(MediaAsset, id)
|
||||
|
||||
|
||||
def get_asset_filenames() -> set[str]:
|
||||
with get_session() as session:
|
||||
return set(session.exec(select(MediaAsset.filename)).all())
|
||||
|
||||
|
||||
def create_asset(*, filename: str, file_path: str, file_size: int) -> MediaAsset:
|
||||
asset = MediaAsset(filename=filename, file_path=file_path, file_size=file_size)
|
||||
with get_session() as session:
|
||||
session.add(asset)
|
||||
session.commit()
|
||||
session.refresh(asset)
|
||||
return asset
|
||||
|
||||
|
||||
def update_asset(id: UUID, **fields) -> None:
|
||||
with get_session() as session:
|
||||
asset = session.get(MediaAsset, id)
|
||||
if not asset:
|
||||
return
|
||||
for k, v in fields.items():
|
||||
setattr(asset, k, v)
|
||||
session.commit()
|
||||
|
||||
|
||||
def delete_asset(id: UUID) -> None:
|
||||
with get_session() as session:
|
||||
asset = session.get(MediaAsset, id)
|
||||
if asset:
|
||||
session.delete(asset)
|
||||
session.commit()
|
||||
def get_asset_filenames(session: Session) -> set[str]:
|
||||
return set(session.exec(select(MediaAsset.filename)).all())
|
||||
|
||||
Reference in New Issue
Block a user