UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

82 lines (81 loc) 2.73 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 ProductReviewUploadResolver extends spool_sequelize_1.SequelizeResolver { batch(options, batch) { const self = this; options.limit = options.limit || 100; options.offset = options.offset || 0; options.regressive = options.regressive || false; const recursiveQuery = function (options) { let count = 0; return self.findAndCountAll(options) .then(results => { count = results.count; return batch(results.rows); }) .then(batched => { if (count >= (options.regressive ? options.limit : options.offset + options.limit)) { options.offset = options.regressive ? 0 : options.offset + options.limit; return recursiveQuery(options); } else { return Promise.resolve(); } }); }; return recursiveQuery(options); } } exports.ProductReviewUploadResolver = ProductReviewUploadResolver; class ProductReviewUpload extends common_1.FabrixModel { static get resolver() { return ProductReviewUploadResolver; } static config(app, Sequelize) { return { options: { underscored: true } }; } static schema(app, Sequelize) { return { upload_id: { type: Sequelize.STRING, allowNull: false }, product_handle: { type: Sequelize.STRING, allowNull: false, set: function (val) { this.setDataValue('product_handle', app.services.ProxyCartService.handle(val)); } }, product_sku: { type: Sequelize.STRING, allowNull: true, set: function (val) { this.setDataValue('product_sku', app.services.ProxyCartService.sku(val)); } }, email: { type: Sequelize.STRING }, review: { type: Sequelize.TEXT }, score: { type: Sequelize.INTEGER }, live_mode: { type: Sequelize.BOOLEAN, defaultValue: app.config.get('cart.live_mode') } }; } static associate(models) { } } exports.ProductReviewUpload = ProductReviewUpload;