mirror of
https://github.com/bec-project/bec_atlas.git
synced 2025-07-14 07:01:48 +02:00
feat(scan_router): removed user data; added filter
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, Query
|
from fastapi import APIRouter, Depends, Query
|
||||||
|
|
||||||
from bec_atlas.authentication import get_current_user
|
from bec_atlas.authentication import get_current_user
|
||||||
@ -31,7 +33,7 @@ class ScanRouter(BaseRouter):
|
|||||||
async def scans(
|
async def scans(
|
||||||
self,
|
self,
|
||||||
session_id: str,
|
session_id: str,
|
||||||
include_user_data: bool = False,
|
filter: str | None = None,
|
||||||
fields: list[str] = Query(default=None),
|
fields: list[str] = Query(default=None),
|
||||||
offset: int = 0,
|
offset: int = 0,
|
||||||
limit: int = 100,
|
limit: int = 100,
|
||||||
@ -45,26 +47,15 @@ class ScanRouter(BaseRouter):
|
|||||||
"""
|
"""
|
||||||
if fields:
|
if fields:
|
||||||
fields = {field: 1 for field in fields}
|
fields = {field: 1 for field in fields}
|
||||||
if include_user_data:
|
|
||||||
include = [{"$match": {"session_id": session_id}}]
|
filters = {"session_id": session_id}
|
||||||
if fields:
|
if filter:
|
||||||
include.append({"$project": fields})
|
filter = json.loads(filter)
|
||||||
include += [
|
filters.update(filter)
|
||||||
{"$skip": offset},
|
|
||||||
{"$limit": limit},
|
|
||||||
{
|
|
||||||
"$lookup": {
|
|
||||||
"from": "scan_user_data",
|
|
||||||
"let": {"_id": "$_id"},
|
|
||||||
"pipeline": [{"$match": {"$expr": {"$eq": ["$_id", "$$_id"]}}}],
|
|
||||||
"as": "user_data",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
]
|
|
||||||
return self.db.aggregate("scans", include, ScanStatusPartial, user=current_user)
|
|
||||||
return self.db.find(
|
return self.db.find(
|
||||||
"scans",
|
"scans",
|
||||||
{"session_id": session_id},
|
filters,
|
||||||
ScanStatusPartial,
|
ScanStatusPartial,
|
||||||
limit=limit,
|
limit=limit,
|
||||||
offset=offset,
|
offset=offset,
|
||||||
|
Reference in New Issue
Block a user