mirror of https://github.com/Fabio286/antares.git
fix(SQLite): triggers disappear after editing related table, fixes #523
This commit is contained in:
parent
68f8d48064
commit
d934ae1e6c
|
@ -344,6 +344,20 @@ export class SQLiteClient extends AntaresCore {
|
||||||
|
|
||||||
const tmpName = `Antares_${table}_tmp`;
|
const tmpName = `Antares_${table}_tmp`;
|
||||||
await this.raw(`CREATE TABLE "${tmpName}" AS SELECT * FROM "${table}"`);
|
await this.raw(`CREATE TABLE "${tmpName}" AS SELECT * FROM "${table}"`);
|
||||||
|
|
||||||
|
// Get table triggers before drop
|
||||||
|
const { rows: triggers } = await this.raw(`SELECT * FROM "${schema}".sqlite_master WHERE type='trigger' AND tbl_name = '${table}'`);
|
||||||
|
const remappedTriggers = triggers.map((row) => {
|
||||||
|
return {
|
||||||
|
schema,
|
||||||
|
sql: row.sql.match(/(BEGIN|begin)(.*)(END|end)/gs)[0],
|
||||||
|
name: row.name,
|
||||||
|
table: row.sql.match(/(?<=ON `).*?(?=`)/gs)[0],
|
||||||
|
activation: row.sql.match(/(BEFORE|AFTER)/gs)[0],
|
||||||
|
event: row.sql.match(/(INSERT|UPDATE|DELETE)/gs)[0]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
await this.dropTable(params);
|
await this.dropTable(params);
|
||||||
|
|
||||||
const createTableParams = {
|
const createTableParams = {
|
||||||
|
@ -376,6 +390,11 @@ export class SQLiteClient extends AntaresCore {
|
||||||
await this.raw(`INSERT INTO "${createTableParams.options.name}" (${insertFields.join(',')}) SELECT ${selectFields.join(',')} FROM "${tmpName}"`);
|
await this.raw(`INSERT INTO "${createTableParams.options.name}" (${insertFields.join(',')}) SELECT ${selectFields.join(',')} FROM "${tmpName}"`);
|
||||||
|
|
||||||
await this.dropTable({ schema: schema, table: tmpName });
|
await this.dropTable({ schema: schema, table: tmpName });
|
||||||
|
|
||||||
|
// Recreates triggers
|
||||||
|
for (const trigger of remappedTriggers)
|
||||||
|
await this.createTrigger(trigger);
|
||||||
|
|
||||||
await this.raw('PRAGMA foreign_keys = 1');
|
await this.raw('PRAGMA foreign_keys = 1');
|
||||||
await this.raw('COMMIT');
|
await this.raw('COMMIT');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue