* Purge playbooks data when the plugin gets disabled
* Address copilot comments
(cherry picked from commit b925baa21b)
Co-authored-by: Daniel Espino García <larkox@gmail.com>
This commit is contained in:
parent
46ca08b939
commit
db38aabd14
2 changed files with 77 additions and 0 deletions
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
import {SYSTEM_IDENTIFIERS} from '@constants/database';
|
||||
import DatabaseManager from '@database/manager';
|
||||
import {PLAYBOOK_TABLES} from '@playbooks/constants/database';
|
||||
import {querySystemValue} from '@queries/servers/system';
|
||||
|
||||
import {setPlaybooksVersion} from './version';
|
||||
|
|
@ -46,4 +47,53 @@ describe('setPlaybooksVersion', () => {
|
|||
expect(error).toBeTruthy();
|
||||
operator.handleSystem = originalHandleSystem;
|
||||
});
|
||||
|
||||
it('should purge playbooks when version is empty', async () => {
|
||||
const database = operator.database;
|
||||
jest.spyOn(database.adapter, 'unsafeExecute').mockImplementation(() => {
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
const {data, error} = await setPlaybooksVersion(serverUrl, '');
|
||||
expect(error).toBeUndefined();
|
||||
expect(data).toBe(true);
|
||||
|
||||
expect(database.adapter.unsafeExecute).toHaveBeenCalledWith({
|
||||
sqls: [
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_RUN}`, []],
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_CHECKLIST}`, []],
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_CHECKLIST_ITEM}`, []],
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
it('should not purge playbooks when version is not empty', async () => {
|
||||
const database = operator.database;
|
||||
jest.spyOn(database.adapter, 'unsafeExecute').mockImplementation(() => {
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
const {data, error} = await setPlaybooksVersion(serverUrl, '1.2.3');
|
||||
expect(error).toBeUndefined();
|
||||
expect(data).toBe(true);
|
||||
|
||||
expect(database.adapter.unsafeExecute).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle purge playbooks errors', async () => {
|
||||
const database = operator.database;
|
||||
jest.spyOn(database.adapter, 'unsafeExecute').mockImplementation(() => {
|
||||
return Promise.reject(new Error('fail'));
|
||||
});
|
||||
|
||||
const {error} = await setPlaybooksVersion(serverUrl, '');
|
||||
expect(error).toBeTruthy();
|
||||
expect(database.adapter.unsafeExecute).toHaveBeenCalledWith({
|
||||
sqls: [
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_RUN}`, []],
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_CHECKLIST}`, []],
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_CHECKLIST_ITEM}`, []],
|
||||
],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
import {SYSTEM_IDENTIFIERS} from '@constants/database';
|
||||
import DatabaseManager from '@database/manager';
|
||||
import {PLAYBOOK_TABLES} from '@playbooks/constants/database';
|
||||
|
||||
export const setPlaybooksVersion = async (serverUrl: string, version: string) => {
|
||||
try {
|
||||
|
|
@ -15,8 +16,34 @@ export const setPlaybooksVersion = async (serverUrl: string, version: string) =>
|
|||
prepareRecordsOnly: false,
|
||||
});
|
||||
|
||||
if (version === '') {
|
||||
const {error} = await purgePlaybooks(serverUrl);
|
||||
if (error) {
|
||||
return {error};
|
||||
}
|
||||
}
|
||||
|
||||
return {data: true};
|
||||
} catch (error) {
|
||||
return {error};
|
||||
}
|
||||
};
|
||||
|
||||
const purgePlaybooks = async (serverUrl: string) => {
|
||||
try {
|
||||
const {database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
|
||||
await database.write(() => {
|
||||
return database.adapter.unsafeExecute({
|
||||
sqls: [
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_RUN}`, []],
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_CHECKLIST}`, []],
|
||||
[`DELETE FROM ${PLAYBOOK_TABLES.PLAYBOOK_CHECKLIST_ITEM}`, []],
|
||||
],
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
return {error};
|
||||
}
|
||||
|
||||
return {data: true};
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue