rappopo-sob-marine
Version:
Rappopo Sob - Marine
64 lines (59 loc) • 1.75 kB
JavaScript
const { _, Sequelize } = require('rappopo-sob').Helper
const schema = {
siteId: { type: Sequelize.INTEGER, defaultValue: 0 },
name: Sequelize.STRING(50),
class: Sequelize.STRING(20),
picName: Sequelize.STRING(50),
picRole: Sequelize.STRING(50),
picPhone: Sequelize.STRING(50),
picEmail: Sequelize.STRING(50),
lng: Sequelize.DOUBLE,
lat: Sequelize.DOUBLE,
address1: Sequelize.STRING,
address2: Sequelize.STRING,
city: Sequelize.STRING(50),
zipCode: Sequelize.STRING(10),
state: Sequelize.STRING(50),
country: Sequelize.STRING(2),
phone: Sequelize.STRING(50),
email: Sequelize.STRING(100),
website: Sequelize.STRING
}
const fields = _.concat(
['id', 'createdAt', 'updatedAt'],
_.keys(schema)
)
const entityValidator = {
name: { type: 'string', max: 50, trim: true },
address1: { type: 'string', optional: true, trim: true },
address2: { type: 'string', optional: true, trim: true },
city: { type: 'string', max: 50, optional: true, trim: true },
state: { type: 'string', max: 50, optional: true, trim: true },
zipCode: { type: 'string', max: 10, optional: true, trim: true },
country: { type: 'string', empty: false, length: 2, uppercase: true },
phone: { type: 'string', optional: true, trim: true }
}
module.exports = ({ dbSql }) => {
return {
mixins: [dbSql],
model: {
define: schema,
options: {
underscored: true,
indexes: [
{ fields: ['name'] },
{ fields: ['pic_name'] },
{ fields: ['country'] },
{ fields: ['city'] },
{ fields: ['zip_code'] },
{ fields: ['lng'] },
{ fields: ['lat'] }
]
}
},
settings: {
fields,
entityValidator
}
}
}