[PR #5357] [MERGED] feat: auto-index CLI #14201

Closed
opened 2026-04-13 09:21:28 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/5357
Author: @ping-maxwell
Created: 10/16/2025
Status: Merged
Merged: 11/10/2025
Merged by: @Bekacru

Base: canaryHead: feat/auto-index-cli


📝 Commits (10+)

  • 4349bd8 feat: auto-index CLI
  • c0c4628 add: kysely support
  • 90b0f9c feat: support prisma index
  • 7594490 fix: ci
  • 1066884 Merge branch 'canary' into feat/auto-index-cli
  • 502132f fix: kysely mysql use varchar for index or sortable fields
  • 92882c5 fix: indexs are useless when fields alr have unique
  • 71a14b0 fix: drizzle doesnt varchar sortable or index fields
  • 507a4c0 fix: CI
  • 10d9372 fix: CI

📊 Changes

47 files changed (+1281 additions, -858 deletions)

View changed files

📝 packages/better-auth/src/__snapshots__/init.test.ts.snap (+3 -0)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.mysql.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.pg.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.sqlite.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mssql.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mysql.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.pg.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.sqlite.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/prisma-adapter/test/prisma.mysql.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/prisma-adapter/test/prisma.pg.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/prisma-adapter/test/prisma.sqlite.test.ts (+0 -2)
📝 packages/better-auth/src/adapters/prisma-adapter/test/push-prisma-schema.ts (+1 -1)
📝 packages/better-auth/src/db/get-migration.ts (+59 -30)
📝 packages/better-auth/src/db/get-tables.ts (+3 -0)
📝 packages/better-auth/src/plugins/api-key/schema.ts (+2 -0)
📝 packages/better-auth/src/plugins/oidc-provider/schema.ts (+5 -0)
📝 packages/better-auth/src/plugins/organization/organization.ts (+9 -0)
📝 packages/better-auth/src/plugins/siwe/schema.ts (+1 -0)
📝 packages/better-auth/src/plugins/two-factor/schema.ts (+2 -0)
📝 packages/cli/package.json (+1 -0)

...and 27 more files

📄 Description

Feature

Adds index support for field attributes, which allows the BA CLI to generate indexes in the schema.

Also fixes:

  • kysely mysql doesn't apply varchar when field is sortable: true.
  • Drizzle mysql doesn't apply varchar when field is sortable: true.
  • Removed adapter performance tests since they don't test anything.

Summary by cubic

Adds auto-indexing to the CLI and schemas so common lookup fields automatically generate indexes in Drizzle, Kysely, and Prisma. This improves query performance with no breaking changes.

  • New Features

    • Drizzle generator emits index() with proper names and imports.
    • Kysely migrations create indexes for indexed fields on table create/alter.
    • Prisma generator adds @@index for non-unique indexed fields (one per field).
    • String fields marked sortable or index now use varchar so indexes apply correctly (Drizzle, Kysely MySQL).
    • Core and plugin schemas mark key fields as indexed (e.g., session.userId, account.userId, verification.identifier, passkey.userId/credentialID, twoFactor.secret/userId, OIDC, SIWE.userId, organization relations, API key).
    • Added index?: boolean to DBFieldAttributeConfig; CLI now uses DBAdapter and depends on @better-auth/core.
  • Migration

    • Regenerate your schema with the CLI and run migrations to add the new indexes.

Written for commit 5b5f353996. Summary will update automatically on new commits.


🔄 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/5357 **Author:** [@ping-maxwell](https://github.com/ping-maxwell) **Created:** 10/16/2025 **Status:** ✅ Merged **Merged:** 11/10/2025 **Merged by:** [@Bekacru](https://github.com/Bekacru) **Base:** `canary` ← **Head:** `feat/auto-index-cli` --- ### 📝 Commits (10+) - [`4349bd8`](https://github.com/better-auth/better-auth/commit/4349bd85705561c770081014724a52d1eaa54dac) feat: auto-index CLI - [`c0c4628`](https://github.com/better-auth/better-auth/commit/c0c46281e44dca32f462fb4c9588a8ec98c990d0) add: kysely support - [`90b0f9c`](https://github.com/better-auth/better-auth/commit/90b0f9c06d013e07e1a8f88a9d108abbd4f3d92a) feat: support prisma index - [`7594490`](https://github.com/better-auth/better-auth/commit/759449008271c4e351bd960c35c8d9dd596a3a3a) fix: ci - [`1066884`](https://github.com/better-auth/better-auth/commit/106688487dc585eb4fb56b4cf06cb82d2561e5ed) Merge branch 'canary' into feat/auto-index-cli - [`502132f`](https://github.com/better-auth/better-auth/commit/502132fd4f2e18454186b67f2836359bb1bc6615) fix: kysely mysql use `varchar` for index or sortable fields - [`92882c5`](https://github.com/better-auth/better-auth/commit/92882c53a2019e16fbe24508d829c78e2dcf2c35) fix: `index`s are useless when fields alr have `unique` - [`71a14b0`](https://github.com/better-auth/better-auth/commit/71a14b0a19a8d2847325c86bd8c06be3829c7eb9) fix: drizzle doesnt varchar `sortable` or `index` fields - [`507a4c0`](https://github.com/better-auth/better-auth/commit/507a4c05e3eb1747a2f7bf2ad5d3731c7e89119c) fix: CI - [`10d9372`](https://github.com/better-auth/better-auth/commit/10d9372606581cb9e1c7785c16d626ba584c0457) fix: CI ### 📊 Changes **47 files changed** (+1281 additions, -858 deletions) <details> <summary>View changed files</summary> 📝 `packages/better-auth/src/__snapshots__/init.test.ts.snap` (+3 -0) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.mysql.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.pg.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.sqlite.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mssql.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mysql.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.pg.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.sqlite.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/prisma-adapter/test/prisma.mysql.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/prisma-adapter/test/prisma.pg.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/prisma-adapter/test/prisma.sqlite.test.ts` (+0 -2) 📝 `packages/better-auth/src/adapters/prisma-adapter/test/push-prisma-schema.ts` (+1 -1) 📝 `packages/better-auth/src/db/get-migration.ts` (+59 -30) 📝 `packages/better-auth/src/db/get-tables.ts` (+3 -0) 📝 `packages/better-auth/src/plugins/api-key/schema.ts` (+2 -0) 📝 `packages/better-auth/src/plugins/oidc-provider/schema.ts` (+5 -0) 📝 `packages/better-auth/src/plugins/organization/organization.ts` (+9 -0) 📝 `packages/better-auth/src/plugins/siwe/schema.ts` (+1 -0) 📝 `packages/better-auth/src/plugins/two-factor/schema.ts` (+2 -0) 📝 `packages/cli/package.json` (+1 -0) _...and 27 more files_ </details> ### 📄 Description ## Feature Adds `index` support for field attributes, which allows the BA CLI to generate indexes in the schema. Also fixes: * kysely `mysql` doesn't apply `varchar` when field is `sortable: true`. * Drizzle `mysql` doesn't apply `varchar` when field is `sortable: true`. * Removed adapter performance tests since they don't test anything. <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds auto-indexing to the CLI and schemas so common lookup fields automatically generate indexes in Drizzle, Kysely, and Prisma. This improves query performance with no breaking changes. - **New Features** - Drizzle generator emits index() with proper names and imports. - Kysely migrations create indexes for indexed fields on table create/alter. - Prisma generator adds @@index for non-unique indexed fields (one per field). - String fields marked sortable or index now use varchar so indexes apply correctly (Drizzle, Kysely MySQL). - Core and plugin schemas mark key fields as indexed (e.g., session.userId, account.userId, verification.identifier, passkey.userId/credentialID, twoFactor.secret/userId, OIDC, SIWE.userId, organization relations, API key). - Added index?: boolean to DBFieldAttributeConfig; CLI now uses DBAdapter and depends on @better-auth/core. - **Migration** - Regenerate your schema with the CLI and run migrations to add the new indexes. <sup>Written for commit 5b5f353996c2cff7f048e552956457b0e6a72b41. Summary will update automatically on new commits.</sup> <!-- 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-04-13 09:21:28 -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#14201