nafg/slick-migration-api
57.0
Adequate · 20 September 2026
949
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is a Scala library that provides a type-safe, composable DSL for managing database schema migrations using the Slick ORM. It supports reversible migrations and abstracts SQL generation across multiple dialects, including PostgreSQL, MySQL, SQLite, H2, and Oracle. The project ensures reliability through a comprehensive test suite that validates core operations like table creation, column modification, and index management across various database profiles.
Features
Add Oracle database support to test configuration
The test-dbs module now includes configuration for Oracle databases alongside existing PostgreSQL and MySQL support. New configuration files (testkit.conf, testkit-gitlab.conf, testkit-github.conf) define Oracle connection parameters, including JDBC driver settings, connection pooling via HikariCP, and database creation/drop scripts. Oracle is disabled by default (enabled = false) but can be enabled for testing purposes.
test-dbs · high confidence
Behavioural changes
Revised migration API with new DSL and dialect abstraction
The migration API has been restructured to use a new, more composable DSL. The previous \MigrationApi\ trait and its internal \Dialect\/\HasDialect\ mechanism have been removed and replaced with a top-level \Dialect\ typeclass and a new \AstHelpers\ trait for extracting schema information. The core migration logic now lives in \TableMigration\, which exposes methods like \create\, \drop\, \rename\, \addColumns\, and \dropColumns\ that build a sequence of actions. These actions are converted to SQL via the \Dialect\ instance. The API now supports reversible migrations natively through \ReversibleMigration\ and \ReversibleMigrationSeq\, allowing users to combine migrations with \&\ and automatically get a reverse sequence if all components are reversible. A new \AddColumnWithInitialValue\ object provides deprecated wrappers for adding columns with initial values, while \SqlMigration\ remains for raw SQL execution.
src/main · high confidence
Test coverage
Comprehensive test suite for Slick migration API
Added a robust test infrastructure for the Slick migration API, including a base \DbTest\ class that supports multiple database profiles (H2, Hsqldb, SQLite, Derby, MySQL, Postgres, and Oracle). The new tests verify core migration operations such as creating and dropping tables, adding/dropping columns and indexes, and handling auto-incrementing columns. Additional test files cover generic dialect detection for custom drivers, the type-safe composition of migration sequences (\MigrationSeq\), and compile-time enforcement of reversible versus irreversible table migrations.
src/test · high confidence
Dependencies
Upgrade to Slick 3.6.1 and Scala 3.3.8 support
The project has upgraded the core Slick library from version 2.0.0-M1 to 3.6.1, enabling compatibility with modern Scala versions (2.12.21, 2.13.18, and 3.3.8). This change also updates all test dependencies, including ScalaTest to 3.2.20, H2 to 2.3.232, SQLite JDBC to 3.53.4.0, PostgreSQL to 42.7.13, MySQL Connector/J to 26.7.0, and SLF4J to 2.0.19, while adding specific compiler flags for Scala 3 compatibility and improved test output.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 57.
Lenses
- Code Health 100
- Architecture 66
- Maturity 54
- Readiness 50
- Security 73
Changes since last survey
- 300 commits — 299 feature/other, 1 fixes
By area
- (repo) — 150 commits
- (root) — 83 commits
- project/build.properties — 35 commits
- project/plugins.sbt — 29 commits
- .github/workflows — 1 commit
- src/main — 1 commit
- src/test — 1 commit
Notable commits
- fix: Merge pull request #505 from nafg/fix/ci-jdk17
- change: CI: bump JDK to temurin@17
- change: Go back to the LTS version of Scala 3
- change: Merge branch 'master' into update/h2-2.3.230
- change: Merge branch 'master' into update/h2-2.3.232
- change: Merge branch 'master' into update/sbt-1.11.1
- change: Merge branch 'master' into update/sbt-ci-release-1.6.0
- change: Merge branch 'master' into update/sbt-coveralls-1.3.14
- change: Merge branch 'master' into update/scala-library-2.13.16
- change: Merge branch 'master' into update/scala-library-2.13.16
- change: Merge branch 'master' into update/scala3-library-3.5.2
- change: Merge branch 'master' into update/slick-3.6.1
- change: Merge pull request #341 from nafg/update/sbt-mergify-github-actions-0.8.2
- change: Merge pull request #342 from nafg/update/sqlite-jdbc-3.46.0.0
- change: Merge pull request #343 from nafg/update/hsqldb-2.7.3
- change: Merge pull request #344 from nafg/update/scalatest-3.2.19
- change: Merge pull request #345 from nafg/update/mysql-connector-j-9.0.0
- change: Merge pull request #346 from nafg/update/sbt-scoverage-2.1.0
- change: Merge pull request #347 from nafg/update/sbt-1.10.1
- change: Merge pull request #348 from nafg/update/sbt-coveralls-1.3.12
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
nafg/slick-migration-api was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3bf7febcb3bdc4a9c6f0ee5b2fde752dbdf69358 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.