8000 fix(lib/triggers): make fields optional for update · gustavoarmoa/postgres-meta@287b74e · GitHub
[go: up one dir, main page]

Skip to content

Commit 287b74e

Browse files
committed
fix(lib/triggers): make fields optional for update
Also some refactors.
1 parent 6b4d256 commit 287b74e

File tree

1 file changed

+32
-28
lines changed

1 file changed

+32
-28
lines changed

src/lib/PostgresMetaTriggers.ts

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -150,55 +150,59 @@ export default class PostgresMetaTriggers {
150150
async update(
151151
id: number,
152152
{
153-
name: newName,
153+
name,
154154
enabled_mode,
155155
}: {
156-
name: string
157-
enabled_mode: 'ORIGIN' | 'REPLICA' | 'ALWAYS' | 'DISABLED'
156+
name?: string
157+
enabled_mode?: 'ORIGIN' | 'REPLICA' | 'ALWAYS' | 'DISABLED'
158158
}
159159
): Promise<PostgresMetaResult<PostgresTrigger>> {
160-
const { data: triggerRecord, error } = await this.retrieve({ id })
161-
160+
const { data: old, error } = await this.retrieve({ id })
162161
if (error) {
163162
return { data: null, error }
164163
}
165164

166-
let enabledModeSql
167-
const enabledMode = enabled_mode.toUpperCase()
168-
const { name: currentName, schema: schema, table: table } = triggerRecord< 10000 /span>!
169-
const qualifiedTableName = `${ident(schema)}.${ident(table)}`
170-
const updateNameSql =
171-
newName && newName !== currentName
172-
? `ALTER TRIGGER ${ident(currentName)} ON ${qualifiedTableName} RENAME TO ${ident(
173-
newName
174-
)};`
175-
: ''
176-
177-
if (['ORIGIN', 'REPLICA', 'ALWAYS', 'DISABLED'].includes(enabledMode)) {
178-
if (enabledMode === 'DISABLED') {
179-
enabledModeSql = `ALTER TABLE ${qualifiedTableName} DISABLE TRIGGER ${ident(currentName)};`
180-
} else {
181-
enabledModeSql = `ALTER TABLE ${qualifiedTableName} ENABLE ${
182-
['REPLICA', 'ALWAYS'].includes(enabledMode) ? enabledMode : ''
183-
} TRIGGER ${ident(currentName)};`
184-
}
165+
let enabledModeSql = ''
166+
switch (enabled_mode) {
167+
case 'ORIGIN':
168+
enabledModeSql = `ALTER TABLE ${ident(old!.schema)}.${ident(
169+
old!.table
170+
)} ENABLE TRIGGER ${ident(old!.name)};`
171+
break
172+
case 'DISABLED':
173+
enabledModeSql = `ALTER TABLE ${ident(old!.schema)}.${ident(
174+
old!.table
175+
)} DISABLE TRIGGER ${ident(old!.name)};`
176+
break
177+
case 'REPLICA':
178+
case 'ALWAYS':
179+
enabledModeSql = `ALTER TABLE ${ident(old!.schema)}.${ident(
180+
old!.table
181+
)} ENABLE ${enabled_mode} TRIGGER ${ident(old!.name)};`
182+
break
183+
default:
184+
break
185185
}
186+
const nameSql =
187+
name && name !== old!.name
188+
? `ALTER TRIGGER ${ident(old!.name)} ON ${ident(old!.schema)}.${ident(
189+
old!.table
190+
)} RENAME TO ${ident(name)};`
191+
: ''
186192

187193
// updateNameSql must be last
188-
const sql = `BEGIN; ${enabledModeSql} ${updateNameSql} COMMIT;`
189-
194+
const sql = `BEGIN; ${enabledModeSql}; ${nameSql}; COMMIT;`
190195
{
191196
const { error } = await this.query(sql)
192197

193198
if (error) {
194199
return { data: null, error }
195200
}
196201
}
197-
198202
return await this.retrieve({ id })
199203
}
200204

201-
async remove(id: number, { cascade = false }): Promise<PostgresMetaResult<PostgresTrigger>> {
205+
async remove(id: number, { cascade = false } = {}): Promise<PostgresMetaResult<PostgresTrigger>> {
202206
const { data: triggerRecord, error } = await this.retrieve({ id })
203207

204208
if (error) {

0 commit comments

Comments
 (0)
0