UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

78 lines (77 loc) 2.44 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 ProductReview extends common_1.FabrixModel { static get resolver() { return spool_sequelize_1.SequelizeResolver; } static config(app, Sequelize) { return { options: { underscored: true, classMethods: {} } }; } static schema(app, Sequelize) { return { customer_id: { type: Sequelize.INTEGER }, user_id: { type: Sequelize.INTEGER }, product_id: { type: Sequelize.INTEGER }, variant_id: { type: Sequelize.INTEGER }, metadata_id: { type: Sequelize.INTEGER }, score: { type: Sequelize.INTEGER, defaultValue: 0 }, review: { type: Sequelize.TEXT }, live_mode: { type: Sequelize.BOOLEAN, defaultValue: app.config.get('cart.live_mode') } }; } static associate(models) { models.ProductReview.belongsTo(models.Customer, {}); models.ProductReview.belongsTo(models.Product, {}); models.ProductReview.belongsTo(models.ProductVariant, { foreignKey: 'variant_id' }); models.ProductReview.belongsTo(models.User, {}); models.ProductReview.hasOne(models.Metadata, { as: 'metadata', foreignKey: 'product_review_id' }); } } exports.ProductReview = ProductReview; ProductReview.prototype.resolveMetadata = function (app, options = {}) { if (this.metadata && this.metadata instanceof app.models['Metadata'].instance && options.reload !== true) { return Promise.resolve(this); } else { return this.getMetadata({ transaction: options.transaction || null }) .then(_metadata => { _metadata = _metadata || { product_review_id: this.id }; this.metadata = _metadata; this.setDataValue('metadata', _metadata); this.set('metadata', _metadata); return this; }); } };