mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
testing live in another VM environment for self hosting Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
// badge_label was a single STRING(100). The Type step redesign lets admins
|
|
// attach up to 2 badges (outline chips) to a "Text with Image" ad, so the
|
|
// column becomes a JSONB string array (renamed badge_labels to match the
|
|
// plural shape, mirroring the existing `ctas` JSONB column). Any existing
|
|
// scalar value is wrapped into a single-element array; null/empty becomes [].
|
|
module.exports = {
|
|
async up(queryInterface) {
|
|
await queryInterface.sequelize.query(`
|
|
ALTER TABLE advertisements
|
|
ALTER COLUMN badge_label TYPE JSONB
|
|
USING (
|
|
CASE
|
|
WHEN badge_label IS NULL OR badge_label = '' THEN '[]'::jsonb
|
|
ELSE jsonb_build_array(badge_label)
|
|
END
|
|
)
|
|
`);
|
|
|
|
await queryInterface.sequelize.query(`
|
|
ALTER TABLE advertisements
|
|
ALTER COLUMN badge_label SET DEFAULT '[]'::jsonb
|
|
`);
|
|
|
|
await queryInterface.sequelize.query(`
|
|
ALTER TABLE advertisements
|
|
ALTER COLUMN badge_label SET NOT NULL
|
|
`);
|
|
|
|
await queryInterface.renameColumn('advertisements', 'badge_label', 'badge_labels');
|
|
},
|
|
|
|
async down(queryInterface) {
|
|
await queryInterface.renameColumn('advertisements', 'badge_labels', 'badge_label');
|
|
|
|
await queryInterface.sequelize.query(`
|
|
ALTER TABLE advertisements
|
|
ALTER COLUMN badge_label DROP NOT NULL
|
|
`);
|
|
|
|
await queryInterface.sequelize.query(`
|
|
ALTER TABLE advertisements
|
|
ALTER COLUMN badge_label TYPE TEXT
|
|
USING (
|
|
CASE
|
|
WHEN jsonb_array_length(badge_label) = 0 THEN NULL
|
|
ELSE badge_label->>0
|
|
END
|
|
)
|
|
`);
|
|
|
|
await queryInterface.sequelize.query(`
|
|
ALTER TABLE advertisements
|
|
ALTER COLUMN badge_label DROP DEFAULT
|
|
`);
|
|
},
|
|
};
|