Skip to content

Commit 6d50d2e

Browse files
committed
fix: don't run name-change SQL when unchanged
Covers /tables & /columns on PATCH.
1 parent f7d66c2 commit 6d50d2e

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

src/api/columns.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ const alterColumnSqlize = ({
168168
comment?: string
169169
}) => {
170170
const nameSql =
171-
name === undefined
171+
typeof name === 'undefined' || name === oldName
172172
? ''
173173
: `ALTER TABLE "${schema}"."${table}" RENAME COLUMN "${oldName}" TO "${name}";`
174174
const typeSql =

src/api/tables.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,10 @@ router.patch('/:id', async (req, res) => {
8484
let previousTable: Tables.Table = getTableResults[0]
8585

8686
// Update fields and name
87-
const nameSql = !name ? '' : alterTableName(previousTable.name, name, previousTable.schema)
87+
const nameSql =
88+
typeof name === 'undefined' || name === previousTable.name
89+
? ''
90+
: alterTableName(previousTable.name, name, previousTable.schema)
8891
if (!name) payload.name = previousTable.name
8992
const alterSql = alterTableSql(payload)
9093
const transaction = toTransaction([nameSql, alterSql])

test/integration/index.spec.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,16 @@ describe('/tables', async () => {
262262
assert.equal(updatedTable.comment, 'foo')
263263
await axios.delete(`${URL}/tables/${newTable.id}`)
264264
})
265+
it('PATCH /tables same name', async () => {
266+
const { data: newTable } = await axios.post(`${URL}/tables`, {
267+
name: 'test',
268+
})
269+
let { data: updatedTable } = await axios.patch(`${URL}/tables/${newTable.id}`, {
270+
name: 'test',
271+
})
272+
assert.equal(updatedTable.name, `test`)
273+
await axios.delete(`${URL}/tables/${newTable.id}`)
274+
})
265275
it('DELETE /tables', async () => {
266276
const { data: newTable } = await axios.post(`${URL}/tables`, { name: 'test' })
267277

@@ -326,6 +336,23 @@ describe('/tables', async () => {
326336
await axios.delete(`${URL}/columns/${newTable.id}.1`)
327337
await axios.delete(`${URL}/tables/${newTable.id}`)
328338
})
339+
it('PATCH /columns same name', async () => {
340+
const { data: newTable } = await axios.post(`${URL}/tables`, { name: 'foo' })
341+
await axios.post(`${URL}/columns`, {
342+
table_id: newTable.id,
343+
name: 'bar',
344+
type: 'int2',
345+
})
346+
347+
const { data: updatedColumn } = await axios.patch(`${URL}/columns/${newTable.id}.1`, {
348+
name: 'bar',
349+
})
350+
351+
assert.equal(updatedColumn.name, 'bar')
352+
353+
await axios.delete(`${URL}/columns/${newTable.id}.1`)
354+
await axios.delete(`${URL}/tables/${newTable.id}`)
355+
})
329356
it('DELETE /columns', async () => {
330357
const { data: newTable } = await axios.post(`${URL}/tables`, { name: 'foo bar' })
331358
await axios.post(`${URL}/columns`, { table_id: newTable.id, name: 'foo bar', type: 'int2' })

0 commit comments

Comments
 (0)