Reorganize repo#172
Merged
oyvindberg merged 21 commits intomainfrom Dec 25, 2025
Merged
Conversation
Move all tester projects under a unified testers/ folder with database
and language-based organization:
- testers/pg/scala/{anorm,doobie,zio-jdbc,scalatypes,javatypes}
- testers/{duckdb,mariadb,oracle,sqlserver}/{java,kotlin,scala}
- testers/openapi/{java,kotlin,scala}/{jaxrs,spring,quarkus,http4s}
Renamed scala-new/scala-old to scalatypes/javatypes for clarity.
Updated bleep.yaml, settings.gradle.kts, .scalafmt.conf, and CI workflow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The project name matching for Java vs Scala detection needed to be updated to handle both old naming (typr-java) and new naming (testers/pg/java). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Analyzes test file usage and limits code generation to only the ~35 tables actually referenced by tests, down from ~177 tables. This dramatically reduces compile time for the testers/pg projects. Changes: - Add selector in GeneratedAdventureWorks.scala that filters to only used tables - Update folder paths from old naming (typr-tester-*) to new (testers/pg/*) - Remove unused domain overrides (AccountNumber, Phone, OrderNumber) from DomainInsert files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The hardcoded file generator is no longer needed since GeneratedAdventureWorks now handles all code generation for tester projects. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Comprehensive rewrite reflecting current project state: - Rename from Typo to Typr - Document support for Scala, Java, and Kotlin languages - Document support for PostgreSQL, MariaDB, DuckDB, SQL Server, Oracle - Add tester project layout (generated-and-checked-in vs src folders) - Add Docker-compose database setup with initialization details - Add DSL architecture section (Java core with Scala/Kotlin wrappers) - Mark Anorm/Doobie/ZIO-JDBC as legacy (PostgreSQL+Scala only) - Document SQL file locations (schema files vs query files) - Update all bleep commands to current script names 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Module renames: - typr-runtime-java → foundations-jdbc - typr-dsl-java → foundations-jdbc-dsl - typr-dsl-kotlin → foundations-jdbc-dsl-kotlin - typr-dsl-scala → foundations-jdbc-dsl-scala Package restructuring: - Modern DSL (DbLibTypo): typr.* → dev.typr.foundations.* - Legacy DSL (Anorm/Doobie/ZioJdbc): keep using typr.dsl via DslQualifiedNames.Legacy Other changes: - Update Gradle settings and build files for new module names - Add Kotlin variant to GeneratedAdventureWorks - Regenerate all tester projects with new package structure - Remove stale typr-tester-mariadb-* directories 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- typr-runtime-java → foundations-jdbc - typr-dsl-java → foundations-jdbc-dsl - typr-dsl-kotlin → foundations-jdbc-dsl-kotlin - typr-dsl-scala → foundations-jdbc-dsl-scala 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document the standalone JDBC wrapper library: - JDBC's problems with type handling and correctness - Full roundtrip support for all column types across 5 databases - Type-safe database types (PgType, MariaType, etc.) - JSON codecs for cross-database MULTISET functionality - Streaming inserts for bulk operations - No reflection (GraalVM native-image compatible) - Native Kotlin/Scala type wrappers - Fragment builder for type-safe SQL construction 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create site/docs-jdbc/ with comprehensive library documentation - Add sidebars-jdbc.js for navigation - Update docusaurus.config.js with jdbc plugin, navbar and footer items - Simplify CLAUDE.md to point to site docs Documentation covers: - JDBC pain points and our type-safe solution - Supported databases (PostgreSQL, MariaDB, DuckDB, Oracle, SQL Server) - Type-safe database types with language tabs (Java/Kotlin/Scala) - Row parsers and result set parsers - SQL fragment builder and interpolation - Clear error messages - JSON codecs for MULTISET functionality - Streaming inserts - No reflection (GraalVM native-image compatible) - Native Kotlin and Scala type support 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Java: Person::new instead of lambda - Kotlin: ::Person constructor reference - Scala: Person.apply instead of lambda - Update Scala string interpolation to use actual sql interpolator 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix JSON Codecs section: use actual DbJson/JsonValue approach - Fix Native Types section: remove incorrect row.get examples - Add separate database type pages with comprehensive coverage: - PostgreSQL: arrays, ranges, geometric, network, JSON, text search - MariaDB/MySQL: unsigned integers, spatial types, sets, JSON - DuckDB: lists, structs, maps, 128-bit integers, enums - Oracle: OBJECT types, nested tables, intervals, LOBs - SQL Server: geography, geometry, hierarchyid, Unicode types - Update sidebar with Database Types category - Use constructor references in examples (Person::new) - Use actual Scala sql interpolator with Fragment.encode 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Escape < and ≤ characters as HTML entities to avoid MDX parsing them as JSX tags. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove category wrapper to show databases directly in sidebar. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Show how to use RowParser.parseJsonArray() to parse nested query results returned as JSON, enabling MULTISET-like queries across all databases. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Show the intended API where RowParser.jsonListType() creates a DbType<List<Row>> that encapsulates JSON array parsing, making it composable with other DbTypes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Mapped record to all *Read interfaces (PgRead, MariaRead, DuckDbRead, SqlServerRead, OracleRead) for proper null handling after map operations - Remove KotlinNullable*Read classes - no longer needed with Mapped approach - Simplify RowParser.opt() to always wrap columns with .opt() instead of detecting already-nullable types - Generalize Kotlin/Scala nullable extensions to use generic DbType instead of database-specific types (PgType, MariaType, etc.) - Remove database-specific TypeOps classes from Scala RuntimeExtensions, keeping only generic DbTypeOps Use DbType instead of PgType in Kotlin/Scala DSL wrappers - paramNullable() now accepts DbType instead of PgType - UpdateBuilder.set() now accepts DbType instead of PgType These methods work with any database type, not just PostgreSQL.
Remove references to AccountNumber, Phone, and OrderNumber domains that no longer exist after reducing generated tables. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add shift, employeedepartmenthistory, vemployee tables to usedTables - Fix testing-with-random-values.md to use only existing domain types - Remove references to publicAccountNumber, publicPhone, publicOrderNumber 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove references to publicAccountNumber, publicPhone, publicOrderNumber which no longer exist after reducing generated tables. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add concurrency group to cancel in-progress builds when new commit pushed - Change postgres matrix fail-fast to true 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major reorganization of the Typr codebase with module renames, folder restructuring, documentation improvements, and API generalizations.
Changes
1. Tester Project Reorganization
testers/folder with{database}/{language}/structure2. Code Generation Optimization
3. Module Renames
typr-runtime-java→foundations-jdbctypr-dsl-java→foundations-jdbc-dsltypr-dsl-kotlin→foundations-jdbc-dsl-kotlintypr-dsl-scala→foundations-jdbc-dsl-scalatypr.*→dev.typr.foundations.*4. Documentation
site/docs-jdbc/)5. CLAUDE.md Overhaul
6. API Generalizations
Mappedrecord to all*ReadinterfacesKotlinNullable*ReadclassesDbType.nullable()for Kotlin/ScalaparamNullable()andUpdateBuilder.set()now acceptDbTypeinstead ofPgTypeTest plan
🤖 Generated with Claude Code