@@ -150,55 +150,59 @@ export default class PostgresMetaTriggers {
150
150
async update (
151
151
id : number ,
152
152
{
153
- name : newName ,
153
+ name,
154
154
enabled_mode,
155
155
} : {
156
- name : string
157
- enabled_mode : 'ORIGIN' | 'REPLICA' | 'ALWAYS' | 'DISABLED'
156
+ name ? : string
157
+ enabled_mode ? : 'ORIGIN' | 'REPLICA' | 'ALWAYS' | 'DISABLED'
158
158
}
159
159
) : Promise < PostgresMetaResult < PostgresTrigger > > {
160
- const { data : triggerRecord , error } = await this . retrieve ( { id } )
161
-
160
+ const { data : old , error } = await this . retrieve ( { id } )
162
161
if ( error ) {
163
162
return { data : null , error }
164
163
}
165
164
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
185
185
}
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
+ : ''
186
192
187
193
// updateNameSql must be last
188
- const sql = `BEGIN; ${ enabledModeSql } ${ updateNameSql } COMMIT;`
189
-
194
+ const sql = `BEGIN; ${ enabledModeSql } ; ${ nameSql } ; COMMIT;`
190
195
{
191
196
const { error } = await this . query ( sql )
192
197
193
198
if ( error ) {
194
199
return { data : null , error }
195
200
}
196
201
}
197
-
198
202
return await this . retrieve ( { id } )
199
203
}
200
204
201
- async remove ( id : number , { cascade = false } ) : Promise < PostgresMetaResult < PostgresTrigger > > {
205
+ async remove ( id : number , { cascade = false } = { } ) : Promise < PostgresMetaResult < PostgresTrigger > > {
202
206
const { data : triggerRecord , error } = await this . retrieve ( { id } )
203
207
204
208
if ( error ) {
0 commit comments