Skip to main content

Database Abstraction

Modulo’s database layer is built on SQLAlchemy 2.0 with multi-backend support (PostgreSQL, SQLite, MariaDB, MySQL). See Architecture for the high-level system design and the PRD §6.1 and §6.2 for the full specification.

Key components:

  • Declarative model system: Base(DeclarativeBase), TimestampMixin, OrgScoped
  • Multi-backend repository layer: Row-Level Security (RLS)-backed (Postgres) or explicit tenant filtering (SQLite/MariaDB/MySQL)
  • Row-level security: Postgres RLS policies + generic ORM filter injection
  • Alembic migrations: 59+ incremental migration scripts
  • CRUD (Create, Read, Update, Delete) service layer: 40+ function-based entity-specific modules
  • Cursor-based pagination: keyset pagination with base64-coded cursors
  • Testcontainers integration: real Postgres 16 in test suites