refs #4823 Now deletes ghost connections

This commit is contained in:
Guillermo Bonet 2023-05-16 14:12:34 +02:00
parent 888bbb024f
commit 2f2428795f
2 changed files with 41 additions and 38 deletions

View File

@ -14,7 +14,7 @@ class Floriday {
if (JSON.parse(env.SYNC_SEQUENCE)) await utils.syncSequence(); if (JSON.parse(env.SYNC_SEQUENCE)) await utils.syncSequence();
if (JSON.parse(env.SYNC_SUPPLIER)) await utils.syncSuppliers(); if (JSON.parse(env.SYNC_SUPPLIER)) await utils.syncSuppliers();
if (JSON.parse(env.SYNC_WAREHOUSE)) await utils.syncWarehouses(); if (JSON.parse(env.SYNC_WAREHOUSE)) await utils.syncWarehouses();
if (JSON.parse(env.SYNC_CONN)) await utils.syncConn(); if (JSON.parse(env.SYNC_CONN)) await utils.syncConnections();
if (JSON.parse(env.SYNC_TRADEITEM)) await utils.syncTradeItems(); if (JSON.parse(env.SYNC_TRADEITEM)) await utils.syncTradeItems();
} catch (err) { } catch (err) {
utils.criticalError(err); utils.criticalError(err);
@ -66,7 +66,6 @@ class Floriday {
async stop() { async stop() {
this.continueSchedule = false; this.continueSchedule = false;
await utils.deleteConnections();
await closeConn(); await closeConn();
console.warn(chalk.dim('Bye, come back soon 👋')) console.warn(chalk.dim('Bye, come back soon 👋'))
} }

View File

@ -245,9 +245,7 @@ export async function syncSequence(current = 0, model = null , maximumSequenceNu
transaction: tx transaction: tx
}); });
} }
await tx.commit(); await tx.commit();
} catch (error) { } catch (error) {
await tx.rollback(); await tx.rollback();
console.log(`Error while syncing sequence number for: ${model}: ${error}`); console.log(`Error while syncing sequence number for: ${model}: ${error}`);
@ -302,7 +300,11 @@ export async function syncSuppliers(){
} }
} }
export async function syncConn(){ /**
* Sync the connections in Floriday
*/
export async function syncConnections(){
await deleteConnections();
const spinner = ora(`Creating connections...`).start(); const spinner = ora(`Creating connections...`).start();
try { try {
let connections = await models.connection.findAll(); let connections = await models.connection.findAll();
@ -310,41 +312,29 @@ export async function syncConn(){
let headers = { let headers = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Authorization': `Bearer ${await getCurrentToken()}`, 'Authorization': `Bearer ${await getCurrentToken()}`,
'X-Api-Key': process.env.API_KEY 'X-Api-Key': process.env.API_KEY,
}; };
const remoteConnections = (await vnRequest('GET', `${env.API_URL}/connections`, null, headers)).data; const remoteConnections = (await vnRequest('GET', `${env.API_URL}/connections`, null, headers)).data;
let i = 1; let i = 1;
for (let connection of connections){ for (let connection of connections) {
spinner.text = `Creating ${i++} of ${connections.length} connections...` spinner.text = `Creating ${i++} of ${connections.length} connections...`
let remoteConnection = remoteConnections.find(remoteConnection => remoteConnection == connection.supplierOrganizationId); let remoteConnection = remoteConnections.find(remoteConnection => remoteConnection == connection.supplierOrganizationId);
if (!remoteConnection){ if (!remoteConnection)
await vnRequest('PUT', `${env.API_URL}/connections/${connection.supplierOrganizationId}`, null, headers); await vnRequest('PUT', `${env.API_URL}/connections/${connection.supplierOrganizationId}`, null, headers);
await models.connection.update({ isConnected: true }, { await models.connection.update({isConnected: true }, {
where: { where: {
supplierOrganizationId: connection.supplierOrganizationId supplierOrganizationId: connection.supplierOrganizationId
} }
}); });
await models.supplier.update({ isConnected: true }, { await models.supplier.update({ isConnected: true }, {
where: { where: {
supplierOrganizationId: connection.supplierOrganizationId supplierOrganizationId: connection.supplierOrganizationId
} }
}); });
} else {
await models.connection.update({ isConnected: true }, {
where: {
supplierOrganizationId: connection.supplierOrganizationId
}
});
await models.supplier.update({ isConnected: true }, {
where: {
supplierOrganizationId: connection.supplierOrganizationId
}
});
}
} }
spinner.succeed(); spinner.succeed();
} catch (err) { } catch (err) {
@ -719,26 +709,40 @@ export async function syncWarehouses(){
} }
/** /**
* Deletes the connections in Floriday * Removes Floriday connections that we don't have in the database
**/ **/
export async function deleteConnections() { export async function deleteConnections() {
const spinner = ora(`Deleting connections...`).start(); const spinner = ora(`Deleting connections that aren't in the db...`).start();
try { try {
let i = 1; let i = 1;
let headers = { const headers = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Authorization': `Bearer ${await getCurrentToken()}`, 'Authorization': `Bearer ${await getCurrentToken()}`,
'X-Api-Key': process.env.API_KEY 'X-Api-Key': process.env.API_KEY
}; };
let connections = (await vnRequest('GET', `${env.API_URL}/connections`, null, headers)).data;
for (let connection of connections) { const connectionsInFloriday = (await vnRequest('GET', `${env.API_URL}/connections`, null, headers)).data;
const connectionsInDb = await models.connection.findAll();
let isExists = false, ghostConnections = [];
for (let connectionInFloriday of connectionsInFloriday) {
for (let connectionInDb of connectionsInDb)
if (connectionInFloriday == connectionInDb.supplierOrganizationId) {
isExists = true;
break;
}
if (!isExists) ghostConnections.push(connectionInFloriday)
isExists = false;
}
for (let connection of ghostConnections) {
await vnRequest('DELETE', `${env.API_URL}/connections/${connection}`, null, headers); await vnRequest('DELETE', `${env.API_URL}/connections/${connection}`, null, headers);
spinner.text = `Deleting ${i++} connections...` spinner.text = `Deleting ${i++} of ${ghostConnections.length} that aren't in the db...`
} }
spinner.succeed(); spinner.succeed();
} catch (err) { } catch (err) {
spinner.fail(); spinner.fail();
util.criticalError(err); criticalError(err);
} }
} }