Skip to content

Commit

Permalink
schema mode should run through shouldEmit as well
Browse files Browse the repository at this point in the history
  • Loading branch information
johnmurphy01 committed Oct 3, 2018
1 parent d555da2 commit 1a9defb
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 23 deletions.
35 changes: 14 additions & 21 deletions examples/cradle.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,28 @@ const cradle = require('@gatewayapps/cradle')
const path = require('path')

const loaderOptions = new cradle.LoaderOptions('spec', {
source: 'D:\\Source\\Repos\\rubicon-erp\\src\\cradle\\specs\\spec-base.yml'
source: './examples/specs/cradle-base.yaml'
}, console)

const emitterOpts = [
new cradle.EmitterOptions('serverModels', path.resolve(__dirname, '../dist/index.js'), {
sourcePath: 'D:\\Source\\Repos\\rubicon-erp\\src\\cradle\\templates\\serverModel.handlebars',
outputPath: 'D:\\Source\\Repos\\rubicon-erp\\src\\server\\models\\{{Name}}.ts',
overwriteExisting: true,
languageType: 'mongoose',
ignoreEmit: (model) => {
return model.Meta === undefined || (model.Meta && !model.Meta.topLevel)
}
}, console),
new cradle.EmitterOptions('serverServiceBase', path.resolve(__dirname, '../dist/index.js'), {
sourcePath: 'D:\\Source\\Repos\\rubicon-erp\\src\\cradle\\templates\\serverServiceBase.handlebars',
outputPath: 'D:\\Source\\Repos\\rubicon-erp\\src\\server\\services\\{{Name}}ServiceBase.ts',
new cradle.EmitterOptions('schemaTest', path.resolve(__dirname, '../dist/index.js'), {
sourcePath: './examples/templates/schemaTest.handlebars',
outputPath: './examples/server/test/schemaTest.ts',
overwriteExisting: true,
ignoreEmit: (model) => {
return model.Meta === undefined || (model.Meta && !model.Meta.topLevel)
mode: 'schema',
shouldEmit: (model) => {
return model.Meta !== undefined && model.Meta.topLevel
}
}, console),
new cradle.EmitterOptions('serverServices', path.resolve(__dirname, '../dist/index.js'), {
sourcePath: 'D:\\Source\\Repos\\rubicon-erp\\src\\cradle\\templates\\serverService.handlebars',
outputPath: 'D:\\Source\\Repos\\rubicon-erp\\src\\server\\services\\{{Name}}Service.ts',
new cradle.EmitterOptions('serverModels', path.resolve(__dirname, '../dist/index.js'), {
sourcePath: './examples/templates/serverModel.handlebars',
outputPath: './examples/server/models/{{Name}}.ts',
overwriteExisting: true,
ignoreEmit: (model) => {
return model.Meta === undefined || (model.Meta && !model.Meta.topLevel)
languageType: 'mongoose',
shouldEmit: (model) => {
return model.Meta !== undefined && model.Meta.topLevel
}
}, console),
}, console)
]

module.exports = new cradle.CradleConfig(loaderOptions, emitterOpts)
2 changes: 2 additions & 0 deletions examples/specs/ActivityFeedItem.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
ActivityFeedItem:
meta:
topLevel: true
properties:
dateCreated: integer
id: string
Expand Down
2 changes: 2 additions & 0 deletions examples/specs/Address.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Address:
meta:
topLevel: true
properties:
addressIndex: integer
attention: string
Expand Down
2 changes: 2 additions & 0 deletions examples/specs/Assignment.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Assignment:
meta:
topLevel: true
properties:
assignedTo:
isArray: true
Expand Down
3 changes: 3 additions & 0 deletions examples/templates/schemaTest.handlebars
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{{#each Models as |model|}}
import { {{model.Name}}Route } from './routes/{{model.Name}}Route'
{{/each}}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gatewayapps/cradle-template-emitter",
"version": "0.1.5",
"version": "0.1.6",
"description": "Cradle emitter for reading Handlebars based template files",
"main": "./dist/index.js",
"scripts": {
Expand Down
16 changes: 15 additions & 1 deletion src/TemplateEmitter/TemplateEmitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,21 @@ export class TemplateEmitter implements ICradleEmitter {
}

private doEmitSchema(schema: CradleSchema, fn: (any) => any, outputFileFn: (any) => any) {
const content = fn(schema)
let models: any = []
models = schema.Models.filter((m) => {
if (this.config && this.config.options.shouldEmit && {}.toString.call(this.config.options.shouldEmit) === '[object Function]') {
const shouldEmit = this.config.options.shouldEmit(m)
if (shouldEmit) {
return m
}
} else {
return m
}
})

const s = new CradleSchema(models)
const content = fn(s)

const outputFullPath = path.resolve(process.cwd(), outputFileFn({}))
const outDir = path.dirname(outputFullPath)
fs.ensureDir(outDir).then(() => {
Expand Down

0 comments on commit 1a9defb

Please sign in to comment.