
// <%= serviceName %>-model.<%- js %> - A Mongoose model for a user entity
<%- tplTsOnly([`import { App } from '../${subFolderReverse}app.interface'${sc}`, '']) -%>
//
// See http://mongoosejs.com/docs/models.html
// for more of what you can do here.
<%- insertFragment('mongoose_schema', [
  tplImports('mongooseSchema', `../${subFolderReverse}services/${subFolder}${kebabName}/${kebabName}.mongoose`)
]) %>
<%- insertFragment('mongoose_imports') %>
<%- insertFragment('mongoose_init') %>

<%- tplModuleExports(null, 'function (app) {', 'function (app: App) {') %>
  let mongooseClient = app.get('mongooseClient')<%- sc %>
  <%- insertFragment('mongoose_func_init') %>

  <%- insertFragment('mongoose_client', [
    `  const ${camelName} = new mongooseClient.Schema(mongooseSchema, { timestamps: true })${sc}`,
  ]) %>

  let existingModel = mongooseClient.models['<%= camelName %>']<%- sc %> // needed for client/server tests
  let returns = existingModel || mongooseClient.model('<%= camelName %>', <%= camelName %>)<%- sc %>

  <%- insertFragment('mongoose_func_return') %>
  return returns<%- sc %>
}<%- sc %>
<%- insertFragment('mongoose_more') %>

<%- insertFragment('mongoose_exports') %>
<%- `${tplExport('moduleExports')}${sc}` %>

<%- insertFragment('mongoose_funcs') %>
<%- insertFragment('mongoose_end') %>
