chore(medusa): Clean up atomicPhase usage (#1850)

This commit is contained in:
Sebastian Rindom authored and GitHub committed 2022-07-18 16:04:36 +02:00
1 parent f5091c6370
commit 4dd7fdf61c
21 files changed
+107 -237

No files matched your search

@@ -86,9 +86,7 @@ describe("CustomShippingOptionService", () => {
describe("create", () => {
const customShippingOptionRepository = MockRepository({
create: jest
.fn()
.mockImplementation((f) => Promise.resolve({ id: "test-cso", ...f })),
create: jest.fn().mockImplementation((f) => ({ id: "test-cso", ...f })),
save: jest.fn().mockImplementation((f) => Promise.resolve(f)),
})
@@ -13,7 +13,7 @@ describe("DiscountService", () => {
id: IdMap.getId("france"),
}
},
withTransaction: function() {
withTransaction: function () {
return this
},
}
@@ -762,7 +762,7 @@ describe("DiscountService", () => {
beforeEach(async () => {
discountService = new DiscountService({
manager: MockManager
manager: MockManager,
})
const hasReachedLimitMock = jest.fn().mockImplementation(() => false)
const isDisabledMock = jest.fn().mockImplementation(() => false)
@@ -1067,7 +1067,7 @@ describe("DiscountService", () => {
})
const discountService = new DiscountService({
manager: MockManager
manager: MockManager,
})
discountService.retrieve = retrieveMock
@@ -1161,6 +1161,9 @@ describe("DiscountService", () => {
}
const customerService = {
withTransaction: function () {
return this
},
retrieve: jest.fn().mockImplementation((id) => {
if (id === "customer-no-groups") {
return Promise.resolve({ id: "customer-no-groups" })
+5 -15
View File
@@ -10,7 +10,7 @@ import {
FilterableBatchJobProps,
} from "../types/batch-job"
import { FindConfig } from "../types/common"
import { AbstractBatchJobStrategy, TransactionBaseService } from "../interfaces"
import { TransactionBaseService } from "../interfaces"
import { buildQuery } from "../utils"
import { MedusaError } from "medusa-core-utils"
import { EventBusService, StrategyResolverService } from "./index"
@@ -113,11 +113,8 @@ class BatchJobService extends TransactionBaseService<BatchJobService> {
batchJobId: string,
config: FindConfig<BatchJob> = {}
): Promise<BatchJob | never> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const batchJobRepo = transactionManager.getCustomRepository(
this.batchJobRepository_
)
const manager = this.manager_
const batchJobRepo = manager.getCustomRepository(this.batchJobRepository_)
const query = buildQuery({ id: batchJobId }, config)
const batchJob = await batchJobRepo.findOne(query)
@@ -131,24 +128,17 @@ class BatchJobService extends TransactionBaseService<BatchJobService> {
return batchJob
}
)
}
async listAndCount(
selector: FilterableBatchJobProps = {},
config: FindConfig<BatchJob> = { skip: 0, take: 20 }
): Promise<[BatchJob[], number]> {
return await this.atomicPhase_(
async (manager: EntityManager): Promise<[BatchJob[], number]> => {
const batchJobRepo = manager.getCustomRepository(
this.batchJobRepository_
)
const manager = this.manager_
const batchJobRepo = manager.getCustomRepository(this.batchJobRepository_)
const query = buildQuery(selector, config)
return await batchJobRepo.findAndCount(query)
}
)
}
async create(data: BatchJobCreateProps): Promise<BatchJob> {
return await this.atomicPhase_(async (manager) => {
+4 -14
View File
@@ -260,17 +260,12 @@ class CartService extends TransactionBaseService<CartService> {
selector: FilterableCartProps,
config: FindConfig<Cart> = {}
): Promise<Cart[]> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const cartRepo = transactionManager.getCustomRepository(
this.cartRepository_
)
const manager = this.manager_
const cartRepo = manager.getCustomRepository(this.cartRepository_)
const query = buildQuery(selector, config)
return await cartRepo.find(query)
}
)
}
/**
* Gets a cart by id.
@@ -284,11 +279,8 @@ class CartService extends TransactionBaseService<CartService> {
options: FindConfig<Cart> = {},
totalsConfig: TotalsConfig = {}
): Promise<Cart> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const cartRepo = transactionManager.getCustomRepository(
this.cartRepository_
)
const manager = this.manager_
const cartRepo = manager.getCustomRepository(this.cartRepository_)
const validatedId = validateId(cartId)
const { select, relations, totalsToSelect } =
@@ -323,8 +315,6 @@ class CartService extends TransactionBaseService<CartService> {
return await this.decorateTotals_(raw, totalsToSelect, totalsConfig)
}
)
}
/**
* Creates a cart.
+4 -14
View File
@@ -814,16 +814,11 @@ export default class ClaimService extends TransactionBaseService<
order: { created_at: "DESC" },
}
): Promise<ClaimOrder[]> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const claimRepo = transactionManager.getCustomRepository(
this.claimRepository_
)
const manager = this.manager_
const claimRepo = manager.getCustomRepository(this.claimRepository_)
const query = buildQuery(selector, config)
return await claimRepo.find(query)
}
)
}
/**
* Gets an order by id.
@@ -835,11 +830,8 @@ export default class ClaimService extends TransactionBaseService<
id: string,
config: FindConfig<ClaimOrder> = {}
): Promise<ClaimOrder> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const claimRepo = transactionManager.getCustomRepository(
this.claimRepository_
)
const manager = this.manager_
const claimRepo = manager.getCustomRepository(this.claimRepository_)
const query = buildQuery({ id }, config)
const claim = await claimRepo.findOne(query)
@@ -853,6 +845,4 @@ export default class ClaimService extends TransactionBaseService<
return claim
}
)
}
}
@@ -37,7 +37,7 @@ class CustomShippingOptionService extends TransactionBaseService<CustomShippingO
id: string,
config: FindConfig<CustomShippingOption> = {}
): Promise<CustomShippingOption> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const customShippingOptionRepo = manager.getCustomRepository(
this.customShippingOptionRepository_
)
@@ -54,7 +54,6 @@ class CustomShippingOptionService extends TransactionBaseService<CustomShippingO
}
return customShippingOption
})
}
/** Fetches all custom shipping options based on the given selector
@@ -70,7 +69,7 @@ class CustomShippingOptionService extends TransactionBaseService<CustomShippingO
relations: [],
}
): Promise<CustomShippingOption[]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const customShippingOptionRepo = manager.getCustomRepository(
this.customShippingOptionRepository_
)
@@ -78,7 +77,6 @@ class CustomShippingOptionService extends TransactionBaseService<CustomShippingO
const query = buildQuery(selector, config)
return await customShippingOptionRepo.find(query)
})
}
/**
@@ -92,19 +90,18 @@ class CustomShippingOptionService extends TransactionBaseService<CustomShippingO
): Promise<CustomShippingOption> {
const { cart_id, shipping_option_id, price, metadata } = data
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const customShippingOptionRepo = manager.getCustomRepository(
this.customShippingOptionRepository_
)
const customShippingOption = await customShippingOptionRepo.create({
const customShippingOption = customShippingOptionRepo.create({
cart_id,
shipping_option_id,
price,
metadata,
})
return await customShippingOptionRepo.save(customShippingOption)
})
}
}
+3 -13
View File
@@ -1,5 +1,4 @@
import jwt from "jsonwebtoken"
import _ from "lodash"
import { MedusaError } from "medusa-core-utils"
import Scrypt from "scrypt-kdf"
import { DeepPartial, EntityManager } from "typeorm"
@@ -109,7 +108,7 @@ class CustomerService extends TransactionBaseService<CustomerService> {
selector: Selector<Customer> & { q?: string } = {},
config: FindConfig<Customer> = { relations: [], skip: 0, take: 50 }
): Promise<Customer[]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const customerRepo = manager.getCustomRepository(this.customerRepository_)
let q
@@ -122,7 +121,6 @@ class CustomerService extends TransactionBaseService<CustomerService> {
const [customers] = await customerRepo.listAndCount(query, q)
return customers
})
}
/**
@@ -139,7 +137,7 @@ class CustomerService extends TransactionBaseService<CustomerService> {
order: { created_at: "DESC" },
}
): Promise<[Customer[], number]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const customerRepo = manager.getCustomRepository(this.customerRepository_)
let q
@@ -151,7 +149,6 @@ class CustomerService extends TransactionBaseService<CustomerService> {
const query = buildQuery<Selector<Customer>, Customer>(selector, config)
return await customerRepo.listAndCount(query, q)
})
}
/**
@@ -159,10 +156,9 @@ class CustomerService extends TransactionBaseService<CustomerService> {
* @return {Promise} the result of the count operation
*/
async count(): Promise<number> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const customerRepo = manager.getCustomRepository(this.customerRepository_)
return await customerRepo.count({})
})
}
private async retrieve_(
@@ -199,9 +195,7 @@ class CustomerService extends TransactionBaseService<CustomerService> {
email: string,
config: FindConfig<Customer> = {}
): Promise<Customer | never> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ email: email.toLowerCase() }, config)
})
}
/**
@@ -214,9 +208,7 @@ class CustomerService extends TransactionBaseService<CustomerService> {
phone: string,
config: FindConfig<Customer> = {}
): Promise<Customer | never> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ phone }, config)
})
}
/**
@@ -229,9 +221,7 @@ class CustomerService extends TransactionBaseService<CustomerService> {
customerId: string,
config: FindConfig<Customer> = {}
): Promise<Customer> {
return await this.atomicPhase_(async () => {
return this.retrieve_({ id: customerId }, config)
})
}
/**
@@ -50,7 +50,7 @@ class DiscountConditionService extends TransactionBaseService<DiscountConditionS
conditionId: string,
config?: FindConfig<DiscountCondition>
): Promise<DiscountCondition | never> {
return await this.atomicPhase_(async (manager: EntityManager) => {
const manager = this.manager_
const conditionRepo = manager.getCustomRepository(
this.discountConditionRepository_
)
@@ -67,7 +67,6 @@ class DiscountConditionService extends TransactionBaseService<DiscountConditionS
}
return condition
})
}
protected static resolveConditionType_(data: UpsertDiscountConditionInput):
+15 -23
View File
@@ -115,14 +115,11 @@ class DiscountService extends TransactionBaseService<DiscountService> {
selector: FilterableDiscountProps = {},
config: FindConfig<Discount> = { relations: [], skip: 0, take: 10 }
): Promise<Discount[]> {
return await this.atomicPhase_(async (transactionManager) => {
const discountRepo = transactionManager.getCustomRepository(
this.discountRepository_
)
const manager = this.manager_
const discountRepo = manager.getCustomRepository(this.discountRepository_)
const query = buildQuery(selector as Selector<Discount>, config)
return await discountRepo.find(query)
})
}
/**
@@ -138,10 +135,8 @@ class DiscountService extends TransactionBaseService<DiscountService> {
order: { created_at: "DESC" },
}
): Promise<[Discount[], number]> {
return await this.atomicPhase_(async (transactionManager) => {
const discountRepo = transactionManager.getCustomRepository(
this.discountRepository_
)
const manager = this.manager_
const discountRepo = manager.getCustomRepository(this.discountRepository_)
let q
if ("q" in selector) {
@@ -170,7 +165,6 @@ class DiscountService extends TransactionBaseService<DiscountService> {
const [discounts, count] = await discountRepo.findAndCount(query)
return [discounts, count]
})
}
/**
@@ -248,10 +242,8 @@ class DiscountService extends TransactionBaseService<DiscountService> {
discountId: string,
config: FindConfig<Discount> = {}
): Promise<Discount> {
return await this.atomicPhase_(async (transactionManager) => {
const discountRepo = transactionManager.getCustomRepository(
this.discountRepository_
)
const manager = this.manager_
const discountRepo = manager.getCustomRepository(this.discountRepository_)
const query = buildQuery({ id: discountId }, config)
const discount = await discountRepo.findOne(query)
@@ -264,7 +256,6 @@ class DiscountService extends TransactionBaseService<DiscountService> {
}
return discount
})
}
/**
@@ -277,10 +268,8 @@ class DiscountService extends TransactionBaseService<DiscountService> {
discountCode: string,
config: FindConfig<Discount> = {}
): Promise<Discount> {
return await this.atomicPhase_(async (transactionManager) => {
const discountRepo = transactionManager.getCustomRepository(
this.discountRepository_
)
const manager = this.manager_
const discountRepo = manager.getCustomRepository(this.discountRepository_)
let query = buildQuery({ code: discountCode, is_dynamic: false }, config)
let discount = await discountRepo.findOne(query)
@@ -298,7 +287,6 @@ class DiscountService extends TransactionBaseService<DiscountService> {
}
return discount
})
}
/**
@@ -562,7 +550,9 @@ class DiscountService extends TransactionBaseService<DiscountService> {
return false
}
const product = await this.productService_.retrieve(productId, {
const product = await this.productService_
.withTransaction(manager)
.retrieve(productId, {
relations: ["tags"],
})
@@ -721,7 +711,7 @@ class DiscountService extends TransactionBaseService<DiscountService> {
discountRuleId: string,
customerId: string | undefined
): Promise<boolean> {
return await this.atomicPhase_(async (manager) => {
return await this.atomicPhase_(async (manager: EntityManager) => {
const discountConditionRepo: DiscountConditionRepository =
manager.getCustomRepository(this.discountConditionRepository_)
@@ -730,7 +720,9 @@ class DiscountService extends TransactionBaseService<DiscountService> {
return false
}
const customer = await this.customerService_.retrieve(customerId, {
const customer = await this.customerService_
.withTransaction(manager)
.retrieve(customerId, {
relations: ["groups"],
})
+8 -20
View File
@@ -92,9 +92,8 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
id: string,
config: FindConfig<DraftOrder> = {}
): Promise<DraftOrder | never> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const draftOrderRepo = transactionManager.getCustomRepository(
const manager = this.manager_
const draftOrderRepo = manager.getCustomRepository(
this.draftOrderRepository_
)
@@ -109,8 +108,6 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
return draftOrder
}
)
}
/**
* Retrieves a draft order based on its associated cart id
@@ -122,9 +119,8 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
cartId: string,
config: FindConfig<DraftOrder> = {}
): Promise<DraftOrder | never> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const draftOrderRepo = transactionManager.getCustomRepository(
const manager = this.manager_
const draftOrderRepo = manager.getCustomRepository(
this.draftOrderRepository_
)
@@ -139,8 +135,6 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
return draftOrder
}
)
}
/**
* Deletes draft order idempotently.
@@ -179,9 +173,8 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
order: { created_at: "DESC" },
}
): Promise<[DraftOrder[], number]> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const draftOrderRepository = transactionManager.getCustomRepository(
const manager = this.manager_
const draftOrderRepository = manager.getCustomRepository(
this.draftOrderRepository_
)
@@ -219,8 +212,6 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
return await draftOrderRepository.findAndCount(query)
}
)
}
/**
* Lists draft orders
@@ -236,9 +227,8 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
order: { created_at: "DESC" },
}
): Promise<DraftOrder[]> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const draftOrderRepo = transactionManager.getCustomRepository(
const manager = this.manager_
const draftOrderRepo = manager.getCustomRepository(
this.draftOrderRepository_
)
@@ -246,8 +236,6 @@ class DraftOrderService extends TransactionBaseService<DraftOrderService> {
return await draftOrderRepo.find(query)
}
)
}
/**
* Creates a draft order.
+1 -2
View File
@@ -167,7 +167,7 @@ class FulfillmentService extends TransactionBaseService<FulfillmentService> {
id: string,
config: FindConfig<Fulfillment> = {}
): Promise<Fulfillment> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const fulfillmentRepository = manager.getCustomRepository(
this.fulfillmentRepository_
)
@@ -183,7 +183,6 @@ class FulfillmentService extends TransactionBaseService<FulfillmentService> {
)
}
return fulfillment
})
}
/**
+8 -15
View File
@@ -85,7 +85,7 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
selector: QuerySelector<GiftCard> = {},
config: FindConfig<GiftCard> = { relations: [], skip: 0, take: 10 }
): Promise<[GiftCard[], number]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const giftCardRepo = manager.getCustomRepository(this.giftCardRepository_)
let q: string | undefined
@@ -103,7 +103,6 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
delete query.relations
return await giftCardRepo.listGiftCardsAndCount(query, rels, q)
})
}
/**
@@ -115,7 +114,7 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
selector: QuerySelector<GiftCard> = {},
config: FindConfig<GiftCard> = { relations: [], skip: 0, take: 10 }
): Promise<GiftCard[]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const giftCardRepo = manager.getCustomRepository(this.giftCardRepository_)
let q: string | undefined
@@ -133,18 +132,16 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
delete query.relations
return await giftCardRepo.listGiftCards(query, rels, q)
})
}
async createTransaction(
data: CreateGiftCardTransactionInput
): Promise<string> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const gctRepo = manager.getCustomRepository(this.giftCardTransactionRepo_)
const created = gctRepo.create(data)
const saved = await gctRepo.save(created)
return saved.id
})
}
/**
@@ -186,7 +183,7 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
selector: Selector<GiftCard>,
config: FindConfig<GiftCard> = {}
): Promise<GiftCard> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const giftCardRepo = manager.getCustomRepository(this.giftCardRepository_)
const { relations, ...query } = buildQuery(selector, config)
@@ -208,7 +205,6 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
}
return giftCard
})
}
/**
@@ -221,18 +217,14 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
giftCardId: string,
config: FindConfig<GiftCard> = {}
): Promise<GiftCard> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ id: giftCardId }, config)
})
}
async retrieveByCode(
code: string,
config: FindConfig<GiftCard> = {}
): Promise<GiftCard> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ code }, config)
})
}
/**
@@ -253,7 +245,9 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
const { region_id, metadata, balance, ...rest } = update
if (region_id && region_id !== giftCard.region_id) {
const region = await this.regionService_.retrieve(region_id)
const region = await this.regionService_
.withTransaction(manager)
.retrieve(region_id)
giftCard.region_id = region.id
}
@@ -286,7 +280,7 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
* @return the result of the delete operation
*/
async delete(giftCardId: string): Promise<GiftCard | void> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const giftCardRepo = manager.getCustomRepository(this.giftCardRepository_)
const giftCard = await giftCardRepo.findOne({ where: { id: giftCardId } })
@@ -296,7 +290,6 @@ class GiftCardService extends TransactionBaseService<GiftCardService> {
}
return await giftCardRepo.softRemove(giftCard)
})
}
}
+4 -12
View File
@@ -91,16 +91,11 @@ class LineItemService extends BaseService {
selector,
config = { skip: 0, take: 50, order: { created_at: "DESC" } }
): Promise<LineItem[]> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const lineItemRepo = transactionManager.getCustomRepository(
this.lineItemRepository_
)
const manager = this.manager_
const lineItemRepo = manager.getCustomRepository(this.lineItemRepository_)
const query = this.buildQuery_(selector, config)
return await lineItemRepo.find(query)
}
)
}
/**
* Retrieves a line item by its id.
@@ -109,9 +104,8 @@ class LineItemService extends BaseService {
* @return {Promise<LineItem | never>} the line item
*/
async retrieve(id: string, config = {}): Promise<LineItem | never> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const lineItemRepository = transactionManager.getCustomRepository(
const manager = this.manager_
const lineItemRepository = manager.getCustomRepository(
this.lineItemRepository_
)
@@ -129,8 +123,6 @@ class LineItemService extends BaseService {
return lineItem
}
)
}
/**
* Creates return line items for a given cart based on the return items in a
+8 -12
View File
@@ -248,7 +248,7 @@ class PriceListService extends TransactionBaseService<PriceListService> {
selector: FilterablePriceListProps = {},
config: FindConfig<FilterablePriceListProps> = { skip: 0, take: 20 }
): Promise<PriceList[]> {
return await this.atomicPhase_(async (manager: EntityManager) => {
const manager = this.manager_
const priceListRepo = manager.getCustomRepository(this.priceListRepo_)
const { q, ...priceListSelector } = selector
@@ -260,7 +260,6 @@ class PriceListService extends TransactionBaseService<PriceListService> {
const [priceLists] = await priceListRepo.listAndCount(query, groups)
return priceLists
})
}
/**
@@ -276,7 +275,7 @@ class PriceListService extends TransactionBaseService<PriceListService> {
take: 20,
}
): Promise<[PriceList[], number]> {
return await this.atomicPhase_(async (manager: EntityManager) => {
const manager = this.manager_
const priceListRepo = manager.getCustomRepository(this.priceListRepo_)
const { q, ...priceListSelector } = selector
const { relations, ...query } = buildQuery<
@@ -296,7 +295,6 @@ class PriceListService extends TransactionBaseService<PriceListService> {
)
}
return await priceListRepo.listAndCount({ ...query, relations }, groups)
})
}
protected async upsertCustomerGroups_(
@@ -332,10 +330,9 @@ class PriceListService extends TransactionBaseService<PriceListService> {
const productVariantRepo = manager.getCustomRepository(
this.productVariantRepo_
)
const [products, count] = await this.productService_.listAndCount(
selector,
config
)
const [products, count] = await this.productService_
.withTransaction(manager)
.listAndCount(selector, config)
const moneyAmountRepo = manager.getCustomRepository(this.moneyAmountRepo_)
@@ -378,10 +375,9 @@ class PriceListService extends TransactionBaseService<PriceListService> {
requiresPriceList = false
): Promise<[ProductVariant[], number]> {
return await this.atomicPhase_(async (manager: EntityManager) => {
const [variants, count] = await this.variantService_.listAndCount(
selector,
config
)
const [variants, count] = await this.variantService_
.withTransaction(manager)
.listAndCount(selector, config)
const moneyAmountRepo = manager.getCustomRepository(this.moneyAmountRepo_)
+3 -5
View File
@@ -63,15 +63,14 @@ class PricingService extends TransactionBaseService<PricingService> {
async collectPricingContext(
context: PriceSelectionContext
): Promise<PricingContext> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
return await this.atomicPhase_(async (manager: EntityManager) => {
let automaticTaxes = false
let taxRate = null
let currencyCode = context.currency_code
if (context.region_id) {
const region = await this.regionService
.withTransaction(transactionManager)
.withTransaction(manager)
.retrieve(context.region_id, {
select: ["id", "currency_code", "automatic_taxes", "tax_rate"],
})
@@ -89,8 +88,7 @@ class PricingService extends TransactionBaseService<PricingService> {
automatic_taxes: automaticTaxes,
tax_rate: taxRate,
}
}
)
})
}
/**
+6 -20
View File
@@ -113,7 +113,7 @@ class ProductService extends TransactionBaseService<ProductService> {
include_discount_prices: false,
}
): Promise<Product[]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const productRepo = manager.getCustomRepository(this.productRepository_)
const { q, query, relations } = this.prepareListQuery_(selector, config)
@@ -127,7 +127,6 @@ class ProductService extends TransactionBaseService<ProductService> {
}
return await productRepo.findWithRelations(relations, query)
})
}
/**
@@ -150,7 +149,7 @@ class ProductService extends TransactionBaseService<ProductService> {
include_discount_prices: false,
}
): Promise<[Product[], number]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const productRepo = manager.getCustomRepository(this.productRepository_)
const { q, query, relations } = this.prepareListQuery_(selector, config)
@@ -164,7 +163,6 @@ class ProductService extends TransactionBaseService<ProductService> {
}
return await productRepo.findWithRelationsAndCount(relations, query)
})
}
/**
@@ -173,11 +171,10 @@ class ProductService extends TransactionBaseService<ProductService> {
* @return {Promise} the result of the count operation
*/
async count(selector: Selector<Product> = {}): Promise<number> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const productRepo = manager.getCustomRepository(this.productRepository_)
const query = buildQuery(selector)
return await productRepo.count(query)
})
}
/**
@@ -194,9 +191,7 @@ class ProductService extends TransactionBaseService<ProductService> {
include_discount_prices: false,
}
): Promise<Product> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ id: productId }, config)
})
}
/**
@@ -210,9 +205,7 @@ class ProductService extends TransactionBaseService<ProductService> {
productHandle: string,
config: FindProductConfig = {}
): Promise<Product> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ handle: productHandle }, config)
})
}
/**
@@ -226,9 +219,7 @@ class ProductService extends TransactionBaseService<ProductService> {
externalId: string,
config: FindProductConfig = {}
): Promise<Product> {
return await this.atomicPhase_(async () => {
return await this.retrieve_({ external_id: externalId }, config)
})
}
/**
@@ -245,7 +236,7 @@ class ProductService extends TransactionBaseService<ProductService> {
include_discount_prices: false,
}
): Promise<Product> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const productRepo = manager.getCustomRepository(this.productRepository_)
const { relations, ...query } = buildQuery(selector, config)
@@ -267,7 +258,6 @@ class ProductService extends TransactionBaseService<ProductService> {
}
return product
})
}
/**
@@ -283,7 +273,6 @@ class ProductService extends TransactionBaseService<ProductService> {
take: 50,
}
): Promise<ProductVariant[]> {
return await this.atomicPhase_(async () => {
const givenRelations = config.relations ?? []
const requiredRelations = ["variants"]
const relationsSet = new Set([...givenRelations, ...requiredRelations])
@@ -293,27 +282,24 @@ class ProductService extends TransactionBaseService<ProductService> {
relations: [...relationsSet],
})
return product.variants
})
}
async listTypes(): Promise<ProductType[]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const productTypeRepository = manager.getCustomRepository(
this.productTypeRepository_
)
return await productTypeRepository.find({})
})
}
async listTagsByUsage(count = 10): Promise<ProductTag[]> {
return await this.atomicPhase_(async (manager) => {
const manager = this.manager_
const productTagRepo = manager.getCustomRepository(
this.productTagRepository_
)
return await productTagRepo.listTagsByUsage(count)
})
}
/**
@@ -66,8 +66,8 @@ class SalesChannelService extends TransactionBaseService<SalesChannelService> {
salesChannelId: string,
config: FindConfig<SalesChannel> = {}
): Promise<SalesChannel | never> {
return await this.atomicPhase_(async (transactionManager) => {
const salesChannelRepo = transactionManager.getCustomRepository(
const manager = this.manager_
const salesChannelRepo = manager.getCustomRepository(
this.salesChannelRepository_
)
@@ -88,7 +88,6 @@ class SalesChannelService extends TransactionBaseService<SalesChannelService> {
}
return salesChannel
})
}
/**
@@ -105,8 +104,8 @@ class SalesChannelService extends TransactionBaseService<SalesChannelService> {
take: 20,
}
): Promise<[SalesChannel[], number]> {
return await this.atomicPhase_(async (transactionManager) => {
const salesChannelRepo = transactionManager.getCustomRepository(
const manager = this.manager_
const salesChannelRepo = manager.getCustomRepository(
this.salesChannelRepository_
)
@@ -124,7 +123,6 @@ class SalesChannelService extends TransactionBaseService<SalesChannelService> {
}
return await salesChannelRepo.findAndCount(query)
})
}
/**
@@ -131,14 +131,11 @@ class ShippingOptionService extends TransactionBaseService<ShippingOptionService
selector: Selector<ShippingMethod>,
config: FindConfig<ShippingOption> = { skip: 0, take: 50 }
): Promise<ShippingOption[]> {
return await this.atomicPhase_(async (transactionManager) => {
const optRepo = transactionManager.getCustomRepository(
this.optionRepository_
)
const manager = this.manager_
const optRepo = manager.getCustomRepository(this.optionRepository_)
const query = buildQuery(selector, config)
return optRepo.find(query)
})
}
/**
@@ -150,14 +147,11 @@ class ShippingOptionService extends TransactionBaseService<ShippingOptionService
selector: Selector<ShippingMethod>,
config: FindConfig<ShippingOption> = { skip: 0, take: 50 }
): Promise<[ShippingOption[], number]> {
return await this.atomicPhase_(async (transactionManager) => {
const optRepo = transactionManager.getCustomRepository(
this.optionRepository_
)
const manager = this.manager_
const optRepo = manager.getCustomRepository(this.optionRepository_)
const query = buildQuery(selector, config)
return await optRepo.findAndCount(query)
})
}
/**
@@ -171,9 +165,10 @@ class ShippingOptionService extends TransactionBaseService<ShippingOptionService
optionId,
options: { select?: (keyof ShippingOption)[]; relations?: string[] } = {}
): Promise<ShippingOption> {
return await this.atomicPhase_(async (transactionManager) => {
const soRepo: ShippingOptionRepository =
transactionManager.getCustomRepository(this.optionRepository_)
const manager = this.manager_
const soRepo: ShippingOptionRepository = manager.getCustomRepository(
this.optionRepository_
)
const query: ExtendedFindConfig<ShippingOption> = {
where: { id: optionId },
@@ -197,7 +192,6 @@ class ShippingOptionService extends TransactionBaseService<ShippingOptionService
}
return option
})
}
/**
+3 -11
View File
@@ -89,25 +89,17 @@ class StoreService extends TransactionBaseService<StoreService> {
* @return the store
*/
async retrieve(config: FindConfig<Store> = {}): Promise<Store> {
return await this.atomicPhase_(
async (transactionManager: EntityManager) => {
const storeRepo = transactionManager.getCustomRepository(
this.storeRepository_
)
const manager = this.manager_
const storeRepo = manager.getCustomRepository(this.storeRepository_)
const query = buildQuery({}, config)
const store = await storeRepo.findOne(query)
if (!store) {
throw new MedusaError(
MedusaError.Types.NOT_FOUND,
"Store does not exist"
)
throw new MedusaError(MedusaError.Types.NOT_FOUND, "Store does not exist")
}
return store
}
)
}
protected getDefaultCurrency_(code: string): Partial<Currency> {
const currencyObject = currencies[code.toUpperCase()]
+3 -6
View File
@@ -85,7 +85,7 @@ class TaxRateService extends BaseService {
id: string,
config: FindConfig<TaxRate> = {}
): Promise<TaxRate> {
return await this.atomicPhase_(async (manager: EntityManager) => {
const manager = this.manager_
const taxRateRepo = manager.getCustomRepository(this.taxRateRepository_)
const query = this.buildQuery_({ id }, config)
@@ -98,7 +98,6 @@ class TaxRateService extends BaseService {
}
return taxRate
})
}
async create(data: CreateTaxRateInput): Promise<TaxRate> {
@@ -323,17 +322,15 @@ class TaxRateService extends BaseService {
config: TaxRateListByConfig
): Promise<TaxRate[]> {
// Check both ProductTaxRate + ProductTypeTaxRate
return await this.atomicPhase_(async (manager: EntityManager) => {
const manager = this.manager_
const taxRateRepo = manager.getCustomRepository(this.taxRateRepository_)
return await taxRateRepo.listByProduct(productId, config)
})
}
async listByShippingOption(shippingOptionId: string): Promise<TaxRate[]> {
return await this.atomicPhase_(async (manager: EntityManager) => {
const manager = this.manager_
const taxRateRepo = manager.getCustomRepository(this.taxRateRepository_)
return await taxRateRepo.listByShippingOption(shippingOptionId)
})
}
}
+8 -20
View File
@@ -71,12 +71,9 @@ class UserService extends TransactionBaseService<UserService> {
* @return {Promise} the result of the find operation
*/
async list(selector: FilterableUserProps, config = {}): Promise<User[]> {
return await this.atomicPhase_(async (transactionManager) => {
const userRepo = transactionManager.getCustomRepository(
this.userRepository_
)
const manager = this.manager_
const userRepo = manager.getCustomRepository(this.userRepository_)
return await userRepo.find(buildQuery(selector, config))
})
}
/**
@@ -87,10 +84,8 @@ class UserService extends TransactionBaseService<UserService> {
* @return {Promise<User>} the user document.
*/
async retrieve(userId: string, config: FindConfig<User> = {}): Promise<User> {
return await this.atomicPhase_(async (transactionManager) => {
const userRepo = transactionManager.getCustomRepository(
this.userRepository_
)
const manager = this.manager_
const userRepo = manager.getCustomRepository(this.userRepository_)
const query = buildQuery({ id: userId }, config)
const user = await userRepo.findOne(query)
@@ -103,7 +98,6 @@ class UserService extends TransactionBaseService<UserService> {
}
return user
})
}
/**
@@ -117,10 +111,8 @@ class UserService extends TransactionBaseService<UserService> {
apiToken: string,
relations: string[] = []
): Promise<User> {
return await this.atomicPhase_(async (transactionManager) => {
const userRepo = transactionManager.getCustomRepository(
this.userRepository_
)
const manager = this.manager_
const userRepo = manager.getCustomRepository(this.userRepository_)
const user = await userRepo.findOne({
where: { api_token: apiToken },
@@ -135,7 +127,6 @@ class UserService extends TransactionBaseService<UserService> {
}
return user
})
}
/**
@@ -149,10 +140,8 @@ class UserService extends TransactionBaseService<UserService> {
email: string,
config: FindConfig<User> = {}
): Promise<User> {
return await this.atomicPhase_(async (transactionManager) => {
const userRepo = transactionManager.getCustomRepository(
this.userRepository_
)
const manager = this.manager_
const userRepo = manager.getCustomRepository(this.userRepository_)
const query = buildQuery({ email: email.toLowerCase() }, config)
const user = await userRepo.findOne(query)
@@ -165,7 +154,6 @@ class UserService extends TransactionBaseService<UserService> {
}
return user
})
}
/**