feat: persist ingest flow in postgres
This commit is contained in:
@@ -2,7 +2,7 @@ from fastapi import APIRouter, Depends
|
||||
|
||||
from app.dependencies import get_asset_library_repository
|
||||
from app.schemas.asset_library import AssetLibraryResponse, CreateAssetLibraryRequest, ListAssetLibrariesResponse
|
||||
from packages.adapters.in_memory import InMemoryAssetLibraryRepository
|
||||
from packages.adapters.sqlalchemy_impl import SQLAlchemyAssetLibraryRepository
|
||||
from packages.application import CreateAssetLibraryCommand, CreateAssetLibraryUseCase, ListAssetLibrariesUseCase
|
||||
from packages.domain import AssetLibraryKind
|
||||
|
||||
@@ -13,7 +13,7 @@ router = APIRouter()
|
||||
def list_asset_libraries(
|
||||
project_id: str,
|
||||
kind: str | None = None,
|
||||
asset_library_repository: InMemoryAssetLibraryRepository = Depends(get_asset_library_repository),
|
||||
asset_library_repository: SQLAlchemyAssetLibraryRepository = Depends(get_asset_library_repository),
|
||||
) -> ListAssetLibrariesResponse:
|
||||
use_case = ListAssetLibrariesUseCase(asset_library_repository)
|
||||
parsed_kind = AssetLibraryKind(kind) if kind else None
|
||||
@@ -35,7 +35,7 @@ def list_asset_libraries(
|
||||
@router.post("", response_model=AssetLibraryResponse)
|
||||
def create_asset_library(
|
||||
request: CreateAssetLibraryRequest,
|
||||
asset_library_repository: InMemoryAssetLibraryRepository = Depends(get_asset_library_repository),
|
||||
asset_library_repository: SQLAlchemyAssetLibraryRepository = Depends(get_asset_library_repository),
|
||||
) -> AssetLibraryResponse:
|
||||
use_case = CreateAssetLibraryUseCase(asset_library_repository)
|
||||
item = use_case.execute(
|
||||
|
||||
@@ -2,7 +2,7 @@ from fastapi import APIRouter, Depends
|
||||
|
||||
from app.dependencies import get_asset_repository
|
||||
from app.schemas.asset import AssetResponse, CreateAssetRequest, ListAssetsResponse
|
||||
from packages.adapters.in_memory import InMemoryAssetRepository
|
||||
from packages.adapters.sqlalchemy_impl import SQLAlchemyAssetRepository
|
||||
from packages.application import CreateAssetCommand, CreateAssetUseCase, ListAssetsUseCase
|
||||
|
||||
router = APIRouter()
|
||||
@@ -11,7 +11,7 @@ router = APIRouter()
|
||||
@router.get("", response_model=ListAssetsResponse)
|
||||
def list_assets(
|
||||
library_id: str,
|
||||
asset_repository: InMemoryAssetRepository = Depends(get_asset_repository),
|
||||
asset_repository: SQLAlchemyAssetRepository = Depends(get_asset_repository),
|
||||
) -> ListAssetsResponse:
|
||||
use_case = ListAssetsUseCase(asset_repository)
|
||||
items = use_case.execute(library_id)
|
||||
@@ -35,7 +35,7 @@ def list_assets(
|
||||
@router.post("", response_model=AssetResponse)
|
||||
def create_asset(
|
||||
request: CreateAssetRequest,
|
||||
asset_repository: InMemoryAssetRepository = Depends(get_asset_repository),
|
||||
asset_repository: SQLAlchemyAssetRepository = Depends(get_asset_repository),
|
||||
) -> AssetResponse:
|
||||
use_case = CreateAssetUseCase(asset_repository)
|
||||
item = use_case.execute(
|
||||
|
||||
@@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends
|
||||
from app.core.celery_app import celery_app
|
||||
from app.dependencies import get_ingest_job_repository
|
||||
from app.schemas.ingest_job import IngestJobResponse, SubmitIngestJobRequest
|
||||
from packages.adapters.in_memory import InMemoryIngestJobRepository
|
||||
from packages.adapters.sqlalchemy_impl import SQLAlchemyIngestJobRepository
|
||||
from packages.application import SubmitIngestJobCommand, SubmitIngestJobUseCase
|
||||
|
||||
router = APIRouter()
|
||||
@@ -12,7 +12,7 @@ router = APIRouter()
|
||||
@router.post("", response_model=IngestJobResponse)
|
||||
def submit_ingest_job(
|
||||
request: SubmitIngestJobRequest,
|
||||
ingest_job_repository: InMemoryIngestJobRepository = Depends(get_ingest_job_repository),
|
||||
ingest_job_repository: SQLAlchemyIngestJobRepository = Depends(get_ingest_job_repository),
|
||||
) -> IngestJobResponse:
|
||||
use_case = SubmitIngestJobUseCase(ingest_job_repository)
|
||||
job = use_case.execute(
|
||||
|
||||
@@ -2,8 +2,8 @@ from fastapi import APIRouter, Depends
|
||||
|
||||
from app.dependencies import get_project_repository
|
||||
from app.schemas.project import CreateProjectRequest, ListProjectsResponse, ProjectResponse
|
||||
from packages.adapters.sqlalchemy_impl import SQLAlchemyProjectRepository
|
||||
from packages.application import CreateProjectCommand, CreateProjectUseCase, ListProjectsUseCase
|
||||
from packages.adapters.in_memory import InMemoryProjectRepository
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -11,7 +11,7 @@ router = APIRouter()
|
||||
@router.get("", response_model=ListProjectsResponse)
|
||||
def list_projects(
|
||||
workspace_id: str,
|
||||
project_repository: InMemoryProjectRepository = Depends(get_project_repository),
|
||||
project_repository: SQLAlchemyProjectRepository = Depends(get_project_repository),
|
||||
) -> ListProjectsResponse:
|
||||
use_case = ListProjectsUseCase(project_repository)
|
||||
projects = use_case.execute(workspace_id)
|
||||
@@ -31,7 +31,7 @@ def list_projects(
|
||||
@router.post("", response_model=ProjectResponse)
|
||||
def create_project(
|
||||
request: CreateProjectRequest,
|
||||
project_repository: InMemoryProjectRepository = Depends(get_project_repository),
|
||||
project_repository: SQLAlchemyProjectRepository = Depends(get_project_repository),
|
||||
) -> ProjectResponse:
|
||||
use_case = CreateProjectUseCase(project_repository)
|
||||
project = use_case.execute(
|
||||
|
||||
@@ -3,9 +3,9 @@ from uuid import uuid4
|
||||
|
||||
from app.core.celery_app import celery_app
|
||||
from app.dependencies import get_ingest_job_repository
|
||||
from app.core.storage import get_minio_service, MinIOService
|
||||
from app.core.storage import MinIOService, get_minio_service
|
||||
from app.schemas.upload import UploadAssetResponse
|
||||
from packages.adapters.in_memory import InMemoryIngestJobRepository
|
||||
from packages.adapters.sqlalchemy_impl import SQLAlchemyIngestJobRepository
|
||||
from packages.application import SubmitIngestJobCommand, SubmitIngestJobUseCase
|
||||
|
||||
router = APIRouter()
|
||||
@@ -17,7 +17,7 @@ async def upload_asset(
|
||||
workspace_id: str = Form(..., description="工作空间 ID"),
|
||||
project_id: str = Form(..., description="项目 ID"),
|
||||
library_id: str = Form(..., description="资产库 ID"),
|
||||
ingest_job_repository: InMemoryIngestJobRepository = Depends(get_ingest_job_repository),
|
||||
ingest_job_repository: SQLAlchemyIngestJobRepository = Depends(get_ingest_job_repository),
|
||||
storage_service: MinIOService = Depends(get_minio_service),
|
||||
) -> UploadAssetResponse:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user