'use strict'; const fs = require('fs'); const path = require('path'); const utils = require('./utils') const routes = require('./routes'); const redisConnect = require('./service/redis') const socketConect = require('./service/socket') const camundarest = require('./middlewares/camunda-rest'); const mqttVideoServer = require('./service/mqttServer') const paasRequest = require('./service/paasRequest'); const es = require('./service/es'); const authenticator = require('./middlewares/authenticator'); const clickHouseClient = require('./service/clickHouseClient') const kafka = require('./service/kafka') const schedule = require('./schedule') // const apiLog = require('./middlewares/api-log'); module.exports.entry = function (app, router, opts) { app.fs.logger.log('info', '[FS-AUTH]', 'Inject auth and api mv into router.'); app.fs.api = app.fs.api || {}; app.fs.utils = app.fs.utils || {}; app.fs.api.authAttr = app.fs.api.authAttr || {}; app.fs.api.logAttr = app.fs.api.logAttr || {}; // 顺序固定 ↓ redisConnect(app, opts) socketConect(app, opts) mqttVideoServer(app, opts) // 实例其他平台请求方法 paasRequest(app, opts) es(app, opts) // kafka(app, opts) // clickHouse 数据库 client clickHouseClient(app, opts) // 工具类函数 utils(app, opts) // 定时任务 schedule(app, opts) // 鉴权中间件 router.use(authenticator(app, opts)); //camundarest router.use(camundarest(app, router, opts.camundarest)); // 日志记录 // router.use(apiLog(app, opts)); router = routes(app, router, opts); }; module.exports.models = function (dc) { // dc = { orm: Sequelize对象, ORM: Sequelize, models: {} } // 模型关系摘出来 初始化之后再定义关系才行 fs.readdirSync(path.join(__dirname, '/models')).forEach((filename) => { require(`./models/${filename}`)(dc) }); const { AppInspection, ProjectApp, ProjectCorrelation, AppAlarm, App, AlarmAppearRecord, AlarmConfirmLog, EmailSendLog, LatestDynamicList, AlarmPushConfig, MaintenanceRecord, MaintenanceRecordExecuteUser, MaintenancePlanExecuteUser, MaintenancePlan, EquipmentMaintenanceRecord, EquipmentMaintenanceRecordProject, EquipmentMaintenanceRecordExecuteUser, ServerMaintenanceRecordRepairman, ServerMaintenanceRecord, AlarmDataContinuityType, AlarmDataContinuity, } = dc.models; AppInspection.belongsTo(App, { foreignKey: 'projectAppId', targetKey: 'id' }); App.hasMany(AppInspection, { foreignKey: 'projectAppId', sourceKey: 'id' }); ProjectApp.belongsTo(ProjectCorrelation, { foreignKey: 'projectId', targetKey: 'id' }); ProjectCorrelation.hasMany(ProjectApp, { foreignKey: 'projectId', sourceKey: 'id' }); ProjectApp.belongsTo(App, { foreignKey: 'appId', targetKey: 'id' }); App.hasMany(ProjectApp, { foreignKey: 'appId', sourceKey: 'id' }); ProjectCorrelation.belongsToMany(App, { through: ProjectApp, foreignKey: 'projectId', otherKey: 'appId' }); App.belongsToMany(ProjectCorrelation, { through: ProjectApp, foreignKey: 'appId', otherKey: 'projectId' }); AppAlarm.belongsTo(App, { foreignKey: 'projectAppId', targetKey: 'id' }); App.hasMany(AppAlarm, { foreignKey: 'projectAppId', sourceKey: 'id' }); // AlarmPushConfig.belongsTo(ProjectCorrelation, { foreignKey: 'pomsProjectId', targetKey: 'id' }); // ProjectCorrelation.hasMany(AlarmPushConfig, { foreignKey: 'pomsProjectId', sourceKey: 'id' }); AlarmAppearRecord.belongsTo(ProjectCorrelation, { foreignKey: 'projectCorrelationId', targetKey: 'id' }); ProjectCorrelation.hasMany(AlarmAppearRecord, { foreignKey: 'projectCorrelationId', sourceKey: 'id' }); AlarmConfirmLog.belongsTo(ProjectCorrelation, { foreignKey: 'projectCorrelationId', targetKey: 'id' }); ProjectCorrelation.hasMany(AlarmConfirmLog, { foreignKey: 'projectCorrelationId', sourceKey: 'id' }); EmailSendLog.belongsTo(ProjectCorrelation, { foreignKey: 'projectCorrelationId', targetKey: 'id' }); ProjectCorrelation.hasMany(EmailSendLog, { foreignKey: 'projectCorrelationId', sourceKey: 'id' }); EmailSendLog.belongsTo(AlarmPushConfig, { foreignKey: 'pushConfigId', targetKey: 'id' }); AlarmPushConfig.hasMany(EmailSendLog, { foreignKey: 'pushConfigId', sourceKey: 'id' }); LatestDynamicList.belongsTo(AlarmAppearRecord, { foreignKey: 'alarmAppearId', targetKey: 'id' }); AlarmAppearRecord.hasMany(LatestDynamicList, { foreignKey: 'alarmAppearId', sourceKey: 'id' }); LatestDynamicList.belongsTo(EmailSendLog, { foreignKey: 'emailSendId', targetKey: 'id' }); EmailSendLog.hasMany(LatestDynamicList, { foreignKey: 'emailSendId', sourceKey: 'id' }); LatestDynamicList.belongsTo(AlarmConfirmLog, { foreignKey: 'alarmConfirmId', targetKey: 'id' }); AlarmConfirmLog.hasMany(LatestDynamicList, { foreignKey: 'alarmConfirmId', sourceKey: 'id' }); AlarmDataContinuityType.belongsTo(AlarmDataContinuity, { foreignKey: 'typeNumber', targetKey: 'type' }) AlarmDataContinuity.hasOne(AlarmDataContinuityType, { foreignKey: 'typeNumber', targetKey: 'type' }) LatestDynamicList.belongsTo(ProjectCorrelation, { foreignKey: 'projectCorrelationId', targetKey: 'id' }); ProjectCorrelation.hasMany(LatestDynamicList, { foreignKey: 'projectCorrelationId', sourceKey: 'id' }); MaintenanceRecordExecuteUser.belongsTo(MaintenanceRecord, { foreignKey: 'maintenanceRecordId', targetKey: 'id' }) MaintenanceRecord.hasMany(MaintenanceRecordExecuteUser, { foreignKey: 'maintenanceRecordId', targetKey: 'id' }) MaintenanceRecord.hasMany(MaintenanceRecordExecuteUser, { foreignKey: 'maintenanceRecordId', targetKey: 'id' }) MaintenancePlanExecuteUser.belongsTo(MaintenancePlan, { foreignKey: 'maintenancePlanId', targetKey: 'id' }) MaintenancePlan.hasMany(MaintenancePlanExecuteUser, { foreignKey: 'maintenancePlanId', targetKey: 'id' }) EquipmentMaintenanceRecordProject.belongsTo(EquipmentMaintenanceRecord, { foreignKey: 'equipmentMaintenanceRecordId', targetKey: 'id' }) EquipmentMaintenanceRecord.hasMany(EquipmentMaintenanceRecordProject, { foreignKey: 'equipmentMaintenanceRecordId', targetKey: 'id' }) EquipmentMaintenanceRecordExecuteUser.belongsTo(EquipmentMaintenanceRecord, { foreignKey: 'equipmentMaintenanceRecordId', targetKey: 'id' }) EquipmentMaintenanceRecord.hasMany(EquipmentMaintenanceRecordExecuteUser, { foreignKey: 'equipmentMaintenanceRecordId', targetKey: 'id' }) ServerMaintenanceRecordRepairman.belongsTo(ServerMaintenanceRecord, { foreignKey: 'serverMaintenanceRecordId', targetKey: 'id' }) ServerMaintenanceRecord.hasMany(ServerMaintenanceRecordRepairman, { foreignKey: 'serverMaintenanceRecordId', targetKey: 'id' }) };