Added some test endpoints and server configuration

This commit is contained in:
Donkie
2023-04-01 16:46:19 +02:00
parent c9b4705b28
commit 35fdd23ec0
6 changed files with 112 additions and 7 deletions

17
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: FastAPI",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": ["spoolson.main:app"],
"jinja": true,
"justMyCode": true
}
]
}

View File

@@ -8,7 +8,7 @@ license = {text = "AGPL-3.0-only"}
[tool.ruff]
select = ["ALL"]
ignore = ["A003", "D101", "D104"]
ignore = ["A003", "D101", "D104", "S104"]
line-length = 120
target-version = "py39"

View File

@@ -1,3 +1,4 @@
uvicorn[standard]==0.21.1
fastapi==0.95.0
SQLAlchemy[asyncio]==2.0.8
pydantic==1.10.7

View File

@@ -3,9 +3,84 @@
from typing import Union
from fastapi import APIRouter
from spoolson.api.v1.models import Filament
from spoolson.api.v1.models import Filament, Vendor
router = APIRouter(
prefix="/filament",
tags=["filament"],
)
# ruff: noqa: D103
@router.get("/")
async def find(vendor: Union[int, None] = None) -> list[Filament]:
return []
@router.get("/{filament_id}")
async def get(filament_id: int) -> Filament:
return Filament(
id=0,
name=None,
vendor=Vendor(
id=0,
name="asdf",
comment=None,
),
material=None,
price=None,
density=1,
diameter=1,
weight=None,
spool_weight=None,
article_number=None,
comment=None,
)
@router.post("/")
async def create() -> Filament:
return Filament(
id=0,
name=None,
vendor=Vendor(
id=0,
name="asdf",
comment=None,
),
material=None,
price=None,
density=1,
diameter=1,
weight=None,
spool_weight=None,
article_number=None,
comment=None,
)
@router.put("/{filament_id}")
async def update() -> Filament:
return Filament(
id=0,
name=None,
vendor=Vendor(
id=0,
name="asdf",
comment=None,
),
material=None,
price=None,
density=1,
diameter=1,
weight=None,
spool_weight=None,
article_number=None,
comment=None,
)
@router.delete("/{filament_id}")
async def delete():
pass

View File

@@ -1,13 +1,21 @@
"""Router setup for the v1 version of the API."""
from fastapi import APIRouter
from fastapi import APIRouter, FastAPI
from . import filament, spool, vendor
router = APIRouter(
prefix="/v1",
tags=["v1"],
app = FastAPI(
title="Spoolson REST API v1",
version="1.0.0",
root_path_in_servers=False,
)
router = APIRouter(
prefix="/api/v1",
)
router.include_router(filament.router)
router.include_router(spool.router)
router.include_router(vendor.router)
app.include_router(router)

View File

@@ -1,9 +1,13 @@
"""Main entrypoint to the server."""
import uvicorn
from fastapi import FastAPI
import spoolson.api.v1.router
app = FastAPI()
app.include_router(spoolson.api.v1.router.router)
app.mount("/api/v1", spoolson.api.v1.router.app)
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)