[PR #5594] [CLOSED] feat: Adapter JOIN support (old) #6105

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

📋 Pull Request Information

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

Base: canaryHead: feat/adapter-join-v3


📝 Commits (10+)

📊 Changes

62 files changed (+4345 additions, -587 deletions)

View changed files

📝 docker-compose.yml (+14 -1)
📝 docs/content/docs/guides/create-a-db-adapter.mdx (+69 -27)
📝 packages/better-auth/package.json (+1 -1)
📝 packages/better-auth/src/__snapshots__/init.test.ts.snap (+2 -0)
packages/better-auth/src/adapters/adapter-factory/get-default-field-name.ts (+63 -0)
packages/better-auth/src/adapters/adapter-factory/get-default-model-name.ts (+55 -0)
packages/better-auth/src/adapters/adapter-factory/get-field-attributes.ts (+62 -0)
packages/better-auth/src/adapters/adapter-factory/get-field-name.ts (+43 -0)
packages/better-auth/src/adapters/adapter-factory/get-id-field.ts (+72 -0)
packages/better-auth/src/adapters/adapter-factory/get-model-name.ts (+36 -0)
📝 packages/better-auth/src/adapters/adapter-factory/index.ts (+457 -257)
📝 packages/better-auth/src/adapters/adapter-factory/test/adapter-factory.test.ts (+324 -0)
📝 packages/better-auth/src/adapters/create-test-suite.ts (+7 -3)
📝 packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts (+147 -12)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.mysql.test.ts (+4 -3)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.pg.test.ts (+4 -3)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.sqlite.test.ts (+4 -3)
📝 packages/better-auth/src/adapters/index.ts (+15 -2)
📝 packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts (+346 -54)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mssql.test.ts (+1 -2)

...and 42 more files

📄 Description

NEW PR IS OPEN.

https://github.com/better-auth/better-auth/pull/5730

Adapter Join Support

Adds adapter-level JOIN support to combine related reads (findOne/findMany) into one call. Also fixes foreign key generation and schema name handling so migrations and generators respect custom model/field names.

  • New Features

    • JOIN for findOne/findMany with inner/left joins and nested results (arrays for one-to-many, object for one-to-one).
    • Implemented across Drizzle, Kysely, MongoDB ($lookup), Memory, and Prisma (via include).
    • Exported helpers: getDefaultModelName, getDefaultFieldName, getModelName, getFieldName.
    • Added adapter config: disableTransformJoin.
    • Added join tests and a secondary Postgres service (postgres-kysely2) for testing.
    • Fallback join system in case a given adapter doesn't support it.
    • Updated documentation for creating adapters since it was extremely out of date.
    • Introduced experimental join support for Drizzle schema generation.
  • Bug Fixes

    • Kysely migrations now generate foreign keys using custom model/field names.
    • Prisma schema generation now honors custom names for relation fields.
    • CLI generators (Drizzle/Prisma) now resolve model/field names correctly when customized.

Info

  • Supports all adapters
    • Memory
    • Drizzle
    • Kysely
    • Prisma
    • Mongo
  • Unit Tests
    • Join tests
    • Fallback Join system tests
  • Backwards compatibility
  • Documentation
  • Fallback join system
  • Drizzle Schema generation supports relations

Example usage

image image

🔄 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/5594 **Author:** [@ping-maxwell](https://github.com/ping-maxwell) **Created:** 10/26/2025 **Status:** ❌ Closed **Base:** `canary` ← **Head:** `feat/adapter-join-v3` --- ### 📝 Commits (10+) - [`b2b7a00`](https://github.com/better-auth/better-auth/commit/b2b7a00cced9cffcb2c7b9870e7676399e3c3c77) feat: Adapter JOIN support - [`affd5b4`](https://github.com/better-auth/better-auth/commit/affd5b4fe40c56f896808ae1ba44a605ea28996e) chore: lint - [`f478516`](https://github.com/better-auth/better-auth/commit/f478516dec8a27c1c48c934a0dbc4637042cdea3) fix: missing code in adapter factory - [`65b5466`](https://github.com/better-auth/better-auth/commit/65b546623bd9114af500a096b63945d64eec6578) fix: drizzle - [`b08aaf7`](https://github.com/better-auth/better-auth/commit/b08aaf740c0f6f9a6965644cf7ee07384ec48392) fix: kysely pg tests - [`f4334a9`](https://github.com/better-auth/better-auth/commit/f4334a9329cac24eeabac5baca5fb66713ba71b3) fix: prisma - [`cd5f23d`](https://github.com/better-auth/better-auth/commit/cd5f23d771f02c0cc7fb02f589b0d0f0af833c7b) chore: lint - [`9c8ea19`](https://github.com/better-auth/better-auth/commit/9c8ea19bde14322e6e070a1490a41e93e904e620) chore: CI - [`7ac46b4`](https://github.com/better-auth/better-auth/commit/7ac46b4a572d70e8ee130524feacb42ef707cab6) fix: prisma, drizzle & prisma to support limit & offset during joins - [`2f79bb7`](https://github.com/better-auth/better-auth/commit/2f79bb78b07c3a1e07ef8fec61e57e8774cdc298) chore: lint ### 📊 Changes **62 files changed** (+4345 additions, -587 deletions) <details> <summary>View changed files</summary> 📝 `docker-compose.yml` (+14 -1) 📝 `docs/content/docs/guides/create-a-db-adapter.mdx` (+69 -27) 📝 `packages/better-auth/package.json` (+1 -1) 📝 `packages/better-auth/src/__snapshots__/init.test.ts.snap` (+2 -0) ➕ `packages/better-auth/src/adapters/adapter-factory/get-default-field-name.ts` (+63 -0) ➕ `packages/better-auth/src/adapters/adapter-factory/get-default-model-name.ts` (+55 -0) ➕ `packages/better-auth/src/adapters/adapter-factory/get-field-attributes.ts` (+62 -0) ➕ `packages/better-auth/src/adapters/adapter-factory/get-field-name.ts` (+43 -0) ➕ `packages/better-auth/src/adapters/adapter-factory/get-id-field.ts` (+72 -0) ➕ `packages/better-auth/src/adapters/adapter-factory/get-model-name.ts` (+36 -0) 📝 `packages/better-auth/src/adapters/adapter-factory/index.ts` (+457 -257) 📝 `packages/better-auth/src/adapters/adapter-factory/test/adapter-factory.test.ts` (+324 -0) 📝 `packages/better-auth/src/adapters/create-test-suite.ts` (+7 -3) 📝 `packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts` (+147 -12) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.mysql.test.ts` (+4 -3) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.pg.test.ts` (+4 -3) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.sqlite.test.ts` (+4 -3) 📝 `packages/better-auth/src/adapters/index.ts` (+15 -2) 📝 `packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts` (+346 -54) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mssql.test.ts` (+1 -2) _...and 42 more files_ </details> ### 📄 Description # NEW PR IS OPEN. https://github.com/better-auth/better-auth/pull/5730 # Adapter Join Support Adds adapter-level JOIN support to combine related reads (findOne/findMany) into one call. Also fixes foreign key generation and schema name handling so migrations and generators respect custom model/field names. - **New Features** - JOIN for findOne/findMany with inner/left joins and nested results (arrays for one-to-many, object for one-to-one). - Implemented across Drizzle, Kysely, MongoDB ($lookup), Memory, and Prisma (via include). - Exported helpers: getDefaultModelName, getDefaultFieldName, getModelName, getFieldName. - Added adapter config: disableTransformJoin. - Added join tests and a secondary Postgres service (postgres-kysely2) for testing. - Fallback join system in case a given adapter doesn't support it. - Updated documentation for creating adapters since it was extremely out of date. - Introduced experimental join support for Drizzle schema generation. - **Bug Fixes** - Kysely migrations now generate foreign keys using custom model/field names. - Prisma schema generation now honors custom names for relation fields. - CLI generators (Drizzle/Prisma) now resolve model/field names correctly when customized. ## Info - [x] Supports all adapters - [x] Memory - [x] Drizzle - [x] Kysely - [x] Prisma - [x] Mongo - [x] Unit Tests - [x] Join tests - [x] Fallback Join system tests - [x] Backwards compatibility - [x] Documentation - [x] Fallback join system - [x] Drizzle Schema generation supports relations ## Example usage <img width="550" height="181" alt="image" src="https://github.com/user-attachments/assets/8d69c83b-89e0-401c-a326-5254fba16442" /> <img width="533" height="246" alt="image" src="https://github.com/user-attachments/assets/efd14fe8-5298-45fd-8e7f-23f02f2c6047" /> --- <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:47:54 -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#6105