Update SQLite configuration for on-disk database storage
- Add ClassVar type annotation for DB_DIR in config.py - Add Base import in base.py for proper Alembic migrations - Update README with detailed SQLite configuration information 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
d2d0b364aa
commit
f27201a3a6
@ -15,7 +15,7 @@ A Todo application backend built with Python, FastAPI, and SQLAlchemy.
|
|||||||
- **SQLAlchemy**: SQL toolkit and ORM
|
- **SQLAlchemy**: SQL toolkit and ORM
|
||||||
- **Alembic**: Database migration tool
|
- **Alembic**: Database migration tool
|
||||||
- **Pydantic**: Data validation and settings management
|
- **Pydantic**: Data validation and settings management
|
||||||
- **SQLite**: Lightweight disk-based database
|
- **SQLite**: Lightweight disk-based database (stored in `/storage/db/db.sqlite`)
|
||||||
- **Uvicorn**: ASGI server
|
- **Uvicorn**: ASGI server
|
||||||
|
|
||||||
## Project Structure
|
## Project Structure
|
||||||
@ -55,12 +55,19 @@ A Todo application backend built with Python, FastAPI, and SQLAlchemy.
|
|||||||
```
|
```
|
||||||
alembic upgrade head
|
alembic upgrade head
|
||||||
```
|
```
|
||||||
|
This will create the SQLite database file at `/storage/db/db.sqlite`
|
||||||
|
|
||||||
4. Start the server:
|
4. Start the server:
|
||||||
```
|
```
|
||||||
uvicorn main:app --reload
|
uvicorn main:app --reload
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Database Configuration
|
||||||
|
|
||||||
|
The application uses SQLite as its database backend. The database file is stored at `/storage/db/db.sqlite`, outside the project root directory for better data isolation. The directory is automatically created if it doesn't exist.
|
||||||
|
|
||||||
|
To change the database location, modify the `DB_DIR` variable in `app/core/config.py`.
|
||||||
|
|
||||||
### API Documentation
|
### API Documentation
|
||||||
|
|
||||||
Once the server is running, you can access:
|
Once the server is running, you can access:
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from typing import ClassVar
|
||||||
from pydantic_settings import BaseSettings
|
from pydantic_settings import BaseSettings
|
||||||
|
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
||||||
@ -9,8 +10,9 @@ class Settings(BaseSettings):
|
|||||||
API_V1_STR: str = "/api/v1"
|
API_V1_STR: str = "/api/v1"
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
DB_DIR = BASE_DIR.parent / "storage" / "db"
|
DB_DIR: ClassVar[Path] = BASE_DIR.parent / "storage" / "db"
|
||||||
DB_DIR.mkdir(parents=True, exist_ok=True)
|
DB_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
SQLALCHEMY_DATABASE_URL: str = f"sqlite:///{DB_DIR}/db.sqlite"
|
SQLALCHEMY_DATABASE_URL: str = f"sqlite:///{DB_DIR}/db.sqlite"
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
# Import all models here for Alembic to detect
|
# Import all models here for Alembic to detect
|
||||||
|
from app.db.session import Base
|
||||||
from app.models.todo import Todo
|
from app.models.todo import Todo
|
Loading…
x
Reference in New Issue
Block a user