Skip to content

feat(tx-drizzle): standardize database capability contracts - #2881

Merged
kang-heewon merged 1 commit into
trunkfrom
issue-2238-drizzle-capabilities
Sep 23, 2026
Merged

kang-heewon merged 1 commit into
trunkfrom
issue-2238-drizzle-capabilities

Conversation

@kang-heewon

Copy link
Copy Markdown
Member

Summary

  • Export shared minimal Drizzle database capability contracts from @croco/tx-drizzle.
  • Migrate access, auth, audit, and metering adapters to depend only on the operations they require.
  • Preserve PostgreSQL and SQLite compatibility, including provider-specific conflict handling in metering.
  • Regenerate public API, Problem Registry, test inventory, and API documentation artifacts.

Breaking changes

  • @croco/audit-drizzle renames its public DrizzleDb alias to DrizzleAuditDatabase.
  • @croco/metering-drizzle renames its public DrizzleDb alias to DrizzleMeterDatabase.

The included changeset declares major releases for those two renamed exports, a minor release for the new shared contracts, and patches for migrated consumers.

Validation

  • pnpm install --frozen-lockfile
  • pnpm check — 27/28 applicable repository gates passed
  • pnpm build — 242/242 tasks passed
  • pnpm typecheck — 243/243 tasks passed
  • pnpm test — 243/243 tasks passed
  • Affected-package lint, typecheck, and tests — 299 tests passed
  • Compile-time negative control confirms databases missing required capabilities are rejected
  • Public API, test inventory, Problem Registry, and API documentation drift checks passed
  • pnpm pr-review-companion -- --base origin/trunk --head HEAD --run-required-checks
  • Independent implementation and verification reviews passed on 75a1e6c58b410da817ea1e07ab02aea3d9c76d68

Live PostgreSQL integration suites are excluded by the repository-default package commands; PostgreSQL compatibility is covered by compilation and query-generation tests.

Closes #2238

Copilot AI lite review requested due to automatic review settings September 22, 2026 16:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 21 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 8b3fc0e9-1ee7-4ecc-bc08-ef52f5ef18df

📥 Commits

Reviewing files that changed from the base of the PR and between 00fe494 and 45588bc.

⛔ Files ignored due to path filters (2)
  • packages/problems-core/src/generated/problem-code-registry.ts is excluded by !**/generated/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (42)
  • .changeset/shared-drizzle-capabilities.md
  • docs/problem-code-registry.json
  • packages/access-drizzle/package.json
  • packages/access-drizzle/src/libs/DrizzleAccessProvider.ts
  • packages/audit-drizzle/src/index.ts
  • packages/audit-drizzle/src/libs/DrizzleAuditLogRepository.ts
  • packages/audit-drizzle/src/tests/DrizzleAuditLogRepository.spec.ts
  • packages/auth-drizzle/package.json
  • packages/auth-drizzle/src/libs/DrizzleApiKeyStore.ts
  • packages/auth-drizzle/src/libs/DrizzleRoleRegistry.ts
  • packages/auth-drizzle/src/libs/DrizzleSessionProvider.ts
  • packages/auth-drizzle/src/libs/DrizzleTenantMappingProvider.ts
  • packages/docs/src/content/docs/api/access-drizzle/src/classes/DrizzleAccessProvider.md
  • packages/docs/src/content/docs/api/audit-drizzle/src/classes/DrizzleAuditLogRepository.md
  • packages/docs/src/content/docs/api/audit-drizzle/src/type-aliases/DrizzleAuditDatabase.md
  • packages/docs/src/content/docs/api/audit-drizzle/src/type-aliases/DrizzleDb.md
  • packages/docs/src/content/docs/api/auth-drizzle/src/classes/DrizzleApiKeyStore.md
  • packages/docs/src/content/docs/api/auth-drizzle/src/classes/DrizzleRoleRegistry.md
  • packages/docs/src/content/docs/api/auth-drizzle/src/classes/DrizzleSessionProvider.md
  • packages/docs/src/content/docs/api/auth-drizzle/src/classes/DrizzleTenantMappingProvider.md
  • packages/docs/src/content/docs/api/metering-drizzle/src/classes/DrizzleMeterRepository.md
  • packages/docs/src/content/docs/api/metering-drizzle/src/type-aliases/DrizzleDb.md
  • packages/docs/src/content/docs/api/metering-drizzle/src/type-aliases/DrizzleMeterDatabase.md
  • packages/docs/src/content/docs/api/problems-core/src/variables/CROCO_PROBLEM_CODE_REGISTRY.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleDb.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleDeleteCapability.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleExecuteCapability.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleInsertCapability.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleSelectCapability.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleTransactionCapability.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleTx.md
  • packages/docs/src/content/docs/api/tx-drizzle/src/interfaces/DrizzleUpdateCapability.md
  • packages/docs/src/content/docs/en/reference/problem-recovery-cookbook.md
  • packages/metering-drizzle/package.json
  • packages/metering-drizzle/src/libs/DrizzleMeterRepository.ts
  • packages/metering-drizzle/src/libs/index.ts
  • packages/metering-drizzle/src/tests/DrizzleMeterRepository.spec.ts
  • packages/tx-drizzle/src/index.ts
  • packages/tx-drizzle/src/libs/types.ts
  • packages/tx-drizzle/src/tests/DrizzleCapabilities.spec.ts
  • public-api-surface.snapshot.json
  • test-inventory.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

📊 Benchmark Results

✅ All benchmarks passed

Benchmark p75 Threshold Baseline vs Baseline Status Notes
CrocoApp constructor 40.1μs 30.0ms 8.2μs +390.1% ❌ -
CrocoApp lambdaHandler (10 controllers) 1.9ms 50.0ms 258.4μs +627.6% ❌ -
Lambda cold-start simulation 1.6ms 80.0ms 418.1μs +278.2% ❌ -
Lambda cold-start with headers 1.5ms 80.0ms 369.7μs +292.7% ❌ -
Lambda cold-start with binary body 1.4ms 80.0ms 339.1μs +311.2% ❌ -
Lambda cold-start with query params 1.4ms 80.0ms 301.3μs +355.6% ❌ -
Lambda cold-start with authorizer context 1.4ms 80.0ms 299.8μs +355.5% ❌ -
Lambda cold-start realistic scenario 1.4ms 80.0ms 299.2μs +358.1% ❌ -
EventBusConfig.start (10 handlers) 1.3μs 10.0ms 1.4μs -9.0% ✅ -
EventPublisher.publishNow single event 1.4μs 2.0ms 1.7μs -17.4% ✅ -
DefaultHandlerResolver.resolve × 10 0.1μs 5.0ms 0.1μs -11.2% ✅ -
Container.get singleton (cold) 55.5μs 5.0ms 70.3μs -21.0% ✅ -
Container.register × 50 components 2.8ms 10.0ms 3.2ms -12.4% ✅ -
Container.validate (50 components) 3.2ms 20.0ms 3.4ms -5.7% ✅ -
Container.get singleton (warm) 1.1μs 500.0μs 1.6μs -30.1% ✅ -
TelemetryRuntime.init (lambda preset) 11.1μs 200.0ms 1.1ms -99.0% ✅ -
lambdaPreset config creation 1.3μs 2.0ms 1.4μs -10.6% ✅ -

Updated: 2026-09-22T17:59:17.643Z · Commit: 45588bc

@kang-heewon
kang-heewon force-pushed the issue-2238-drizzle-capabilities branch from 75a1e6c to 55d2b1a Compare September 22, 2026 17:22
@kang-heewon
kang-heewon force-pushed the issue-2238-drizzle-capabilities branch from 55d2b1a to 45588bc Compare September 22, 2026 17:56
@kang-heewon
kang-heewon merged commit 555d5fe into trunk Sep 23, 2026
21 checks passed
@kang-heewon
kang-heewon deleted the issue-2238-drizzle-capabilities branch September 23, 2026 00:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[drizzle] Standardize minimal database capability types across adapters

2 participants