UNPKG

@dbbs/strapi-stripe-payment

Version:
81 lines (80 loc) 2.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const strapi_1 = require("@strapi/strapi"); const http_errors_1 = __importDefault(require("http-errors")); exports.default = strapi_1.factories.createCoreService('plugin::stripe-payment.product', ({ strapi }) => ({ async create(params) { const { name } = params; const product = await strapi.plugin('stripe-payment').service('stripe').products.create({ name }); const savedProduct = await strapi.query('plugin::stripe-payment.product').create({ data: { name, stripe_id: product.id } }); return savedProduct; }, async getProductById(params) { const { id } = params; const product = await strapi.query('plugin::stripe-payment.product').findOne({ where: { id }, populate: ['plans'] }); return product; }, async getProducts() { const stripeProducts = await strapi.plugin('stripe-payment').service('stripe').products.list(); const stripeProductIds = stripeProducts.data.map((product) => product.id); const products = await strapi.query('plugin::stripe-payment.product').findMany({ where: { stripe_id: { $in: stripeProductIds } }, populate: ['plans'] }); return products; }, async update(params) { const { name, id } = params; const product = await strapi.query('plugin::stripe-payment.product').findOne({ where: { id } }); if (!product) { return null; } await strapi.plugin('stripe-payment').service('stripe').products.update(product.stripe_id, { name }); const updatedProduct = await strapi.query('plugin::stripe-payment.product').update({ where: { id }, data: { name } }); return updatedProduct; }, async delete(params) { const { id } = params; const product = await strapi.query('plugin::stripe-payment.product').findOne({ where: { id }, populate: { plans: true } }); if (!product) { return null; } if (product.plans && product.plans.length > 0) { throw new http_errors_1.default.BadRequest('You cannot delete a product with plans'); } await strapi.plugin('stripe-payment').service('stripe').products.update(product.stripe_id, { active: false }); await strapi.query('plugin::stripe-payment.product').delete({ where: { id } }); return { id }; } }));