mirror of
https://github.com/cssgunc/compass.git
synced 2025-04-17 17:30:17 -04:00
Implement service api method
This commit is contained in:
parent
34dd4ec48f
commit
3fc8f0e149
26
backend/api/service.py
Normal file
26
backend/api/service.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
from fastapi import APIRouter, Depends
|
||||||
|
from ..services import ServiceService, UserService
|
||||||
|
from ..models.service_model import Service
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
api = APIRouter(prefix="/api/service")
|
||||||
|
|
||||||
|
openapi_tags = {
|
||||||
|
"name": "Service",
|
||||||
|
"description": "Service search and related operations.",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Add security using HTTP Bearer Tokens
|
||||||
|
# TODO: Enable authorization by passing user uuid to API
|
||||||
|
# TODO: Create custom exceptions
|
||||||
|
@api.get("", response_model=List[Service], tags=["Service"])
|
||||||
|
def get_all(
|
||||||
|
user_id: str,
|
||||||
|
service_svc: ServiceService = Depends(),
|
||||||
|
user_svc: UserService = Depends(),
|
||||||
|
):
|
||||||
|
subject = user_svc.get_user_by_uuid(user_id)
|
||||||
|
|
||||||
|
return service_svc.get_service_by_user(subject)
|
|
@ -2,7 +2,7 @@ from fastapi import FastAPI, Request
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from fastapi.middleware.gzip import GZipMiddleware
|
from fastapi.middleware.gzip import GZipMiddleware
|
||||||
|
|
||||||
from .api import user, health
|
from .api import user, health, service
|
||||||
|
|
||||||
description = """
|
description = """
|
||||||
Welcome to the **COMPASS** RESTful Application Programming Interface.
|
Welcome to the **COMPASS** RESTful Application Programming Interface.
|
||||||
|
@ -12,12 +12,12 @@ app = FastAPI(
|
||||||
title="Compass API",
|
title="Compass API",
|
||||||
version="0.0.1",
|
version="0.0.1",
|
||||||
description=description,
|
description=description,
|
||||||
openapi_tags=[user.openapi_tags, health.openapi_tags],
|
openapi_tags=[user.openapi_tags, health.openapi_tags, service.openapi_tags],
|
||||||
)
|
)
|
||||||
|
|
||||||
app.add_middleware(GZipMiddleware)
|
app.add_middleware(GZipMiddleware)
|
||||||
|
|
||||||
feature_apis = [user, health]
|
feature_apis = [user, health, service]
|
||||||
|
|
||||||
for feature_api in feature_apis:
|
for feature_api in feature_apis:
|
||||||
app.include_router(feature_api.api)
|
app.include_router(feature_api.api)
|
||||||
|
|
|
@ -6,7 +6,7 @@ from ..database import engine, _engine_str
|
||||||
from ..env import getenv
|
from ..env import getenv
|
||||||
from .. import entities
|
from .. import entities
|
||||||
|
|
||||||
from ..test.services import user_test_data
|
from ..test.services import user_test_data, service_test_data
|
||||||
|
|
||||||
database = getenv("POSTGRES_DATABASE")
|
database = getenv("POSTGRES_DATABASE")
|
||||||
|
|
||||||
|
@ -22,3 +22,6 @@ entities.EntityBase.metadata.create_all(engine)
|
||||||
|
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
user_test_data.insert_test_data(session)
|
user_test_data.insert_test_data(session)
|
||||||
|
service_test_data.insert_fake_data(session)
|
||||||
|
|
||||||
|
session.commit()
|
||||||
|
|
|
@ -58,9 +58,11 @@ class ServiceService:
|
||||||
services = []
|
services = []
|
||||||
for program in programs:
|
for program in programs:
|
||||||
query = select(ServiceEntity).filter(ServiceEntity.program == program)
|
query = select(ServiceEntity).filter(ServiceEntity.program == program)
|
||||||
entities = self._session.scalars(query)
|
entities = self._session.scalars(query).all()
|
||||||
services.append(entities)
|
for entity in entities:
|
||||||
return [service.to_model() for service in entities]
|
services.append(entity)
|
||||||
|
|
||||||
|
return [service.to_model() for service in services]
|
||||||
|
|
||||||
def get_all(self, subject: User) -> list[Service]:
|
def get_all(self, subject: User) -> list[Service]:
|
||||||
"""Service method retrieving all of the services in the table."""
|
"""Service method retrieving all of the services in the table."""
|
||||||
|
|
|
@ -35,7 +35,7 @@ def test_get_service_by_user_admin(service_svc: ServiceService):
|
||||||
|
|
||||||
def test_get_service_by_user_volun(service_svc: ServiceService):
|
def test_get_service_by_user_volun(service_svc: ServiceService):
|
||||||
service = service_svc.get_service_by_user(user_test_data.volunteer)
|
service = service_svc.get_service_by_user(user_test_data.volunteer)
|
||||||
assert len(service) == 3
|
assert len(service) == 4
|
||||||
|
|
||||||
|
|
||||||
def test_get_by_program(service_svc: ServiceService):
|
def test_get_by_program(service_svc: ServiceService):
|
||||||
|
|
|
@ -18,7 +18,7 @@ volunteer = User(
|
||||||
email="volunteer@compass.com",
|
email="volunteer@compass.com",
|
||||||
experience=1,
|
experience=1,
|
||||||
group="volunteers",
|
group="volunteers",
|
||||||
program=[programs.COMMUNITY],
|
program=[programs.COMMUNITY, programs.ECONOMIC],
|
||||||
created_at=datetime.now(),
|
created_at=datetime.now(),
|
||||||
role=UserTypeEnum.VOLUNTEER,
|
role=UserTypeEnum.VOLUNTEER,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user