Skip to content

Commit 3847428

Browse files
authored
fix(db-*): make db.begintransactions required (#8419)
Changing the transcations functions on the db so that projects using typescript `strict: true` do not need to type narrow before using it.
1 parent 7b6a760 commit 3847428

File tree

8 files changed

+24
-13
lines changed

8 files changed

+24
-13
lines changed

packages/db-mongodb/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { BaseDatabaseAdapter, DatabaseAdapterObj, Payload, UpdateOneArgs }
66
import fs from 'fs'
77
import mongoose from 'mongoose'
88
import path from 'path'
9-
import { createDatabaseAdapter } from 'payload'
9+
import { createDatabaseAdapter, defaultBeginTransaction } from 'payload'
1010

1111
import type { CollectionModel, GlobalModel, MigrateDownArgs, MigrateUpArgs } from './types.js'
1212

@@ -163,7 +163,7 @@ export function mongooseAdapter({
163163
url,
164164
versions: {},
165165
// DatabaseAdapter
166-
beginTransaction: transactionOptions ? beginTransaction : undefined,
166+
beginTransaction: transactionOptions === false ? defaultBeginTransaction() : beginTransaction,
167167
commitTransaction,
168168
connect,
169169
create,

packages/db-postgres/src/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import {
4747
requireDrizzleKit,
4848
} from '@payloadcms/drizzle/postgres'
4949
import { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core'
50-
import { createDatabaseAdapter } from 'payload'
50+
import { createDatabaseAdapter, defaultBeginTransaction } from 'payload'
5151

5252
import type { Args, PostgresAdapter } from './types.js'
5353

@@ -107,7 +107,8 @@ export function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter>
107107
versionsSuffix: args.versionsSuffix || '_v',
108108

109109
// DatabaseAdapter
110-
beginTransaction: args.transactionOptions === false ? undefined : beginTransaction,
110+
beginTransaction:
111+
args.transactionOptions === false ? defaultBeginTransaction() : beginTransaction,
111112
commitTransaction,
112113
connect,
113114
convertPathToJSONTraversal,

packages/db-sqlite/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import {
3434
updateVersion,
3535
} from '@payloadcms/drizzle'
3636
import { like } from 'drizzle-orm'
37-
import { createDatabaseAdapter } from 'payload'
37+
import { createDatabaseAdapter, defaultBeginTransaction } from 'payload'
3838

3939
import type { Args, SQLiteAdapter } from './types.js'
4040

@@ -108,7 +108,7 @@ export function sqliteAdapter(args: Args): DatabaseAdapterObj<SQLiteAdapter> {
108108
versionsSuffix: args.versionsSuffix || '_v',
109109

110110
// DatabaseAdapter
111-
beginTransaction: args.transactionOptions ? beginTransaction : undefined,
111+
beginTransaction: args.transactionOptions ? beginTransaction : defaultBeginTransaction(),
112112
commitTransaction,
113113
connect,
114114
convertPathToJSONTraversal,

packages/db-vercel-postgres/src/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import {
4747
requireDrizzleKit,
4848
} from '@payloadcms/drizzle/postgres'
4949
import { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core'
50-
import { createDatabaseAdapter } from 'payload'
50+
import { createDatabaseAdapter, defaultBeginTransaction } from 'payload'
5151

5252
import type { Args, VercelPostgresAdapter } from './types.js'
5353

@@ -107,7 +107,8 @@ export function vercelPostgresAdapter(args: Args = {}): DatabaseAdapterObj<Verce
107107
versionsSuffix: args.versionsSuffix || '_v',
108108

109109
// DatabaseAdapter
110-
beginTransaction: args.transactionOptions === false ? undefined : beginTransaction,
110+
beginTransaction:
111+
args.transactionOptions === false ? defaultBeginTransaction() : beginTransaction,
111112
commitTransaction,
112113
connect,
113114
convertPathToJSONTraversal,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type { BeginTransaction } from './types.js'
2+
3+
/**
4+
* Default implementation of `beginTransaction` that returns a resolved promise of null
5+
*/
6+
export function defaultBeginTransaction(): BeginTransaction {
7+
const promiseSingleton: Promise<null> = Promise.resolve(null)
8+
return () => promiseSingleton
9+
}

packages/payload/src/database/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ export interface BaseDatabaseAdapter {
99
* Start a transaction, requiring commitTransaction() to be called for any changes to be made.
1010
* @returns an identifier for the transaction or null if one cannot be established
1111
*/
12-
beginTransaction?: BeginTransaction
12+
beginTransaction: BeginTransaction
1313
/**
1414
* Persist the changes made since the start of the transaction.
1515
*/
16-
commitTransaction?: CommitTransaction
16+
commitTransaction: CommitTransaction
1717

1818
/**
1919
* Open the connection to the database
@@ -116,7 +116,7 @@ export interface BaseDatabaseAdapter {
116116
/**
117117
* Abort any changes since the start of the transaction.
118118
*/
119-
rollbackTransaction?: RollbackTransaction
119+
rollbackTransaction: RollbackTransaction
120120
/**
121121
* A key-value store of all sessions open (used for transactions)
122122
*/

packages/payload/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,7 @@ export { sanitizeConfig } from './config/sanitize.js'
751751
export type * from './config/types.js'
752752
export { combineQueries } from './database/combineQueries.js'
753753
export { createDatabaseAdapter } from './database/createDatabaseAdapter.js'
754+
export { defaultBeginTransaction } from './database/defaultBeginTransaction.js'
754755
export { default as flattenWhereToOperators } from './database/flattenWhereToOperators.js'
755756
export { getLocalizedPaths } from './database/getLocalizedPaths.js'
756757
export { createMigration } from './database/migrations/createMigration.js'

packages/payload/src/utilities/initTransaction.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ export async function initTransaction(req: PayloadRequest): Promise<boolean> {
2525

2626
return transactionID
2727
})
28-
await req.transactionID
29-
return !!req.transactionID
28+
return !!(await req.transactionID)
3029
}
3130
return false
3231
}

0 commit comments

Comments
 (0)