diff --git a/packages/core/src/db/get-tables.ts b/packages/core/src/db/get-tables.ts index fd1bfee1fd..876ef8ce77 100644 --- a/packages/core/src/db/get-tables.ts +++ b/packages/core/src/db/get-tables.ts @@ -47,7 +47,8 @@ export const getAuthTables = ( }, } satisfies BetterAuthDBSchema; - const { user, session, account, ...pluginTables } = pluginSchema; + const { user, session, account, verification, ...pluginTables } = + pluginSchema; const sessionTable = { session: { @@ -267,6 +268,8 @@ export const getAuthTables = ( onUpdate: () => new Date(), fieldName: options.verification?.fields?.updatedAt || "updatedAt", }, + ...verification?.fields, + ...options.verification?.additionalFields, }, order: 4, }, diff --git a/packages/core/src/db/test/get-tables.test.ts b/packages/core/src/db/test/get-tables.test.ts index 4285a3de56..db309a88fe 100644 --- a/packages/core/src/db/test/get-tables.test.ts +++ b/packages/core/src/db/test/get-tables.test.ts @@ -59,4 +59,25 @@ describe("getAuthTables", () => { expect(refreshTokenExpiresAtField.fieldName).toBe("refreshTokenExpiresAt"); expect(accessTokenExpiresAtField.fieldName).toBe("accessTokenExpiresAt"); }); + + it("should merge additionalFields into verification table metadata", () => { + const tables = getAuthTables({ + verification: { + additionalFields: { + newField: { + fieldName: "new_field", + type: "string", + }, + }, + }, + }); + + const verificationTable = tables.verification; + const newField = verificationTable!.fields.newField!; + + console.log(newField); + expect(newField).not.toBeUndefined(); + expect(newField.fieldName).toBe("new_field"); + expect(newField.type).toBe("string"); + }); }); diff --git a/packages/core/src/types/init-options.ts b/packages/core/src/types/init-options.ts index f05e0537f6..7a2d089829 100644 --- a/packages/core/src/types/init-options.ts +++ b/packages/core/src/types/init-options.ts @@ -954,6 +954,12 @@ export type BetterAuthOptions = { * Map verification fields */ fields?: Partial, string>>; + /** + * Additional fields for the verification + */ + additionalFields?: { + [key: string]: DBFieldAttribute; + }; /** * disable cleaning up expired values when a verification value is * fetched