4339 lines
135 KiB
JavaScript
4339 lines
135 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('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('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('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('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('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('refunds', {
|
|
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('order_discounts', {
|
|
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.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(
|
|
'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',
|
|
'label',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'addresses',
|
|
'recipient_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',
|
|
'region',
|
|
{
|
|
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(
|
|
'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(
|
|
'categories',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'categories',
|
|
'slug',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'categories',
|
|
'description',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'categories',
|
|
'parent_categoryId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'categories',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'categories',
|
|
'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',
|
|
'price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'compare_at_price',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'cost',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'is_taxable',
|
|
{
|
|
type: Sequelize.DataTypes.BOOLEAN,
|
|
|
|
defaultValue: false,
|
|
allowNull: false,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'weight',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['draft','active','archived'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'brandId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'brands',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'sort_order',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'products',
|
|
'published_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'productId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'products',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'name',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'sku',
|
|
{
|
|
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',
|
|
'cost',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'stock_on_hand',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'stock_reserved',
|
|
{
|
|
type: Sequelize.DataTypes.INTEGER,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'barcode',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'weight',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'product_variants',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['active','disabled'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'customerId',
|
|
{
|
|
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_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'discount_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'shipping_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'tax_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'total_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'last_activity_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'carts',
|
|
'expires_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(
|
|
'orders',
|
|
'order_number',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'customerId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'users',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ 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',
|
|
'order_status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['pending','paid','packed','shipped','delivered','cancelled','refunded'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'payment_status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['unpaid','authorized','paid','partially_refunded','refunded','failed'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'fulfillment_status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['unfulfilled','partial','fulfilled','returned'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'currency',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'subtotal_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'discount_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'shipping_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'tax_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'total_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'customer_note',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'internal_note',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ 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',
|
|
'shipped_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'delivered_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'orders',
|
|
'cancelled_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ 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_snapshot',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'sku_snapshot',
|
|
{
|
|
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',
|
|
'discount_amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_items',
|
|
'tax_amount',
|
|
{
|
|
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','manual'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'payment_method',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['card','wallet','bank_transfer','cash_on_delivery'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['pending','authorized','captured','failed','voided','refunded'],
|
|
|
|
|
|
},
|
|
{ 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',
|
|
'provider_reference',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'authorized_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'captured_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'payments',
|
|
'failed_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'paymentId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'payments',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'status',
|
|
{
|
|
type: Sequelize.DataTypes.ENUM,
|
|
|
|
|
|
values: ['pending','succeeded','failed','cancelled'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'reason',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'provider_reference',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'requested_at',
|
|
{
|
|
type: Sequelize.DataTypes.DATE,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'refunds',
|
|
'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: ['ready','shipped','delivered','returned','lost'],
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'carrier',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'shipments',
|
|
'service_level',
|
|
{
|
|
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',
|
|
'currency',
|
|
{
|
|
type: Sequelize.DataTypes.TEXT,
|
|
|
|
|
|
|
|
},
|
|
{ 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(
|
|
'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(
|
|
'order_discounts',
|
|
'orderId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'orders',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_discounts',
|
|
'discount_codeId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'discount_codes',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'order_discounts',
|
|
'amount',
|
|
{
|
|
type: Sequelize.DataTypes.DECIMAL,
|
|
|
|
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'productId',
|
|
{
|
|
type: Sequelize.DataTypes.UUID,
|
|
|
|
|
|
|
|
references: {
|
|
model: 'products',
|
|
key: 'id',
|
|
},
|
|
|
|
},
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
await queryInterface.addColumn(
|
|
'reviews',
|
|
'customerId',
|
|
{
|
|
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(
|
|
'reviews',
|
|
'moderated_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(
|
|
'reviews',
|
|
'moderated_at',
|
|
{ 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',
|
|
'customerId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'reviews',
|
|
'productId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_discounts',
|
|
'amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_discounts',
|
|
'discount_codeId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_discounts',
|
|
'orderId',
|
|
{ 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',
|
|
'ends_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'starts_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'discount_codes',
|
|
'currency',
|
|
{ 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',
|
|
'service_level',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'carrier',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'shipments',
|
|
'orderId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'processed_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'requested_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'provider_reference',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'reason',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'refunds',
|
|
'paymentId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'failed_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'captured_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'authorized_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'provider_reference',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'currency',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'payments',
|
|
'payment_method',
|
|
{ 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',
|
|
'tax_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'discount_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'unit_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'quantity',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'sku_snapshot',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'product_name_snapshot',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'product_variantId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'order_items',
|
|
'orderId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'cancelled_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'delivered_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'shipped_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'paid_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'placed_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'internal_note',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'customer_note',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'total_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'tax_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'shipping_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'discount_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'subtotal_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'currency',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'fulfillment_status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'payment_status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'order_status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'billing_addressId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'shipping_addressId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'customerId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'orders',
|
|
'order_number',
|
|
{ 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',
|
|
'expires_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'last_activity_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'total_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'tax_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'shipping_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'discount_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'subtotal_amount',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'currency',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'carts',
|
|
'customerId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'weight',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'barcode',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'stock_reserved',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'stock_on_hand',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'cost',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'compare_at_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'sku',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'product_variants',
|
|
'productId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'published_at',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'sort_order',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'brandId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'status',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'weight',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'is_taxable',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'cost',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'compare_at_price',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'products',
|
|
'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(
|
|
'categories',
|
|
'is_active',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'categories',
|
|
'parent_categoryId',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'categories',
|
|
'description',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'categories',
|
|
'slug',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'categories',
|
|
'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(
|
|
'addresses',
|
|
'is_default',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'country',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'postal_code',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'region',
|
|
{ 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',
|
|
'recipient_name',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'label',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'address_type',
|
|
{ transaction }
|
|
);
|
|
|
|
|
|
|
|
await queryInterface.removeColumn(
|
|
'addresses',
|
|
'userId',
|
|
{ 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('reviews', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('order_discounts', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('discount_codes', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('shipments', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('refunds', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('payments', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('order_items', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('orders', { 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('categories', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('brands', { transaction });
|
|
|
|
|
|
|
|
await queryInterface.dropTable('addresses', { 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;
|
|
}
|
|
}
|
|
};
|