[PR #3898] [CLOSED] feat(create-adapter): fix bug, improve maintainability & testability #5070

Closed
opened 2026-03-13 12:09:48 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/3898
Author: @ping-maxwell
Created: 8/10/2025
Status: Closed

Base: canaryHead: update/create-adapter/matainability-v2


📝 Commits (10+)

  • a36287b update(create-adapter): Fix bug, improve maintainability & testability (v2)
  • 3936450 chore: code improvements
  • 7609b68 chore: lint
  • bb68714 fix: test snapshot
  • dee3db2 fix: ci
  • d804586 fix: adapter configs
  • e9cc4a9 fix: CI
  • 70e9c42 fix: typo
  • 59853a9 Update packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts
  • b0eec56 Update packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts

📊 Changes

20 files changed (+1161 additions, -499 deletions)

View changed files

📝 packages/better-auth/src/__snapshots__/init.test.ts.snap (+4 -0)
packages/better-auth/src/adapters/create-adapter/debug-logs.ts (+68 -0)
packages/better-auth/src/adapters/create-adapter/get-default-field-name.ts (+53 -0)
packages/better-auth/src/adapters/create-adapter/get-default-model-name.ts (+54 -0)
packages/better-auth/src/adapters/create-adapter/get-field-attributes.ts (+33 -0)
packages/better-auth/src/adapters/create-adapter/get-field-name.ts (+39 -0)
packages/better-auth/src/adapters/create-adapter/get-model-name.ts (+36 -0)
packages/better-auth/src/adapters/create-adapter/id-field.ts (+60 -0)
📝 packages/better-auth/src/adapters/create-adapter/index.ts (+84 -492)
📝 packages/better-auth/src/adapters/create-adapter/test/create-adapter.test.ts (+8 -1)
packages/better-auth/src/adapters/create-adapter/test/transformation.test.ts (+287 -0)
packages/better-auth/src/adapters/create-adapter/transform-input.ts (+142 -0)
packages/better-auth/src/adapters/create-adapter/transform-output.ts (+116 -0)
packages/better-auth/src/adapters/create-adapter/transform-where.ts (+99 -0)
📝 packages/better-auth/src/adapters/create-adapter/types.ts (+42 -6)
📝 packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts (+8 -0)
📝 packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts (+5 -0)
📝 packages/better-auth/src/adapters/memory-adapter/memory-adapter.ts (+8 -0)
📝 packages/better-auth/src/adapters/mongodb-adapter/mongodb-adapter.ts (+7 -0)
📝 packages/better-auth/src/adapters/prisma-adapter/prisma-adapter.ts (+8 -0)

📄 Description

  • Fixed transformInput to incorrectly transforms string arrays
  • Added supportsArrays and supportsNumbers in the adapter config. I realized I needed this when developing the Redis adapter.
  • Made create adapter config’s supportNumber, supportString, etc all required, rather than using defaults which could be incorrect, this requires the adapter maintainer to think about all of the types their database supports.
  • Moved a lot of the logic in the create-adapter out to it’s separate files to allow the createAdapter code to be less dense and drastically make it easier to read & maintain.
    • Also added tests for some of it's logic - such as transform.test.ts

My previous PR I messed up the rebase so it was just easier to open a new PR (this one)
This PR is required in order for Redis Primary Adapter to work.


Summary by cubic

Refactored the create-adapter code for better maintainability, fixed a bug with string array transformation, and made adapter config type support explicit and required.

  • Improvements
    • Split create-adapter logic into separate files for clarity and easier testing.
    • Added supportsArrays and supportsNumbers to adapter config and made all type support fields required.
    • Fixed transformInput to handle string arrays correctly.
    • Added targeted tests for transformation logic.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/3898 **Author:** [@ping-maxwell](https://github.com/ping-maxwell) **Created:** 8/10/2025 **Status:** ❌ Closed **Base:** `canary` ← **Head:** `update/create-adapter/matainability-v2` --- ### 📝 Commits (10+) - [`a36287b`](https://github.com/better-auth/better-auth/commit/a36287baf899411b5b360a620dff846a9b197940) update(create-adapter): Fix bug, improve maintainability & testability (v2) - [`3936450`](https://github.com/better-auth/better-auth/commit/3936450aebc3e036d58e2f1a7d53e297053aa576) chore: code improvements - [`7609b68`](https://github.com/better-auth/better-auth/commit/7609b684c64ae084aea3bde11e3a1fab7d261b67) chore: lint - [`bb68714`](https://github.com/better-auth/better-auth/commit/bb6871447bcd3f49eb985b870e7bfad3ddbf7b40) fix: test snapshot - [`dee3db2`](https://github.com/better-auth/better-auth/commit/dee3db284b706e216e01a35ad02e15a224105e69) fix: ci - [`d804586`](https://github.com/better-auth/better-auth/commit/d8045866455e173a6da191df954f8879ee969a81) fix: adapter configs - [`e9cc4a9`](https://github.com/better-auth/better-auth/commit/e9cc4a9013f311d803bd6bafc780f83aa3bad695) fix: CI - [`70e9c42`](https://github.com/better-auth/better-auth/commit/70e9c42e73eb146086c5ab1655ec0cd1519e4a9b) fix: typo - [`59853a9`](https://github.com/better-auth/better-auth/commit/59853a996375143ad0c55e833fe68590f243475a) Update packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts - [`b0eec56`](https://github.com/better-auth/better-auth/commit/b0eec56085b01695cb765fbe7c9d7bf855cd8be4) Update packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts ### 📊 Changes **20 files changed** (+1161 additions, -499 deletions) <details> <summary>View changed files</summary> 📝 `packages/better-auth/src/__snapshots__/init.test.ts.snap` (+4 -0) ➕ `packages/better-auth/src/adapters/create-adapter/debug-logs.ts` (+68 -0) ➕ `packages/better-auth/src/adapters/create-adapter/get-default-field-name.ts` (+53 -0) ➕ `packages/better-auth/src/adapters/create-adapter/get-default-model-name.ts` (+54 -0) ➕ `packages/better-auth/src/adapters/create-adapter/get-field-attributes.ts` (+33 -0) ➕ `packages/better-auth/src/adapters/create-adapter/get-field-name.ts` (+39 -0) ➕ `packages/better-auth/src/adapters/create-adapter/get-model-name.ts` (+36 -0) ➕ `packages/better-auth/src/adapters/create-adapter/id-field.ts` (+60 -0) 📝 `packages/better-auth/src/adapters/create-adapter/index.ts` (+84 -492) 📝 `packages/better-auth/src/adapters/create-adapter/test/create-adapter.test.ts` (+8 -1) ➕ `packages/better-auth/src/adapters/create-adapter/test/transformation.test.ts` (+287 -0) ➕ `packages/better-auth/src/adapters/create-adapter/transform-input.ts` (+142 -0) ➕ `packages/better-auth/src/adapters/create-adapter/transform-output.ts` (+116 -0) ➕ `packages/better-auth/src/adapters/create-adapter/transform-where.ts` (+99 -0) 📝 `packages/better-auth/src/adapters/create-adapter/types.ts` (+42 -6) 📝 `packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts` (+8 -0) 📝 `packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts` (+5 -0) 📝 `packages/better-auth/src/adapters/memory-adapter/memory-adapter.ts` (+8 -0) 📝 `packages/better-auth/src/adapters/mongodb-adapter/mongodb-adapter.ts` (+7 -0) 📝 `packages/better-auth/src/adapters/prisma-adapter/prisma-adapter.ts` (+8 -0) </details> ### 📄 Description - Fixed `transformInput` to incorrectly transforms string arrays - Added `supportsArrays` and `supportsNumbers` in the adapter config. I realized I needed this when developing the Redis adapter. - Made create adapter config’s `supportNumber`, `supportString`, etc all required, rather than using defaults which could be incorrect, this requires the adapter maintainer to think about all of the types their database supports. - Moved a lot of the logic in the create-adapter out to it’s separate files to allow the createAdapter code to be less dense and drastically make it easier to read & maintain. - Also added tests for some of it's logic - such as `transform.test.ts` My previous [PR](https://github.com/better-auth/better-auth/pull/3265) I messed up the rebase so it was just easier to open a new PR (this one) This PR is required in order for Redis Primary Adapter to work. <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Refactored the create-adapter code for better maintainability, fixed a bug with string array transformation, and made adapter config type support explicit and required. - **Improvements** - Split create-adapter logic into separate files for clarity and easier testing. - Added `supportsArrays` and `supportsNumbers` to adapter config and made all type support fields required. - Fixed `transformInput` to handle string arrays correctly. - Added targeted tests for transformation logic. <!-- End of auto-generated description by cubic. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-03-13 12:09:48 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#5070