Skip to content
CAI
Software that uses CAICheck a score

nafg/slick-migration-api

57.0

Adequate · 20 September 2026

949

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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.