@fabrix/spool-cart
Version:
Spool - eCommerce Spool for Fabrix
85 lines (84 loc) • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@fabrix/fabrix/dist/common");
const spool_sequelize_1 = require("@fabrix/spool-sequelize");
class MetadataResolver extends spool_sequelize_1.SequelizeResolver {
transform(metadata) {
if (typeof metadata.data !== 'undefined') {
return metadata;
}
return { data: metadata };
}
reverseTransform(metadata) {
if (typeof metadata.data !== 'undefined') {
return metadata.data;
}
return metadata;
}
}
exports.MetadataResolver = MetadataResolver;
class Metadata extends common_1.FabrixModel {
static get resolver() {
return MetadataResolver;
}
static config(app, Sequelize) {
return {
options: {
underscored: true,
scopes: {
live: {
where: {
live_mode: true
}
}
},
indexes: [
{
fields: ['data'],
using: 'gin',
operator: 'jsonb_path_ops'
}
]
}
};
}
static schema(app, Sequelize) {
return {
data: {
type: Sequelize.JSONB,
defaultValue: {}
},
customer_id: {
type: Sequelize.INTEGER
},
collection_id: {
type: Sequelize.INTEGER
},
product_id: {
type: Sequelize.INTEGER
},
product_variant_id: {
type: Sequelize.INTEGER
},
product_review_id: {
type: Sequelize.INTEGER
},
user_id: {
type: Sequelize.INTEGER
},
order_id: {
type: Sequelize.INTEGER
},
order_item_id: {
type: Sequelize.INTEGER
},
live_mode: {
type: Sequelize.BOOLEAN,
defaultValue: app.config.get('cart.live_mode')
}
};
}
static associate(models) {
}
}
exports.Metadata = Metadata;