Skip to content

Commit ff98ade

Browse files
committed
chore: wrap create table in a transaction
1 parent db66757 commit ff98ade

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

packages/backend/src/graphql/mutations/tiles/create-table.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import TableMetadata from '@/models/table-metadata'
12
import { getTableOperations } from '@/models/tiles/factory'
23

34
import type { MutationResolvers } from '../../__generated__/types.generated'
@@ -35,18 +36,23 @@ const createTable: MutationResolvers['createTable'] = async (
3536

3637
const tableOperations = getTableOperations(databaseType)
3738

38-
// TODO: should i wrap this in a transaction?
39-
const table = await context.currentUser.$relatedQuery('tables').insertGraph({
40-
name: tableName,
41-
role: 'owner',
42-
db: databaseType,
43-
columns: isBlankTable ? [] : PLACEHOLDER_COLUMNS,
44-
})
39+
const table = await TableMetadata.transaction(async (trx) => {
40+
const pendingTable = await context.currentUser
41+
.$relatedQuery('tables', trx)
42+
.insertGraph({
43+
name: tableName,
44+
role: 'owner',
45+
db: databaseType,
46+
columns: isBlankTable ? [] : PLACEHOLDER_COLUMNS,
47+
})
4548

46-
await tableOperations.createTable(
47-
table.id,
48-
isBlankTable ? [] : table.columns.map((column) => column.id),
49-
)
49+
await tableOperations.createTable(
50+
pendingTable.id,
51+
isBlankTable ? [] : pendingTable.columns.map((column) => column.id),
52+
)
53+
54+
return pendingTable
55+
})
5056

5157
if (!isBlankTable) {
5258
await tableOperations.createTableRows({

packages/backend/src/models/table-column-metadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class TableColumnMetadata extends Base {
3232
modelClass: TableMetadata,
3333
join: {
3434
from: `${this.tableName}.table_id`,
35-
to: `${TableColumnMetadata.tableName}.id`,
35+
to: `${TableMetadata.tableName}.id`,
3636
},
3737
},
3838
})

0 commit comments

Comments
 (0)