Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding pagination to emissions by run api #240

Merged
merged 4 commits into from
Aug 27, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions carbonserver/carbonserver/api/routers/emissions.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from typing import List
from uuid import UUID

from container import ServerContainer
from dependency_injector.wiring import Provide, inject
from fastapi import APIRouter, Depends
from fastapi_pagination import Page, paginate
from starlette import status

from carbonserver.api.dependencies import get_token_header
Expand Down Expand Up @@ -50,13 +50,13 @@ def read_emission(


@router.get(
"/emissions/run/{run_id}", tags=EMISSIONS_ROUTER_TAGS, response_model=List[Emission]
"/emissions/run/{run_id}", tags=EMISSIONS_ROUTER_TAGS, response_model=Page[Emission]
)
@inject
def get_emissions_from_run(
run_id: str,
emission_service: EmissionService = Depends(
Provide[ServerContainer.emission_service]
),
) -> List[Emission]:
return emission_service.get_emissions_from_run(run_id)
) -> Page[Emission]:
return paginate(emission_service.get_emissions_from_run(run_id))
1 change: 1 addition & 0 deletions carbonserver/docker/requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ requests
sqlalchemy
tox
uvicorn[standard]
fastapi-pagination
3 changes: 2 additions & 1 deletion carbonserver/main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from container import ServerContainer
from fastapi import Depends, FastAPI
from fastapi_pagination import add_pagination
from pydantic import ValidationError
from starlette.requests import Request
from starlette.responses import JSONResponse
Expand Down Expand Up @@ -85,7 +86,7 @@ def init_server(container):
server.include_router(experiments.router)
server.include_router(runs.router)
server.include_router(emissions.router)

add_pagination(server)
return server


Expand Down
1 change: 1 addition & 0 deletions carbonserver/requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ requests
sqlalchemy
tox
uvicorn[standard]
fastapi-pagination
1 change: 1 addition & 0 deletions carbonserver/requirements-test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ requests
sqlalchemy
tox
uvicorn[standard]
fastapi-pagination
4 changes: 2 additions & 2 deletions carbonserver/tests/api/integration/test_api_black_box.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,8 +284,8 @@ def test_api_emission_list():
global emission_id
r = requests.get(url=URL + "/emissions/run/" + run_id, timeout=2)
assert r.status_code == 200
assert is_key_all_values_equal(r.json(), "run_id", run_id)
emission_id = r.json()[-1]["id"]
assert is_key_all_values_equal(r.json()["items"], "run_id", run_id)
emission_id = r.json()["items"][-1]["id"]


def test_api_emission_read():
Expand Down
4 changes: 3 additions & 1 deletion carbonserver/tests/api/routers/test_emissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from container import ServerContainer
from fastapi import FastAPI
from fastapi.testclient import TestClient
from fastapi_pagination import add_pagination
from starlette import status

from carbonserver.api.infra.repositories.repository_emissions import (
Expand Down Expand Up @@ -92,6 +93,7 @@ def custom_test_server():
app = FastAPI()
app.container = container
app.include_router(emissions.router)
add_pagination(app)
yield app


Expand Down Expand Up @@ -142,7 +144,7 @@ def test_get_emissions_from_run_retreives_all_emissions_from_run(
response = client.get(
"/emissions/run/get_emissions_from_run/", params={"run_id": RUN_1_ID}
)
actual_emission_list = response.json()
actual_emission_list = response.json()["items"]
actual_emission_ids_list = [emission["id"] for emission in actual_emission_list]
diff = set(actual_emission_ids_list) ^ set(expected_emissions_id_list)

Expand Down