53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
const { DataTypes } = require('sequelize');
|
|
const { sequelize } = require('../config/database');
|
|
|
|
/**
|
|
* BookingRule Model
|
|
* 预约登记规则配置,每个服务类型单独配置
|
|
*/
|
|
const BookingRule = sequelize.define('BookingRule', {
|
|
id: {
|
|
type: DataTypes.UUID,
|
|
defaultValue: DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
serviceType: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: false,
|
|
unique: true,
|
|
field: 'service_type',
|
|
comment: '服务类型标识',
|
|
},
|
|
rules: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
comment: '预约登记规则内容',
|
|
},
|
|
status: {
|
|
type: DataTypes.ENUM('active', 'inactive'),
|
|
defaultValue: 'active',
|
|
allowNull: false,
|
|
comment: '状态',
|
|
},
|
|
}, {
|
|
tableName: 'booking_rules',
|
|
timestamps: true,
|
|
underscored: true,
|
|
indexes: [
|
|
{ fields: ['service_type'], unique: true },
|
|
{ fields: ['status'] },
|
|
],
|
|
});
|
|
|
|
// 自动同步表结构
|
|
(async () => {
|
|
try {
|
|
await BookingRule.sync();
|
|
console.log('BookingRule table synced successfully');
|
|
} catch (err) {
|
|
console.error('BookingRule sync error:', err.message);
|
|
}
|
|
})();
|
|
|
|
module.exports = BookingRule;
|