diff --git a/package.json b/package.json index 6cc8753..9578297 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gatewayapps/cradle-template-emitter", - "version": "0.4.0", + "version": "0.5.0", "description": "Cradle emitter for reading Handlebars based template files", "main": "./dist/index.js", "scripts": { @@ -25,7 +25,7 @@ "@gatewayapps/cradle": ">=0.4.0" }, "devDependencies": { - "@gatewayapps/cradle": "^0.4.0", + "@gatewayapps/cradle": "^0.4.2", "@types/fs-extra": "^5.0.4", "@types/handlebars": "^4.0.40", "@types/node": "^10.9.4", diff --git a/src/TemplateEmitter/TemplateEmitter.ts b/src/TemplateEmitter/TemplateEmitter.ts index d312d17..aad2740 100644 --- a/src/TemplateEmitter/TemplateEmitter.ts +++ b/src/TemplateEmitter/TemplateEmitter.ts @@ -114,7 +114,7 @@ export class TemplateEmitter implements ICradleEmitter { public mapDefaultValues(typeName: string, defaultValue: any) { try { - if (!this.dataTypeMappings) { + if (!this.dataTypeMappings) { return defaultValue } return this.dataTypeMappings.convertValue(typeName, defaultValue) @@ -151,6 +151,32 @@ export class TemplateEmitter implements ICradleEmitter { handlebars.registerHelper('toLowerCase', (str) => { return str.toLowerCase() }) + handlebars.registerHelper({ + eq: function (v1, v2) { + return v1 === v2 + }, + ne: function (v1, v2) { + return v1 !== v2 + }, + lt: function (v1, v2) { + return v1 < v2 + }, + gt: function (v1, v2) { + return v1 > v2 + }, + lte: function (v1, v2) { + return v1 <= v2 + }, + gte: function (v1, v2) { + return v1 >= v2 + }, + and: function () { + return Array.prototype.slice.call(arguments).every(Boolean) + }, + or: function () { + return Array.prototype.slice.call(arguments, 0, -1).some(Boolean) + } + }) handlebars.registerHelper('getDistinctObjects', (context, options) => { const got: any = [] diff --git a/src/TemplateEmitter/mappings/sequelize-typescript/mapping.ts b/src/TemplateEmitter/mappings/sequelize-typescript/mapping.ts new file mode 100644 index 0000000..0eaabab --- /dev/null +++ b/src/TemplateEmitter/mappings/sequelize-typescript/mapping.ts @@ -0,0 +1,35 @@ +export const values = { + Boolean: { + + type: 'boolean', + }, + DateTime: { + + type: 'Date', + }, + Decimal: { + + type: 'number' + }, + Integer: { + + type: 'number', + }, + String: { + + type: 'string', + } +} + +export function convertValue(typeName: string, input: any): any { + switch (typeName) { + case 'DateTime': { + if (input === 'DateTimeNow') { + return 'Sequelize.NOW' + } else { + return `new Date('${(input as Date).toISOString()}')` + } + } + default: return input + } +}