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]
|
[tool.ruff]
|
||||||
select = ["ALL"]
|
select = ["ALL"]
|
||||||
ignore = ["A003", "D101", "D104"]
|
ignore = ["A003", "D101", "D104", "S104"]
|
||||||
line-length = 120
|
line-length = 120
|
||||||
target-version = "py39"
|
target-version = "py39"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
uvicorn[standard]==0.21.1
|
||||||
fastapi==0.95.0
|
fastapi==0.95.0
|
||||||
SQLAlchemy[asyncio]==2.0.8
|
SQLAlchemy[asyncio]==2.0.8
|
||||||
pydantic==1.10.7
|
pydantic==1.10.7
|
||||||
|
|||||||
@@ -3,9 +3,84 @@
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
|
||||||
from spoolson.api.v1.models import Filament
|
from spoolson.api.v1.models import Filament, Vendor
|
||||||
|
|
||||||
router = APIRouter(
|
router = APIRouter(
|
||||||
prefix="/filament",
|
prefix="/filament",
|
||||||
tags=["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."""
|
"""Router setup for the v1 version of the API."""
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter, FastAPI
|
||||||
|
|
||||||
from . import filament, spool, vendor
|
from . import filament, spool, vendor
|
||||||
|
|
||||||
router = APIRouter(
|
app = FastAPI(
|
||||||
prefix="/v1",
|
title="Spoolson REST API v1",
|
||||||
tags=["v1"],
|
version="1.0.0",
|
||||||
|
root_path_in_servers=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
router = APIRouter(
|
||||||
|
prefix="/api/v1",
|
||||||
|
)
|
||||||
|
|
||||||
router.include_router(filament.router)
|
router.include_router(filament.router)
|
||||||
router.include_router(spool.router)
|
router.include_router(spool.router)
|
||||||
router.include_router(vendor.router)
|
router.include_router(vendor.router)
|
||||||
|
|
||||||
|
app.include_router(router)
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
"""Main entrypoint to the server."""
|
"""Main entrypoint to the server."""
|
||||||
|
|
||||||
|
import uvicorn
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
|
|
||||||
import spoolson.api.v1.router
|
import spoolson.api.v1.router
|
||||||
|
|
||||||
app = FastAPI()
|
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