rappopo-sob-marine
Version:
Rappopo Sob - Marine
132 lines (127 loc) • 3.86 kB
JavaScript
const { _, Sequelize } = require('rappopo-sob').Helper
const schema = {
siteId: { type: Sequelize.INTEGER, defaultValue: 0 },
name: Sequelize.STRING(50),
loCode: 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),
wpiIdx: Sequelize.INTEGER,
wpiRegion: Sequelize.INTEGER,
wpiPub: Sequelize.STRING(20),
chart: Sequelize.STRING(20),
harborSize: Sequelize.STRING(10),
harborType: Sequelize.STRING(10),
shelter: Sequelize.STRING(10),
entryTide: Sequelize.BOOLEAN,
entrySwell: Sequelize.BOOLEAN,
entryIce: Sequelize.BOOLEAN,
entryOther: Sequelize.BOOLEAN,
overhdLim: Sequelize.BOOLEAN,
chanDepth: Sequelize.STRING(10),
anchDepth: Sequelize.STRING(10),
cargoDepth: Sequelize.STRING(10),
oilDepth: Sequelize.STRING(10),
tideRange: Sequelize.DOUBLE,
maxVessel: Sequelize.STRING(10),
holdGround: Sequelize.BOOLEAN,
turnBasin: Sequelize.BOOLEAN,
portOfEntry: Sequelize.BOOLEAN,
usRep: Sequelize.BOOLEAN,
etaMsg: Sequelize.BOOLEAN,
pilotReqd: Sequelize.BOOLEAN,
pilotAvail: Sequelize.BOOLEAN,
pilotLocAssist: Sequelize.BOOLEAN,
pilotAdvsd: Sequelize.BOOLEAN,
tugSalvage: Sequelize.BOOLEAN,
tugAssist: Sequelize.BOOLEAN,
quarPratq: Sequelize.BOOLEAN,
quarSsccCert: Sequelize.BOOLEAN,
quarOther: Sequelize.BOOLEAN,
commPhone: Sequelize.BOOLEAN,
commFax: Sequelize.BOOLEAN,
commRadio: Sequelize.BOOLEAN,
commVhf: Sequelize.BOOLEAN,
commAir: Sequelize.BOOLEAN,
commRail: Sequelize.BOOLEAN,
cargWharv: Sequelize.BOOLEAN,
cargAnch: Sequelize.BOOLEAN,
cargMedMoor: Sequelize.BOOLEAN,
cargBeachMoor: Sequelize.BOOLEAN,
cargIceMoor: Sequelize.BOOLEAN,
medFacil: Sequelize.BOOLEAN,
garbDisp: Sequelize.BOOLEAN,
degaus: Sequelize.BOOLEAN,
drtyBallst: Sequelize.BOOLEAN,
craneFix: Sequelize.BOOLEAN,
craneMobil: Sequelize.BOOLEAN,
craneFloat: Sequelize.BOOLEAN,
lift100: Sequelize.BOOLEAN,
lift50: Sequelize.BOOLEAN,
lift25: Sequelize.BOOLEAN,
lift0: Sequelize.BOOLEAN,
svcLongsh: Sequelize.BOOLEAN,
svcElectr: Sequelize.BOOLEAN,
svcSteam: Sequelize.BOOLEAN,
svcNavEquip: Sequelize.BOOLEAN,
svcElecRepair: Sequelize.BOOLEAN,
supProv: Sequelize.BOOLEAN,
supWater: Sequelize.BOOLEAN,
supFuelOil: Sequelize.BOOLEAN,
supDiesel: Sequelize.BOOLEAN,
supDeck: Sequelize.BOOLEAN,
supEng: Sequelize.BOOLEAN,
repair: Sequelize.STRING(10),
drydock: Sequelize.STRING(10),
railway: Sequelize.STRING(10)
}
const fields = _.concat(
['id', 'createdAt', 'updatedAt'],
_.keys(schema)
)
const entityValidator = {
name: { type: 'string', max: 50, trim: true },
address1: { type: 'string', trim: true },
address2: { type: 'string', trim: true },
city: { type: 'string', max: 50, trim: true },
state: { type: 'string', max: 50, trim: true },
zipCode: { type: 'string', max: 10, trim: true },
country: { type: 'string', empty: false, length: 2, uppercase: true },
phone: { type: 'string', trim: true }
}
module.exports = ({ dbSql }) => {
return {
mixins: [dbSql],
model: {
define: schema,
options: {
underscored: true,
indexes: [
{ fields: ['name'] },
{ fields: ['lo_code'] },
{ fields: ['pic_name'] },
{ fields: ['country'] },
{ fields: ['city'] },
{ fields: ['zip_code'] },
{ fields: ['wpi_idx'] },
{ fields: ['wpi_region'] }
]
}
},
settings: {
fields,
entityValidator
}
}
}