Skip to content

Commit

Permalink
feat: list annotations endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
cakeinsauce committed Sep 23, 2024
1 parent afb4d3e commit 331ad48
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
35 changes: 35 additions & 0 deletions annotation/annotation/annotations/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from typing import Dict, List, Optional, Set
from uuid import UUID

import filter_lib
from fastapi import (
APIRouter,
Depends,
Expand All @@ -22,6 +23,7 @@
)
from annotation.database import get_db
from annotation.errors import NoSuchRevisionsError
from annotation.filters import AnnotationRequestFilter
from annotation.jobs.services import update_jobs_categories
from annotation.microservice_communication import jobs_communication
from annotation.microservice_communication.assets_communication import (
Expand Down Expand Up @@ -70,6 +72,39 @@
logger.setLevel(os.getenv("LOG_LEVEL", "DEBUG"))


@router.post(
"",
status_code=status.HTTP_200_OK,
response_model=filter_lib.Page[AnnotatedDocSchema],
summary="Get annotations by filters",
tags=[ANNOTATION_TAG],
)
async def get_annotations(
request: AnnotationRequestFilter,
x_current_tenant: str = X_CURRENT_TENANT_HEADER,
token: TenantData = Depends(TOKEN),
db: Session = Depends(get_db),
) -> filter_lib.Page[AnnotatedDocSchema]:
filter_args = filter_lib.map_request_to_filter(
request.dict(), AnnotatedDoc.__name__
)
# TODO: distinct on revision, fix filter_lib to work with
# distinct and sorting
subquery = (
db.query(AnnotatedDoc)
.filter(AnnotatedDoc.tenant == x_current_tenant)
.distinct(AnnotatedDoc.revision)
.subquery()
)
query = db.query(AnnotatedDoc).join(
subquery, AnnotatedDoc.revision == subquery.c.revision
)
query, pagination = filter_lib.form_query(filter_args, query)
return filter_lib.paginate(
[AnnotatedDocSchema.from_orm(el) for el in query], pagination
)


@router.post(
"/{task_id}",
status_code=status.HTTP_201_CREATED,
Expand Down
2 changes: 2 additions & 0 deletions annotation/annotation/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@
],
include=ADDITIONAL_TASK_FIELDS,
)

AnnotationRequestFilter = create_filter_model(AnnotatedDoc)

0 comments on commit 331ad48

Please sign in to comment.