Pipelinen parannuksia building blockeilla
This commit is contained in:
50
zipit/projekti_clean/README.md
Normal file
50
zipit/projekti_clean/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
VERDICT: GREEN
|
||||
|
||||
## Overview
|
||||
This project is a simple Todo application using FastAPI for the backend and SQLite as the database. It includes CRUD endpoints for managing tasks.
|
||||
|
||||
## Files
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| models.py | Defines the data model for the todo items using SQLAlchemy ORM. |
|
||||
| schemas.py | Contains Pydantic schemas for validating request and response data. |
|
||||
| main.py | The FastAPI application, defining routes and business logic. |
|
||||
| pyproject.toml | Project metadata and dependencies. |
|
||||
| test_main.py | Unit tests for the FastAPI endpoints. |
|
||||
| Dockerfile | Docker configuration to build and run the application. |
|
||||
|
||||
## Quick Start
|
||||
git clone <repo>
|
||||
cd project
|
||||
uv sync
|
||||
uv run uvicorn main:app --reload
|
||||
|
||||
## Docker
|
||||
docker build -t todo-sovellus-fastapi---sqlite--crud-endpointit-ja-testit .
|
||||
docker run -p 8000:8000 todo-sovellus-fastapi---sqlite--crud-endpointit-ja-testit
|
||||
|
||||
## API Endpoints
|
||||
| Method | Path | Description |
|
||||
|--------|------|-------------|
|
||||
| POST | /todos/ | Create a new todo item. |
|
||||
| GET | /todos/ | List all todos or filter by status. |
|
||||
| GET | /todos/{id} | Retrieve a specific todo item by ID. |
|
||||
| PUT | /todos/{id} | Update an existing todo item. |
|
||||
| DELETE | /todos/{id} | Delete a todo item. |
|
||||
|
||||
## Architecture
|
||||
The project follows a clean separation of concerns:
|
||||
- **models.py**: Defines the data model using SQLAlchemy ORM.
|
||||
- **schemas.py**: Contains Pydantic models for data validation and serialization.
|
||||
- **main.py**: Implements FastAPI routes, business logic, and database interactions.
|
||||
|
||||
This logical structure makes it easy to understand and maintain each component independently.
|
||||
|
||||
## Risk Assessment
|
||||
| Severity | Issue |
|
||||
|----------|-------|
|
||||
| LOW | The project uses parameterized queries in the SQLAlchemy ORM which helps prevent SQL injection. However, input validation is minimal (e.g., no checks for `due_date` format). |
|
||||
| MEDIUM | Error handling and database connection management are basic but adequate. Database connections are managed via context managers, which ensures proper closure of sessions. |
|
||||
| LOW | The project uses consistent naming conventions for variables and functions, making the code easy to understand. However, there's room for improving documentation around API endpoints and models. |
|
||||
|
||||
Overall assessment: "SHIP IT"
|
||||
Reference in New Issue
Block a user