Revert commits 5170c0a..4e8e8b8
This reverts 3 commit(s) from5170c0ato4e8e8b8. Reverted commits:4e8e8b8feat: 拉取最新仓库代码307528bfeat: 拉取最新仓库代码5170c0afeat: 拉取最新仓库代码 Co-authored-by: traeagent <traeagent@users.noreply.github.com>
This commit is contained in:
@@ -19,11 +19,8 @@ const Business = sequelize.define(
|
||||
allowNull: true,
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.STRING,
|
||||
type: DataTypes.ENUM('active', 'offline'),
|
||||
defaultValue: 'active',
|
||||
validate: {
|
||||
isIn: [['active', 'offline']],
|
||||
},
|
||||
},
|
||||
offlineDate: {
|
||||
type: DataTypes.DATE,
|
||||
|
||||
@@ -25,11 +25,8 @@ const Warehouse = sequelize.define(
|
||||
defaultValue: 100,
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.STRING,
|
||||
type: DataTypes.ENUM('active', 'inactive'),
|
||||
defaultValue: 'active',
|
||||
validate: {
|
||||
isIn: [['active', 'inactive']],
|
||||
},
|
||||
},
|
||||
description: {
|
||||
type: DataTypes.TEXT,
|
||||
|
||||
@@ -227,29 +227,27 @@ async function initDatabase() {
|
||||
// 同步所有模型(按依赖顺序)
|
||||
console.log('开始同步模型...');
|
||||
|
||||
const alterOptions = process.env.DB_TYPE === 'mysql' ? { alter: true } : {};
|
||||
|
||||
// 基础模型
|
||||
await User.sync(alterOptions);
|
||||
await Room.sync(alterOptions);
|
||||
await Rack.sync(alterOptions);
|
||||
await Device.sync(alterOptions);
|
||||
await FaultCategory.sync(alterOptions);
|
||||
await User.sync({ alter: true });
|
||||
await Room.sync({ alter: true });
|
||||
await Rack.sync({ alter: true });
|
||||
await Device.sync({ alter: true });
|
||||
await FaultCategory.sync({ alter: true });
|
||||
|
||||
// 耗材相关模型
|
||||
await ConsumableCategory.sync(alterOptions);
|
||||
await Consumable.sync(alterOptions);
|
||||
await ConsumableLog.sync(alterOptions);
|
||||
await ConsumableRecord.sync(alterOptions);
|
||||
await ConsumableLogArchive.sync(alterOptions);
|
||||
await ConsumableCategory.sync({ alter: true });
|
||||
await Consumable.sync({ alter: true });
|
||||
await ConsumableLog.sync({ alter: true });
|
||||
await ConsumableRecord.sync({ alter: true });
|
||||
await ConsumableLogArchive.sync({ alter: true });
|
||||
|
||||
// 盘点相关模型
|
||||
await InventoryPlan.sync(alterOptions);
|
||||
await InventoryTask.sync(alterOptions);
|
||||
await InventoryRecord.sync(alterOptions);
|
||||
await InventoryPlan.sync({ alter: true });
|
||||
await InventoryTask.sync({ alter: true });
|
||||
await InventoryRecord.sync({ alter: true });
|
||||
|
||||
// 系统设置
|
||||
await SystemSetting.sync(alterOptions);
|
||||
await SystemSetting.sync({ alter: true });
|
||||
|
||||
console.log('数据库表结构同步完成');
|
||||
|
||||
|
||||
@@ -724,7 +724,7 @@ async function migrateIdleDeviceAndBusiness() {
|
||||
},
|
||||
name: { type: sequelize.Sequelize.STRING, allowNull: false },
|
||||
description: { type: sequelize.Sequelize.TEXT },
|
||||
status: { type: sequelize.Sequelize.STRING, defaultValue: 'active' },
|
||||
status: { type: sequelize.Sequelize.ENUM('active', 'offline'), defaultValue: 'active' },
|
||||
offlineDate: { type: sequelize.Sequelize.DATE },
|
||||
offlineReason: { type: sequelize.Sequelize.STRING },
|
||||
createdAt: { type: sequelize.Sequelize.DATE, allowNull: false },
|
||||
@@ -746,7 +746,7 @@ async function migrateIdleDeviceAndBusiness() {
|
||||
name: { type: sequelize.Sequelize.STRING, allowNull: false },
|
||||
location: { type: sequelize.Sequelize.STRING },
|
||||
capacity: { type: sequelize.Sequelize.INTEGER, defaultValue: 100 },
|
||||
status: { type: sequelize.Sequelize.STRING, defaultValue: 'active' },
|
||||
status: { type: sequelize.Sequelize.ENUM('active', 'inactive'), defaultValue: 'active' },
|
||||
description: { type: sequelize.Sequelize.TEXT },
|
||||
createdAt: { type: sequelize.Sequelize.DATE, allowNull: false },
|
||||
updatedAt: { type: sequelize.Sequelize.DATE, allowNull: false },
|
||||
@@ -803,20 +803,10 @@ async function migrateDevicePositionIndexes() {
|
||||
for (const idx of indexesToCreate) {
|
||||
console.log(` → 为 ${tableName} 表添加复合索引 ${idx.name}...`);
|
||||
try {
|
||||
let indexExists = false;
|
||||
|
||||
if (dialect === 'sqlite') {
|
||||
const indexList = await sequelize.query(
|
||||
`SELECT name FROM sqlite_master WHERE type='index' AND name=?`,
|
||||
{ replacements: [idx.name], type: sequelize.QueryTypes.SELECT }
|
||||
);
|
||||
indexExists = indexList.length > 0;
|
||||
} else {
|
||||
const existingIndexes = await sequelize.query(`SHOW INDEX FROM ${tableName}`, {
|
||||
type: sequelize.QueryTypes.SELECT,
|
||||
});
|
||||
indexExists = existingIndexes.some(existing => existing.Key_name === idx.name);
|
||||
}
|
||||
const existingIndexes = await sequelize.query(`SHOW INDEX FROM ${tableName}`, {
|
||||
type: sequelize.QueryTypes.SELECT,
|
||||
});
|
||||
const indexExists = existingIndexes.some(existing => existing.Key_name === idx.name);
|
||||
|
||||
if (indexExists) {
|
||||
console.log(' → 索引已存在,跳过');
|
||||
|
||||
+13
-7
@@ -6,7 +6,7 @@ ensureJwtSecret();
|
||||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const fileUpload = require('express-fileupload');
|
||||
const { sequelize, dbDialect } = require('./db');
|
||||
const { sequelize } = require('./db');
|
||||
const { FILE_UPLOAD } = require('./config');
|
||||
const { generateId } = require('./utils/idGenerator');
|
||||
const logger = require('./utils/logger').module('Server');
|
||||
@@ -96,12 +96,18 @@ async function syncBusinessModels() {
|
||||
const DeviceBusiness = require('./models/DeviceBusiness');
|
||||
const Warehouse = require('./models/Warehouse');
|
||||
|
||||
const alterOptions = dbDialect === 'mysql' ? { alter: true } : {};
|
||||
|
||||
await Business.sync(alterOptions);
|
||||
await DeviceBusiness.sync(alterOptions);
|
||||
await Warehouse.sync(alterOptions);
|
||||
logger.info(`业务/设备关联/库房模型同步完成(${dbDialect}${dbDialect === 'mysql' ? ' alter mode' : ''})`);
|
||||
// 仅在开发环境使用 sync({ alter: true }),生产环境应使用 migrations
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
await Business.sync({ alter: true });
|
||||
await DeviceBusiness.sync({ alter: true });
|
||||
await Warehouse.sync({ alter: true });
|
||||
logger.info('业务/设备关联/库房模型同步完成(alter mode)');
|
||||
} else {
|
||||
await Business.sync();
|
||||
await DeviceBusiness.sync();
|
||||
await Warehouse.sync();
|
||||
logger.info('业务/设备关联/库房模型同步完成(safe mode)');
|
||||
}
|
||||
}
|
||||
|
||||
async function initDefaultSystemSettings() {
|
||||
|
||||
Reference in New Issue
Block a user