objection-table-name

ActiveRecord-style objection.js plugin to auto-fill tableName

Usage no npm install needed!

<script type="module">
  import objectionTableName from 'https://cdn.skypack.dev/objection-table-name';
</script>

README

objection-table-name

CircleCI codecov Version Downloads Docs

Enjoy objection-tablename? Check out my other objection plugins: objection-hashid and objection-authorize!

What To Solve

class NodeModule extends Model {
  static get tableName() {
    return 'nodeModules' // you type it on every model
  }
}

what about:

class NodeModule extends Model {}
console.log(NodeModule.tableName)
// => nodeModules

Installation

$ npm install objection-table-name

Usage

const { Model } = require('objection')
const tableName = require('objection-table-name')

// The common way is:
// - make this is as your base class

// BaseModel.js
class BaseModel extends tableName()(Model) {}

// TransactionDetail.js
class TransactionDetail extends BaseModel {}
console.log(TransactionDetail.tableName)
// => transactionDetails

You can define your own mapper

function upperFirst([s, ...rest]) {
  return [s.toUpperCase(), ...rest].join('')
}

class BaseModel extends TableNamer({
  caseMapper: upperFirst
})(Model) {}

class foo_Bar extends BaseModel {}
console.log(foo_Bar.tableName)
// => Foo_Bar

Lodash provides some already defined caseMappers. You can use it too.