3994 lines
126 KiB
JavaScript
3994 lines
126 KiB
JavaScript
module.exports = {
|
|
/**
|
|
* @param {QueryInterface} queryInterface
|
|
* @param {Sequelize} Sequelize
|
|
* @returns {Promise<void>}
|
|
*/
|
|
async up(queryInterface, Sequelize) {
|
|
/**
|
|
* @type {Transaction}
|
|
*/
|
|
const transaction = await queryInterface.sequelize.transaction();
|
|
try {
|
|
|
|
|
|
await queryInterface.createTable('users', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('roles', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('permissions', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('product_categories', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('brands', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('products', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('product_variants', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('carts', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('cart_items', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('addresses', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('orders', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('order_items', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('payments', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('shipments', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('discount_codes', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('reviews', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('wishlists', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('wishlist_items', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
await queryInterface.createTable('inventory_adjustments', {
|
|
id: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
defaultValue: Sequelize.DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
createdById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
updatedById: {
|
|
type: Sequelize.DataTypes.UUID,
|
|
references: {
|
|
key: 'id',
|
|
model: 'users',
|
|
},
|
|
},
|
|
createdAt: { type: Sequelize.DataTypes.DATE },
|
|
updatedAt: { type: Sequelize.DataTypes.DATE },
|
|
deletedAt: { type: Sequelize.DataTypes.DATE },
|
|
importHash: {
|
|
type: Sequelize.DataTypes.STRING(255),
|
|
allowNull: true,
|
|
unique: true,
|
|
},
|
|
}, { transaction });
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'firstName',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'lastName',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'phoneNumber',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'email',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'disabled',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'password',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'emailVerified',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'emailVerificationToken',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'emailVerificationTokenExpiresAt',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'passwordResetToken',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'passwordResetTokenExpiresAt',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'provider',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'users',
|
|
'app_roleId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'roles',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'roles',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'roles',
|
|
'role_customization',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'permissions',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_categories',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_categories',
|
|
'slug',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_categories',
|
|
'description',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_categories',
|
|
'parent_categoryId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'product_categories',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_categories',
|
|
'is_active',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_categories',
|
|
'sort_order',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'brands',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'brands',
|
|
'slug',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'brands',
|
|
'description',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'brands',
|
|
'is_active',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'slug',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'sku',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'short_description',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'description',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'base_price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'compare_at_price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['draft','active','archived'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'is_featured',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'categoryId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'product_categories',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'brandId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'brands',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'inventory_total',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'productId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'products',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'variant_sku',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'size',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['xxs','xs','s','m','l','xl','xxl','one_size'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'color',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'compare_at_price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'inventory_quantity',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'is_active',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'userId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'users',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['active','converted','abandoned'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'currency',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'subtotal',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'discount_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'tax_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'shipping_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'grand_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'last_activity_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'cart_items',
|
|
'cartId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'carts',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'cart_items',
|
|
'product_variantId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'product_variants',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'cart_items',
|
|
'quantity',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'cart_items',
|
|
'unit_price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'cart_items',
|
|
'line_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'userId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'users',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'address_type',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['shipping','billing'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'full_name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'phone',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'line1',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'line2',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'city',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'state',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'postal_code',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'country',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'is_default',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'order_number',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'userId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'users',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'order_status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['pending_payment','paid','processing','shipped','delivered','cancelled','refunded'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'currency',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'subtotal',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'discount_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'tax_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'shipping_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'grand_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'shipping_addressId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'addresses',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'billing_addressId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'addresses',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'placed_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'paid_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'fulfilled_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'customer_note',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'orderId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'orders',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'product_variantId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'product_variants',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'product_name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'variant_label',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'quantity',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'unit_price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'line_total',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'orderId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'orders',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'provider',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['stripe','paypal','cash_on_delivery','manual'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['initiated','authorized','captured','failed','refunded','cancelled'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'currency',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'transaction_reference',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'processed_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'orderId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'orders',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['pending','packed','shipped','delivered','returned','cancelled'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'carrier',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'tracking_number',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'tracking_url',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'shipped_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'delivered_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'code',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'discount_type',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['percentage','fixed_amount','free_shipping'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'value',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'minimum_order_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'usage_limit',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'usage_count',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'is_active',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'starts_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'discount_codes',
|
|
'ends_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'productId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'products',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'userId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'users',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'rating',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'title',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'body',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['pending','approved','rejected'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'submitted_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'wishlists',
|
|
'userId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'users',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'wishlists',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'wishlists',
|
|
'is_default',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'wishlist_items',
|
|
'wishlistId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'wishlists',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'wishlist_items',
|
|
'product_variantId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'product_variants',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'wishlist_items',
|
|
'added_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'inventory_adjustments',
|
|
'product_variantId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'product_variants',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'inventory_adjustments',
|
|
'reason',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['restock','sale','return','damage','correction'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'inventory_adjustments',
|
|
'quantity_change',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'inventory_adjustments',
|
|
'note',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'inventory_adjustments',
|
|
'adjusted_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await transaction.commit();
|
|
} catch (err) {
|
|
await transaction.rollback();
|
|
throw err;
|
|
}
|
|
},
|
|
/**
|
|
* @param {QueryInterface} queryInterface
|
|
* @param {Sequelize} Sequelize
|
|
* @returns {Promise<void>}
|
|
*/
|
|
async down(queryInterface, Sequelize) {
|
|
/**
|
|
* @type {Transaction}
|
|
*/
|
|
const transaction = await queryInterface.sequelize.transaction();
|
|
try {
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'inventory_adjustments',
|
|
'adjusted_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'inventory_adjustments',
|
|
'note',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'inventory_adjustments',
|
|
'quantity_change',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'inventory_adjustments',
|
|
'reason',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'inventory_adjustments',
|
|
'product_variantId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'wishlist_items',
|
|
'added_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'wishlist_items',
|
|
'product_variantId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'wishlist_items',
|
|
'wishlistId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'wishlists',
|
|
'is_default',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'wishlists',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'wishlists',
|
|
'userId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'submitted_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'body',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'title',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'rating',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'userId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'productId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'ends_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'starts_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'is_active',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'usage_count',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'usage_limit',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'minimum_order_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'value',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'discount_type',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'code',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'delivered_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'shipped_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'tracking_url',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'tracking_number',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'carrier',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'orderId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'processed_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'transaction_reference',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'currency',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'provider',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'orderId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'line_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'unit_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'quantity',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'variant_label',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'product_name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'product_variantId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'orderId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'customer_note',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'fulfilled_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'paid_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'placed_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'billing_addressId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'shipping_addressId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'grand_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'shipping_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'tax_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'discount_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'subtotal',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'currency',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'order_status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'userId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'order_number',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'is_default',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'country',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'postal_code',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'state',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'city',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'line2',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'line1',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'phone',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'full_name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'address_type',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'userId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'cart_items',
|
|
'line_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'cart_items',
|
|
'unit_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'cart_items',
|
|
'quantity',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'cart_items',
|
|
'product_variantId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'cart_items',
|
|
'cartId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'last_activity_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'grand_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'shipping_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'tax_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'discount_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'subtotal',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'currency',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'userId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'is_active',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'inventory_quantity',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'compare_at_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'color',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'size',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'variant_sku',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'productId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'inventory_total',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'brandId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'categoryId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'is_featured',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'compare_at_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'base_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'description',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'short_description',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'sku',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'slug',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'brands',
|
|
'is_active',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'brands',
|
|
'description',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'brands',
|
|
'slug',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'brands',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_categories',
|
|
'sort_order',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_categories',
|
|
'is_active',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_categories',
|
|
'parent_categoryId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_categories',
|
|
'description',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_categories',
|
|
'slug',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_categories',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'permissions',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'roles',
|
|
'role_customization',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'roles',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'app_roleId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'provider',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'passwordResetTokenExpiresAt',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'passwordResetToken',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'emailVerificationTokenExpiresAt',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'emailVerificationToken',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'emailVerified',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'password',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'disabled',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'email',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'phoneNumber',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'lastName',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'users',
|
|
'firstName',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.dropTable('inventory_adjustments', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('wishlist_items', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('wishlists', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('reviews', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('discount_codes', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('shipments', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('payments', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('order_items', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('orders', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('addresses', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('cart_items', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('carts', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('product_variants', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('products', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('brands', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('product_categories', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('permissions', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('roles', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('users', { transaction });
|
|
|
|
|
|
await transaction.commit();
|
|
} catch (err) {
|
|
await transaction.rollback();
|
|
throw err;
|
|
}
|
|
}
|
|
};
|