950d261eb4c906e356a5d07e07ab62e86eb69a18
- Extend Transaction with ledger fields (item_no, employee_number, t_code, t_type_l, quantity, rate, billed) - Startup SQLite migration to add missing columns on transactions - Ledger create/update/delete endpoints with validations and auto-compute Amount = Quantity × Rate - Uniqueness: ensure (transaction_date, item_no) per case by auto-incrementing - Compute case totals (billed/unbilled/overall) and display in case view - Update case.html for master-detail ledger UI; add client-side auto-compute JS - Enhance import_ledger_data to populate extended fields - Close/Reopen actions retained; case detail sorting by date/item - Auth: switch to pbkdf2_sha256 default (bcrypt fallback) and seed admin robustness Tested in Docker: health OK, login OK, import ROLODEX/FILES OK, ledger create persisted and totals displayed.
Delphi Database
A legal case management database application built with FastAPI, SQLAlchemy, and modern Python practices.
Database Configuration
The application uses SQLAlchemy ORM with support for multiple database backends.
Environment Variables
Configure your database connection using environment variables:
# SQLite (default for development)
DATABASE_URL=sqlite:///./delphi.db
# PostgreSQL (production example)
DATABASE_URL=postgresql://username:password@localhost:5432/delphi_db
# MySQL (alternative)
DATABASE_URL=mysql://username:password@localhost:3306/delphi_db
Database Models
The application includes the following models:
- User: Authentication and user management
- Client: Client/contact information
- Phone: Phone numbers linked to clients
- Case: Legal cases with unique file numbers
- Transaction: Financial transactions for cases
- Document: Case-related documents
- Payment: Payment records for cases
Database Connection Management
The app/database.py module provides:
- Database engine configuration with connection pooling and error handling
- Session management with automatic cleanup via FastAPI dependency injection
- Table creation utilities for application startup
- Connection health monitoring via the
/healthendpoint
Usage Examples
Basic Application Startup
from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
from app.database import get_db
@app.get("/clients/")
async def get_clients(db: Session = Depends(get_db)):
# Use the database session
return db.query(Client).all()
Health Check
The /health endpoint verifies database connectivity:
curl http://localhost:8000/health
# {"status": "healthy", "database": "connected", "users": 0}
Getting Started
-
Install dependencies:
pip install -r requirements.txt -
Configure your database in environment variables (see
.envfile) -
Run the application:
uvicorn app.main:app --reload -
Access the API at
http://localhost:8000
Project Structure
app/
├── main.py # FastAPI application entry point
├── database.py # Database configuration and session management
├── models.py # SQLAlchemy models
└── templates/ # HTML templates
Development
- Database tables are automatically created on application startup
- Use the health check endpoint to verify database connectivity
- Environment variables control database configuration (never hardcode credentials)
- SQLAlchemy provides type-safe database operations with relationship management
Description
Languages
Python
69.4%
HTML
28.4%
JavaScript
1.2%
CSS
0.6%
Dockerfile
0.2%
Other
0.2%