@dabblelab/autopilot-core
Version:
Core functionality for the Twilio Autopilot CLI and the Twilio Autopilot Plugin for the Twilio CLI.
98 lines (65 loc) • 2.73 kB
JavaScript
const Assistants = require('./lib/assistants'),
Tasks = require('./lib/tasks'),
FieldTypes = require('./lib/field-types'),
FieldValues = require('./lib/field-values'),
Fields = require('./lib/fields'),
Samples = require('./lib/samples'),
ModelBuilds = require('./lib/model-builds');
const deleteAssistant = async (assistantIdentifier,twilioClient) => {
// Global Variables
let tasks = [];
return await Promise.resolve()
//remove samples and fields
.then( async () => {
tasks = await Tasks.list(twilioClient, assistantIdentifier);
for(let task of tasks){
// task samples
const samples = await Samples.list(twilioClient, assistantIdentifier, task.uniqueName);
for( let sample of samples){
await Samples.remove(twilioClient, assistantIdentifier, task.uniqueName, sample.sid);
}
// task fields
const fields = await Fields.list(twilioClient, assistantIdentifier, task.uniqueName);
for( let field of fields){
await Fields.remove(twilioClient, assistantIdentifier, task.uniqueName, field.uniqueName);
}
}
return assistantIdentifier;
})
//remove field type and its values
.then(async (assistant) => {
const fieldTypes = await FieldTypes.list(twilioClient, assistantIdentifier);
for( let fieldType of fieldTypes){
// field values
const fieldValues = await FieldValues.list(twilioClient, assistantIdentifier, fieldType.uniqueName);
for( let fieldValue of fieldValues){
await FieldValues.remove(twilioClient, assistantIdentifier, fieldType.uniqueName, fieldValue.sid);
}
// field types
await FieldTypes.remove(twilioClient, assistantIdentifier, fieldType.uniqueName);
}
return assistant;
})
//remove tasks and model builds
.then( async (assistant) => {
for( let task of tasks){
await Tasks.remove(twilioClient, assistantIdentifier, task.uniqueName);
}
const modelBuilds = await ModelBuilds.list(twilioClient, assistantIdentifier);
modelBuilds.sort(function(a,b){
return new Date(a.dateCreated) - new Date(b.dateCreated);
});
for(let modelBuild of modelBuilds){
await ModelBuilds.remove(twilioClient, assistantIdentifier, modelBuild.sid);
}
return assistant;
})
//remove assistant
.then(async (assistant) => {
return Assistants.remove(twilioClient, assistantIdentifier);
})
.catch(err => {
throw err;
})
}
module.exports = deleteAssistant;