68 lines
2.4 KiB
Markdown
68 lines
2.4 KiB
Markdown
# Todo API Application
|
|
|
|
This is a FastAPI Todo API application with SQLite database that provides a complete CRUD functionality for managing todo items.
|
|
|
|
## Features
|
|
|
|
- Create, read, update, and delete todo items
|
|
- RESTful API with proper HTTP status codes
|
|
- SQLite database for storage
|
|
- API documentation with Swagger and ReDoc
|
|
- Alembic for database migrations
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
todoapiapplication/
|
|
├── alembic/ # Database migrations
|
|
│ └── versions/ # Migration scripts
|
|
├── api/ # API implementation
|
|
│ └── routes/ # API route handlers
|
|
├── db/ # Database configuration
|
|
├── models/ # SQLAlchemy ORM models
|
|
├── schemas/ # Pydantic schemas/models
|
|
├── services/ # Business logic layer
|
|
├── tests/ # Test files
|
|
├── alembic.ini # Alembic configuration
|
|
├── main.py # Application entry point
|
|
└── requirements.txt # Project dependencies
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
| Method | Endpoint | Description | Request Body | Response |
|
|
|--------|---------------|----------------------|-----------------|---------------------|
|
|
| GET | /api/todos/ | Get all todos | - | List of todos |
|
|
| POST | /api/todos/ | Create a new todo | Todo object | Created todo |
|
|
| GET | /api/todos/id | Get a todo by ID | - | Todo object |
|
|
| PUT | /api/todos/id | Update a todo by ID | Todo object | Updated todo |
|
|
| DELETE | /api/todos/id | Delete a todo by ID | - | No content (204) |
|
|
|
|
## Setup and Installation
|
|
|
|
1. Clone the repository
|
|
2. Install the dependencies: `pip install -r requirements.txt`
|
|
3. Run the application: `uvicorn main:app --reload`
|
|
4. The API will be available at: `http://localhost:8000`
|
|
5. API documentation: `http://localhost:8000/docs` or `http://localhost:8000/redoc`
|
|
|
|
## Database Migrations
|
|
|
|
Migrations are handled by Alembic:
|
|
|
|
```bash
|
|
# Apply migrations
|
|
alembic upgrade head
|
|
|
|
# Create a new migration
|
|
alembic revision -m "description"
|
|
```
|
|
|
|
## Todo Model
|
|
|
|
- `id`: Integer (Primary Key)
|
|
- `title`: String (Required)
|
|
- `description`: String (Optional)
|
|
- `completed`: Boolean (Default: False)
|
|
- `created_at`: DateTime
|
|
- `updated_at`: DateTime |