/** @property modelName @public @return {String} */ static get modelName () { // TODO: harden interface and test const routeName = this.name.toLowerCase() return singularize(routeName.replace('route', '')) }
const modelFileName = name => singularize(Case.kebab(name))
const modelTable = ({ name, snake, singularTableNames }) => { const casedName = snake ? Case.snake(name) : Case.camel(name) return singularTableNames ? singularize(casedName) : pluralize(casedName) }
/** Model name matching filename (not classname) Used throughout Ash to reference the model Example: For a model class named `MyPostModel` or `MyPostsModel`, `modelName` will be `my-post` @property modelName @static @public @return {string} model name */ static get modelName () { const nameWithoutModel = this.name.replace('Model', '') const nameUnderscored = underscore(nameWithoutModel) const nameDasherized = dasherize(nameUnderscored) return singularize(nameDasherized) }
const modelVar = name => singularize(Case.pascal(name))
const dbField = name => singularize(Case.snake(name))
const modelProp = name => singularize(Case.camel(name))
const fieldProp = name => singularize(Case.camel(name))