diff --git a/packages/better-auth/src/adapters/mongodb-adapter/mongodb-adapter.ts b/packages/better-auth/src/adapters/mongodb-adapter/mongodb-adapter.ts index af5b05f541..f3f2053c18 100644 --- a/packages/better-auth/src/adapters/mongodb-adapter/mongodb-adapter.ts +++ b/packages/better-auth/src/adapters/mongodb-adapter/mongodb-adapter.ts @@ -604,7 +604,7 @@ export const mongodbAdapter = ( if (customIdGen) { return data; } - if (action === "update") { + if (action !== "create") { return data; } if (Array.isArray(data)) { diff --git a/packages/core/src/db/adapter/factory.ts b/packages/core/src/db/adapter/factory.ts index ac7da3628d..cdd52e4535 100644 --- a/packages/core/src/db/adapter/factory.ts +++ b/packages/core/src/db/adapter/factory.ts @@ -474,9 +474,19 @@ export const createAdapterFactory = const transformWhereClause = ({ model, where, + action, }: { where: W; model: string; + action: + | "create" + | "update" + | "findOne" + | "findMany" + | "updateMany" + | "delete" + | "deleteMany" + | "count"; }): W extends undefined ? undefined : CleanedWhere[] => { if (!where) return undefined as any; const newMappedKeys = config.mapKeysTransformInput ?? {}; @@ -562,6 +572,18 @@ export const createAdapterFactory = } } + if (config.customTransformInput) { + newValue = config.customTransformInput({ + data: newValue, + fieldAttributes: fieldAttr, + field: fieldName, + model: getModelName(model), + schema, + options, + action, + }); + } + return { operator, connector, @@ -727,6 +749,7 @@ export const createAdapterFactory = connector: "AND", }, ], + action: "findOne", }); try { if (joinConfig.relation === "one-to-one") { @@ -886,6 +909,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "update", }); debugLog( { method: "update" }, @@ -946,6 +970,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "updateMany", }); unsafeModel = getDefaultModelName(unsafeModel); debugLog( @@ -1001,6 +1026,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "findOne", }); unsafeModel = getDefaultModelName(unsafeModel); let join: JoinConfig | undefined; @@ -1078,6 +1104,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "findMany", }); unsafeModel = getDefaultModelName(unsafeModel); let join: JoinConfig | undefined; @@ -1151,6 +1178,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "delete", }); unsafeModel = getDefaultModelName(unsafeModel); debugLog( @@ -1183,6 +1211,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "deleteMany", }); unsafeModel = getDefaultModelName(unsafeModel); debugLog( @@ -1216,6 +1245,7 @@ export const createAdapterFactory = const where = transformWhereClause({ model: unsafeModel, where: unsafeWhere, + action: "count", }); unsafeModel = getDefaultModelName(unsafeModel); debugLog( diff --git a/packages/core/src/db/adapter/index.ts b/packages/core/src/db/adapter/index.ts index 531211a26e..d11761734a 100644 --- a/packages/core/src/db/adapter/index.ts +++ b/packages/core/src/db/adapter/index.ts @@ -203,7 +203,15 @@ export interface DBAdapterFactoryConfig< /** * The action which was called from the adapter. */ - action: "create" | "update" | "findOne" | "findMany"; + action: + | "create" + | "update" + | "findOne" + | "findMany" + | "updateMany" + | "delete" + | "deleteMany" + | "count"; /** * The model name. */ diff --git a/packages/core/src/db/adapter/types.ts b/packages/core/src/db/adapter/types.ts index 083a4c7234..a52fb64fda 100644 --- a/packages/core/src/db/adapter/types.ts +++ b/packages/core/src/db/adapter/types.ts @@ -111,9 +111,19 @@ export type AdapterFactoryCustomizeAdapterCreator = (config: { transformWhereClause: ({ model, where, + action, }: { where: W; model: string; + action: + | "create" + | "update" + | "findOne" + | "findMany" + | "updateMany" + | "delete" + | "deleteMany" + | "count"; }) => W extends undefined ? undefined : CleanedWhere[]; }) => CustomAdapter;