Added some test endpoints and server configuration
This commit is contained in:
17
.vscode/launch.json
vendored
Normal file
17
.vscode/launch.json
vendored
Normal 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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
uvicorn[standard]==0.21.1
|
||||
fastapi==0.95.0
|
||||
SQLAlchemy[asyncio]==2.0.8
|
||||
pydantic==1.10.7
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user