Skip to content

Commit 087ca94

Browse files
committed
Start creating references router
1 parent 36d7e3b commit 087ca94

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

aiida_optimade/routers/references.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from typing import Union
2+
3+
from fastapi import APIRouter, Depends
4+
from starlette.requests import Request
5+
6+
from aiida import orm
7+
8+
from optimade.models import (
9+
ErrorResponse,
10+
ReferenceResource,
11+
ReferenceResponseMany,
12+
ReferenceResponseOne,
13+
)
14+
15+
from aiida_optimade.query_params import EntryListingQueryParams, SingleEntryQueryParams
16+
from aiida_optimade.entry_collections import AiidaCollection
17+
from aiida_optimade.mappers import ReferenceMapper
18+
from aiida_optimade.utils import get_backend
19+
20+
from .utils import get_entries, get_single_entry
21+
22+
23+
router = APIRouter()
24+
25+
references = AiidaCollection(
26+
orm.ReferenceData.objects, ReferenceResource, ReferenceMapper
27+
)
28+
29+
30+
@router.get(
31+
"/references",
32+
response_model=Union[ReferenceResponseMany, ErrorResponse],
33+
response_model_skip_defaults=True,
34+
tags=["Reference"],
35+
)
36+
def get_references(
37+
request: Request,
38+
params: EntryListingQueryParams = Depends(),
39+
backend: orm.implementation.Backend = Depends(get_backend),
40+
):
41+
return get_entries(
42+
backend=backend,
43+
collection=references,
44+
response=ReferenceResponseMany,
45+
request=request,
46+
params=params,
47+
)
48+
49+
50+
@router.get(
51+
"/references/{entry_id}",
52+
response_model=Union[ReferenceResponseOne, ErrorResponse],
53+
response_model_skip_defaults=True,
54+
tags=["Reference"],
55+
)
56+
def get_single_reference(
57+
request: Request,
58+
entry_id: int,
59+
params: SingleEntryQueryParams = Depends(),
60+
backend: orm.implementation.Backend = Depends(get_backend),
61+
):
62+
return get_single_entry(
63+
backend=backend,
64+
collection=references,
65+
entry_id=entry_id,
66+
response=ReferenceResponseOne,
67+
request=request,
68+
params=params,
69+
)

0 commit comments

Comments
 (0)