1 | const memoize = require('lodash.memoize')
|
2 | const camelCase = require('lodash.camelcase')
|
3 | const { plural } = require('pluralize')
|
4 |
|
5 | const pluralCamelMemoized = memoize(str => plural(camelCase(str)))
|
6 |
|
7 | /**
|
8 | * @param {Object} options:
|
9 | * @param {Function} options.caseMapper
|
10 | */
|
11 | function tableNamer({ caseMapper = pluralCamelMemoized } = {}) {
|
12 | return Model =>
|
13 | class extends Model {
|
14 | static get tableName() {
|
15 | return caseMapper(this.name)
|
16 | }
|
17 | }
|
18 | }
|
19 |
|
20 | module.exports = tableNamer
|