UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

85 lines (84 loc) 2.35 kB
"use strict"; 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;