Skip to content

Commit

Permalink
Refactored bootstrap of a few services to remove unresolved promises …
Browse files Browse the repository at this point in the history
…so that we no longer get warnings about them. (#2093)
  • Loading branch information
andrewbrazzatti authored Apr 17, 2024
1 parent 9773f67 commit e175545
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 149 deletions.
10 changes: 5 additions & 5 deletions config/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@
sails.log.verbose("Pathrules service, bootstrapped.");
let pathRulesBootstrapResult = await sails.services.pathrulesservice.bootstrap(defUserAndDefRoles.defUser, defUserAndDefRoles.defRoles).toPromise();
sails.log.verbose("Record types service, bootstrapped.");
let recordsTypes = await sails.services.recordtypesservice.bootstrap(sails.services.brandingservice.getDefault()).toPromise();
let recordsTypes = await sails.services.recordtypesservice.bootstrap(sails.services.brandingservice.getDefault());
sails.log.verbose("Workflowsteps service, bootstrapped.");
let dashboardTypes = await sails.services.dashboardtypesservice.bootstrap(sails.services.brandingservice.getDefault()).toPromise();
let dashboardTypes = await sails.services.dashboardtypesservice.bootstrap(sails.services.brandingservice.getDefault());
sails.log.verbose("DashboardTypes service, bootstrapped.");
let workflowSteps = await sails.services.workflowstepsservice.bootstrap(recordsTypes).toPromise();
let workflowSteps = await sails.services.workflowstepsservice.bootstrap(recordsTypes);
sails.log.verbose("Workflowsteps service, bootstrapped.");
if (_.isArray(workflowSteps)) {

for (let workflowStep of workflowSteps) {
await sails.services.formsservice.bootstrap(workflowStep).toPromise();
await sails.services.formsservice.bootstrap(workflowStep);
}
} else {
await sails.services.formsservice.bootstrap(workflowSteps).toPromise();
await sails.services.formsservice.bootstrap(workflowSteps);
}


Expand Down
32 changes: 16 additions & 16 deletions typescript/api/services/DashboardTypesService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,33 +41,33 @@ export module Services {

protected dashboardTypes;

public bootstrap = (defBrand) => {
let startQ = DashboardType.find({branding:defBrand.id});
public async bootstrap(defBrand):Promise<any> {
let dashboardTypes = await DashboardType.find({branding:defBrand.id});
if (sails.config.appmode.bootstrapAlways) {
startQ = DashboardType.destroy({branding:defBrand.id});
await DashboardType.destroy({branding:defBrand.id});
dashboardTypes = [];
}
return super.getObservable(startQ).flatMap(dashboardTypes => {
if (_.isUndefined(dashboardTypes)) {
dashboardTypes = [];
}

// if (_.isUndefined(dashboardTypes)) {
// dashboardTypes = [];
// }
sails.log.verbose(`DashboardTypes found: ${dashboardTypes} and boostrapAlways set to: ${sails.config.appmode.bootstrapAlways}`);
if (_.isEmpty(dashboardTypes)) {
var dashTypes = [];
sails.log.verbose("Bootstrapping DashboardTypes definitions... ");
_.forOwn(sails.config.dashboardtype, (config, dashboardType) => {
for(let dashboardType in sails.config.dashboardtype) {
dashboardTypes.push(dashboardType);
var obs = this.create(defBrand, dashboardType, config);
dashTypes.push(obs);
});
let config = sails.config.dashboardtype[dashboardType];
var createdDashboardType = await this.create(defBrand, dashboardType, config).toPromise();
dashTypes.push(createdDashboardType);
};
this.dashboardTypes = dashboardTypes;
return Observable.zip(...dashTypes);
} else {
return dashTypes;
}
sails.log.verbose("Default DashboardTypes definition(s) exist.");
sails.log.verbose(JSON.stringify(dashboardTypes));
this.dashboardTypes = dashboardTypes;
return Observable.of(dashboardTypes);
}
});
return dashboardTypes
}

public create(brand, name, config) {
Expand Down
176 changes: 82 additions & 94 deletions typescript/api/services/FormsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import {
Observable
} from 'rxjs/Rx';
import {Services as services} from '@researchdatabox/redbox-core-types';
import { Services as services } from '@researchdatabox/redbox-core-types';
import {
Sails,
Model
Expand Down Expand Up @@ -51,113 +51,101 @@ export module Services {
'listForms'
];

public bootstrap = (workflowStep): Observable < any > => {
let startQ = Form.find({
public async bootstrap(workflowStep): Promise<any> {
let form = await Form.find({
workflowStep: workflowStep.id
})
if (sails.config.appmode.bootstrapAlways) {
sails.log.verbose(`Destroying existing form definitions: ${workflowStep.config.form}`);
startQ = Form.destroy({
await Form.destroyOne({
name: workflowStep.config.form
})
form = null;
}
let formDefs = [];
return super.getObservable(startQ)
.flatMap(form => {
sails.log.verbose("Found : ");
sails.log.verbose(form);
if (!form || form.length == 0) {
sails.log.verbose("Bootstrapping form definitions..");
// only bootstrap the form for this workflow step
_.forOwn(sails.config.form.forms, (formDef, formName) => {
if (formName == workflowStep.config.form) {
formDefs.push(formName);
}
});
formDefs = _.uniq(formDefs)
sails.log.verbose(JSON.stringify(formDefs));
return Observable.from(formDefs);
} else {
sails.log.verbose("Not Bootstrapping form definitions... ");
return Observable.of(null);
let formName = null;
sails.log.verbose("Found : ");
sails.log.verbose(form);
if (!form || form.length == 0) {
sails.log.verbose("Bootstrapping form definitions..");
// only bootstrap the form for this workflow step
_.forOwn(sails.config.form.forms, (formDef, formName) => {
if (formName == workflowStep.config.form) {
formDefs.push(formName);
}
})
.flatMap(formName => {
// check now if the form already exists, if it does, ignore...
return this.getObservable(Form.find({
name: formName
})).flatMap(existingFormDef => {
return Observable.of({
formName: formName,
existingFormDef: existingFormDef
});
});
})
.flatMap(existCheck => {
sails.log.verbose(`Existing form check: ${existCheck.formName}`);
sails.log.verbose(JSON.stringify(existCheck));
if (_.isUndefined(existCheck.existingFormDef) || _.isEmpty(existCheck.existingFormDef)) {
return Observable.of(existCheck.formName);
} else {
sails.log.verbose(`Existing form definition for form name: ${existCheck.existingFormDef.name}, ignoring bootstrap.`);
return Observable.of(null);
}
})
.flatMap(formName => {
sails.log.verbose("FormName is:");
sails.log.verbose(formName);
let observable = Observable.of(null);
if (!_.isNull(formName)) {
sails.log.verbose(`Preparing to create form...`);
const formObj = {
name: formName,
fields: sails.config.form.forms[formName].fields,
workflowStep: workflowStep.id,
type: sails.config.form.forms[formName].type,
messages: sails.config.form.forms[formName].messages,
viewCssClasses: sails.config.form.forms[formName].viewCssClasses,
requiredFieldIndicator: sails.config.form.forms[formName].requiredFieldIndicator,
editCssClasses: sails.config.form.forms[formName].editCssClasses,
skipValidationOnSave: sails.config.form.forms[formName].skipValidationOnSave,
attachmentFields: sails.config.form.forms[formName].attachmentFields,
customAngularApp: sails.config.form.forms[formName].customAngularApp || null
};

var q = Form.create(formObj);
observable = Observable.bindCallback(q["exec"].bind(q))();
// var obs = Observable.bindCallback(q["exec"].bind(q))();
}
return observable;
})
.flatMap(result => {
if (result) {
sails.log.verbose("Created form record: ");
sails.log.verbose(result);
return Observable.from(result);
}
return Observable.of(result);
}).flatMap(result => {
if (result) {
sails.log.verbose(`Updating workflowstep ${result.workflowStep} to: ${result.id}`);
// update the workflow step...
const q = WorkflowStep.update({
id: result.workflowStep
}).set({
form: result.id
});
return Observable.bindCallback(q["exec"].bind(q))();
}
return Observable.of(null);
});
formDefs = _.uniq(formDefs)
sails.log.verbose(JSON.stringify(formDefs));
if(_.isArray(formDefs)) {
formDefs = formDefs[0]
}
formName = formDefs;
} else {
sails.log.verbose("Not Bootstrapping form definitions... ");

}
// check now if the form already exists, if it does, ignore...
const existingFormDef = await Form.find({
name: formName
})
let existCheck = {
formName: formName,
existingFormDef: existingFormDef
};

sails.log.verbose(`Existing form check: ${existCheck.formName}`);
sails.log.verbose(JSON.stringify(existCheck));
formName = null;
if (_.isUndefined(existCheck.existingFormDef) || _.isEmpty(existCheck.existingFormDef)) {
formName = existCheck.formName
} else {
sails.log.verbose(`Existing form definition for form name: ${existCheck.existingFormDef.name}, ignoring bootstrap.`);
}


sails.log.verbose("FormName is:");
sails.log.verbose(formName);
let result = null;
if (!_.isNull(formName)) {
sails.log.verbose(`Preparing to create form...`);
const formObj = {
name: formName,
fields: sails.config.form.forms[formName].fields,
workflowStep: workflowStep.id,
type: sails.config.form.forms[formName].type,
messages: sails.config.form.forms[formName].messages,
viewCssClasses: sails.config.form.forms[formName].viewCssClasses,
requiredFieldIndicator: sails.config.form.forms[formName].requiredFieldIndicator,
editCssClasses: sails.config.form.forms[formName].editCssClasses,
skipValidationOnSave: sails.config.form.forms[formName].skipValidationOnSave,
attachmentFields: sails.config.form.forms[formName].attachmentFields,
customAngularApp: sails.config.form.forms[formName].customAngularApp || null
};

result = await Form.create(formObj);
sails.log.verbose("Created form record: ");
sails.log.verbose(result);
}

if (result) {
sails.log.verbose(`Updating workflowstep ${result.workflowStep} to: ${result.id}`);
// update the workflow step...
return await WorkflowStep.update({
id: result.workflowStep
}).set({
form: result.id
});
}

return null;
}

public listForms = (): Observable < any > => {
public listForms = (): Observable<any> => {
return super.getObservable(Form.find({}));
}


public getFormByName = (formName, editMode): Observable < any > => {
public getFormByName = (formName, editMode): Observable<any> => {
return super.getObservable(Form.findOne({
name: formName
})).flatMap(form => {
Expand All @@ -169,11 +157,11 @@ export module Services {
});
}

public getForm = (branding, recordType, editMode, starting: boolean): Observable < any > => {
public getForm = (branding, recordType, editMode, starting: boolean): Observable<any> => {

return super.getObservable(RecordType.findOne({
key: branding + "_" + recordType
}))
key: branding + "_" + recordType
}))
.flatMap(recordType => {

return super.getObservable(WorkflowStep.findOne({
Expand Down
34 changes: 19 additions & 15 deletions typescript/api/services/RecordTypesService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,33 +45,37 @@ export module Services {

protected recordTypes;

public bootstrap = (defBrand) => {
let startQ = RecordType.find({branding:defBrand.id});
public async bootstrap (defBrand):Promise<any> {
let recordTypes = await RecordType.find({branding:defBrand.id});
if (sails.config.appmode.bootstrapAlways) {
startQ = RecordType.destroy({branding:defBrand.id});
await RecordType.destroy({branding:defBrand.id});
recordTypes = null;
}
return super.getObservable(startQ).flatMap(recordTypes => {
if (_.isUndefined(recordTypes)) {
recordTypes = [];
}
sails.log.debug(`RecordTypes found: ${recordTypes} and boostrapAlways set to: ${sails.config.appmode.bootstrapAlways}`);
if (_.isEmpty(recordTypes)) {
var rTypes = [];
// var rTypesObs = [];
sails.log.verbose("Bootstrapping record type definitions... ");
_.forOwn(sails.config.recordtype, (config, recordType) => {
recordTypes.push(recordType);
var obs = this.create(defBrand, recordType, config);
rTypes.push(obs);
});
// _.forOwn(sails.config.recordtype, (config, recordType) => {
// recordTypes.push(recordType);
// var obs = this.create(defBrand, recordType, config);
// rTypesObs.push(obs);
// });

this.recordTypes = recordTypes;
return Observable.zip(...rTypes);
} else {
let rTypes = [];
for(let recordType in sails.config.recordtype) {
let config = sails.config.recordtype[recordType];
rTypes.push(await this.create(defBrand, recordType, config).toPromise())
}
return rTypes;
}
sails.log.verbose("Default recordTypes definition(s) exist.");
sails.log.verbose(JSON.stringify(recordTypes));
this.recordTypes = recordTypes;
return Observable.of(recordTypes);
}
});
return recordTypes;
}

public create(brand, name, config) {
Expand Down
Loading

0 comments on commit e175545

Please sign in to comment.