运行必须源码:app/(controller/model/service/middleware/lib/utils/validate/router)、config/、database/(migrations/seeders/sql)、启动脚本、app/public/templates 模板。 已忽略运行非必须:node_modules/、logs/、run/、app/public 运行时上传数据、.env*、构建/缓存产物。
57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
'use strict';
|
||
|
||
/**
|
||
* 为 carousel 表新增富文本正文与可配置按钮字段,并放宽 image_url 允许为空
|
||
* (支持"渐变底图回退"的固定页迁移)。
|
||
*
|
||
* 新增:
|
||
* - content TEXT 富文本正文(HTML,由 wangEditor 生成,前端 v-html 渲染)
|
||
* - button_text VARCHAR(100) 按钮文字(为空则不显示按钮)
|
||
* - button_link VARCHAR(500) 按钮链接(内部路由如 /activate,或外部 http(s):// 链接)
|
||
* 变更:
|
||
* - image_url 由 NOT NULL 放宽为 允许 NULL(无底图时前端回退 CSS 渐变)
|
||
*/
|
||
module.exports = {
|
||
up: async (queryInterface, Sequelize) => {
|
||
await queryInterface.addColumn('carousel', 'content', {
|
||
type: Sequelize.TEXT,
|
||
allowNull: true,
|
||
defaultValue: null,
|
||
comment: '富文本正文(HTML)',
|
||
after: 'title',
|
||
});
|
||
await queryInterface.addColumn('carousel', 'button_text', {
|
||
type: Sequelize.STRING(100),
|
||
allowNull: true,
|
||
defaultValue: null,
|
||
comment: '按钮文字(为空则不显示按钮)',
|
||
after: 'content',
|
||
});
|
||
await queryInterface.addColumn('carousel', 'button_link', {
|
||
type: Sequelize.STRING(500),
|
||
allowNull: true,
|
||
defaultValue: null,
|
||
comment: '按钮链接(内部路由/外部URL)',
|
||
after: 'button_text',
|
||
});
|
||
// 放宽 image_url 允许为空,支持渐变底图回退
|
||
await queryInterface.changeColumn('carousel', 'image_url', {
|
||
type: Sequelize.STRING(500),
|
||
allowNull: true,
|
||
defaultValue: null,
|
||
comment: '图片 URL 地址(可为空时前端回退渐变)',
|
||
});
|
||
},
|
||
|
||
down: async (queryInterface, Sequelize) => {
|
||
await queryInterface.removeColumn('carousel', 'content');
|
||
await queryInterface.removeColumn('carousel', 'button_text');
|
||
await queryInterface.removeColumn('carousel', 'button_link');
|
||
await queryInterface.changeColumn('carousel', 'image_url', {
|
||
type: Sequelize.STRING(500),
|
||
allowNull: false,
|
||
comment: '图片 URL 地址',
|
||
});
|
||
},
|
||
};
|