UNPKG

rappopo-sob-marine

Version:

Rappopo Sob - Marine

96 lines (92 loc) 2.47 kB
const { _, Sequelize } = require('rappopo-sob').Helper const schema = { id: { type: Sequelize.STRING(100), allowNull: false, primaryKey: true }, siteId: { type: Sequelize.INTEGER, defaultValue: 0 }, mmsi: Sequelize.STRING(20), mid: Sequelize.STRING(20), imo: Sequelize.STRING(20), name: Sequelize.STRING(50), callSign: Sequelize.STRING(20), class: Sequelize.STRING(20), subClass: Sequelize.STRING(20), flag: Sequelize.STRING(2), loa: Sequelize.INTEGER, breadth: Sequelize.INTEGER, draught: Sequelize.INTEGER, dwt: Sequelize.DOUBLE, gt: Sequelize.DOUBLE, builtYear: Sequelize.INTEGER, builtPlace: Sequelize.STRING(50), displacement: Sequelize.DOUBLE, speedMax: Sequelize.DOUBLE, oilCap: Sequelize.DOUBLE, owner: Sequelize.INTEGER, operator: Sequelize.INTEGER, note: Sequelize.TEXT } const fields = _.concat( ['id', 'createdAt', 'updatedAt'], _.keys(schema) ) module.exports = ({ dbSql }) => { return { mixins: [dbSql], model: { define: schema, options: { underscored: true, indexes: [ { fields: ['mmsi'] }, { fields: ['mid'] }, { fields: ['imo'] }, { fields: ['name'] }, { fields: ['call_sign'] }, { fields: ['class'] }, { fields: ['sub_class'] }, { fields: ['flag'] } ] } }, settings: { fields, webApi: { alias: { 'GET /ais': 'apiAisOnlyList', 'GET /vms': 'apiVmsOnlyList' } } }, actions: { async apiAisOnlyList (ctx) { const params = this.sanitizeParams(ctx, ctx.params) let query = params.query const aisOnly = { $and: [ { mmsi: { $ne: '' } }, { mmsi: { $ne: null } } ] } if (query) query = { $and: [query, aisOnly] } else query = aisOnly params.query = query ctx.params = params return this._apiList(ctx, params) }, async apiVmsOnlyList (ctx) { const params = this.sanitizeParams(ctx, ctx.params) let query = params.query const vmsOnly = { $and: [ { mid: { $ne: '' } }, { mid: { $ne: null } } ] } if (query) query = { $and: [query, vmsOnly] } else query = vmsOnly params.query = query ctx.params = params return this._apiList(ctx, params) } } } }