109 lines
2.1 KiB
Markdown
109 lines
2.1 KiB
Markdown
# General Communication Service
|
|
|
|
A FastAPI-based general purpose communication service with SQLite integration.
|
|
|
|
## Features
|
|
|
|
- FastAPI-based REST API
|
|
- SQLite database integration
|
|
- Alembic migrations
|
|
- CORS enabled with all origins allowed
|
|
- Health check endpoint
|
|
- API documentation at default paths
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
/
|
|
├── app/
|
|
│ ├── api/
|
|
│ │ ├── routes/
|
|
│ │ │ ├── health.py
|
|
│ │ │ └── api.py
|
|
│ ├── core/
|
|
│ ├── db/
|
|
│ │ └── session.py
|
|
│ ├── models/
|
|
│ │ └── base.py
|
|
│ └── schemas/
|
|
├── migrations/
|
|
│ ├── versions/
|
|
│ ├── env.py
|
|
│ └── script.py.mako
|
|
├── storage/
|
|
│ └── db/
|
|
├── alembic.ini
|
|
├── main.py
|
|
├── requirements.txt
|
|
└── README.md
|
|
```
|
|
|
|
## Installation
|
|
|
|
1. Clone the repository
|
|
2. Install dependencies:
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Running the Application
|
|
|
|
```bash
|
|
uvicorn main:app --reload
|
|
```
|
|
|
|
The application will be available at http://localhost:8000
|
|
|
|
## API Documentation
|
|
|
|
- Swagger UI: http://localhost:8000/docs
|
|
- ReDoc: http://localhost:8000/redoc
|
|
- OpenAPI JSON: http://localhost:8000/openapi.json
|
|
|
|
## Database Migrations
|
|
|
|
Generate a new migration:
|
|
|
|
```bash
|
|
alembic revision --autogenerate -m "description"
|
|
```
|
|
|
|
Apply migrations:
|
|
|
|
```bash
|
|
alembic upgrade head
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Messages API
|
|
|
|
- **GET /api/v1/messages**
|
|
- Retrieves a list of all messages
|
|
- Supports pagination and filtering
|
|
|
|
- **GET /api/v1/messages/{message_id}**
|
|
- Retrieves a specific message by ID
|
|
|
|
- **POST /api/v1/messages**
|
|
- Creates a new message
|
|
- Requires message content and recipient information
|
|
|
|
- **PUT /api/v1/messages/{message_id}/read**
|
|
- Marks a message as read
|
|
|
|
- **DELETE /api/v1/messages/{message_id}**
|
|
- Deletes a specific message
|
|
|
|
## Environment Variables
|
|
|
|
None required for basic setup, as SQLite database path is configured internally.
|
|
|
|
## Database Configuration
|
|
|
|
SQLite database is configured to be stored at:
|
|
|
|
```
|
|
/app/storage/db/db.sqlite
|
|
``` |