Skip to main content

Class: ProductVariantService

Hierarchy​

  • TransactionBaseService

    ↳ ProductVariantService

Constructors​

constructor​

• new ProductVariantService(__namedParameters)

Parameters​

NameType
__namedParametersObject

Overrides​

TransactionBaseService.constructor

Defined in​

medusa/src/services/product-variant.ts:75

Properties​

__configModule__​

• Protected Optional Readonly __configModule__: Record<string, unknown>

Inherited from​

TransactionBaseService.__configModule__

Defined in​

medusa/src/interfaces/transaction-base-service.ts:14


__container__​

• Protected Readonly __container__: any

Inherited from​

TransactionBaseService.__container__

Defined in​

medusa/src/interfaces/transaction-base-service.ts:13


__moduleDeclaration__​

• Protected Optional Readonly __moduleDeclaration__: Record<string, unknown>

Inherited from​

TransactionBaseService.__moduleDeclaration__

Defined in​

medusa/src/interfaces/transaction-base-service.ts:15


cartRepository_​

• Protected Readonly cartRepository_: Repository<Cart> & { findOneWithRelations: (relations: FindOptionsRelations<Cart>, optionsWithoutRelations: Omit<FindManyOptions<Cart>, "relations">) => Promise<Cart> ; findWithRelations: (relations: FindOptionsRelations<Cart>, optionsWithoutRelations: Omit<FindManyOptions<Cart>, "relations">) => Promise<Cart[]> }

Defined in​

medusa/src/services/product-variant.ts:73


eventBus_​

• Protected Readonly eventBus_: EventBusService

Defined in​

medusa/src/services/product-variant.ts:67


manager_​

• Protected manager_: EntityManager

Inherited from​

TransactionBaseService.manager_

Defined in​

medusa/src/interfaces/transaction-base-service.ts:5


moneyAmountRepository_​

• Protected Readonly moneyAmountRepository_: Repository<MoneyAmount> & { addPriceListPrices: (priceListId: string, prices: PriceListPriceCreateInput[], overrideExisting: boolean) => Promise<MoneyAmount[]> ; deletePriceListPrices: (priceListId: string, moneyAmountIds: string[]) => Promise<void> ; deleteVariantPricesNotIn: (variantIdOrData: string | { prices: ProductVariantPrice[] ; variantId: string }[], prices?: Price[]) => Promise<void> ; findManyForVariantInPriceList: (variant_id: string, price_list_id: string, requiresPriceList: boolean) => Promise<[MoneyAmount[], number]> ; findManyForVariantInRegion: (variant_id: string, region_id?: string, currency_code?: string, customer_id?: string, include_discount_prices?: boolean, include_tax_inclusive_pricing: boolean) => Promise<[MoneyAmount[], number]> ; findManyForVariantsInRegion: (variant_ids: string | string[], region_id?: string, currency_code?: string, customer_id?: string, include_discount_prices?: boolean, include_tax_inclusive_pricing: boolean) => Promise<[Record<string, MoneyAmount[]>, number]> ; findVariantPricesNotIn: (variantId: string, prices: Price[]) => Promise<MoneyAmount[]> ; insertBulk: (data: _QueryDeepPartialEntity<MoneyAmount>[]) => Promise<MoneyAmount[]> ; updatePriceListPrices: (priceListId: string, updates: PriceListPriceUpdateInput[]) => Promise<MoneyAmount[]> ; upsertVariantCurrencyPrice: (variantId: string, price: Price) => Promise<MoneyAmount> }

Defined in​

medusa/src/services/product-variant.ts:70


priceSelectionStrategy_​

• Protected Readonly priceSelectionStrategy_: IPriceSelectionStrategy

Defined in​

medusa/src/services/product-variant.ts:69


productOptionValueRepository_​

• Protected Readonly productOptionValueRepository_: Repository<ProductOptionValue>

Defined in​

medusa/src/services/product-variant.ts:72


productRepository_​

• Protected Readonly productRepository_: Repository<Product> & { _applyCategoriesQuery: (qb: SelectQueryBuilder<Product>, __namedParameters: Object) => SelectQueryBuilder<Product> ; _findWithRelations: (__namedParameters: { idsOrOptionsWithoutRelations: string[] | FindWithoutRelationsOptions ; relations: string[] ; shouldCount: boolean ; withDeleted: boolean }) => Promise<[Product[], number]> ; bulkAddToCollection: (productIds: string[], collectionId: string) => Promise<Product[]> ; bulkRemoveFromCollection: (productIds: string[], collectionId: string) => Promise<Product[]> ; findOneWithRelations: (relations: string[], optionsWithoutRelations: FindWithoutRelationsOptions) => Promise<Product> ; findWithRelations: (relations: string[], idsOrOptionsWithoutRelations: string[] | FindWithoutRelationsOptions, withDeleted: boolean) => Promise<Product[]> ; findWithRelationsAndCount: (relations: string[], idsOrOptionsWithoutRelations: FindWithoutRelationsOptions) => Promise<[Product[], number]> ; getFreeTextSearchResultsAndCount: (q: string, options: FindWithoutRelationsOptions, relations: string[]) => Promise<[Product[], number]> ; isProductInSalesChannels: (id: string, salesChannelIds: string[]) => Promise<boolean> ; queryProducts: (optionsWithoutRelations: FindWithoutRelationsOptions, shouldCount: boolean) => Promise<[Product[], number]> ; queryProductsWithIds: (__namedParameters: { entityIds: string[] ; groupedRelations: { [toplevel: string]: string[]; } ; order?: { [column: string]: "ASC" | "DESC"; } ; select?: keyof Product[] ; where?: FindOptionsWhere<Product> ; withDeleted?: boolean }) => Promise<Product[]> }

Defined in​

medusa/src/services/product-variant.ts:66


productVariantRepository_​

• Protected Readonly productVariantRepository_: Repository<ProductVariant>

Defined in​

medusa/src/services/product-variant.ts:65


regionService_​

• Protected Readonly regionService_: RegionService

Defined in​

medusa/src/services/product-variant.ts:68


transactionManager_​

• Protected transactionManager_: undefined | EntityManager

Inherited from​

TransactionBaseService.transactionManager_

Defined in​

medusa/src/interfaces/transaction-base-service.ts:6


Events​

▪ Static Events: Object

Type declaration​

NameType
CREATEDstring
DELETEDstring
UPDATEDstring

Defined in​

medusa/src/services/product-variant.ts:59

Accessors​

activeManager_​

• Protected get activeManager_(): EntityManager

Returns​

EntityManager

Inherited from​

TransactionBaseService.activeManager_

Defined in​

medusa/src/interfaces/transaction-base-service.ts:8

Methods​

addOptionValue​

▸ addOptionValue(variantId, optionId, optionValue): Promise<ProductOptionValue>

Adds option value to a variant. Fails when product with variant does not exist or if that product does not have an option with the given option id. Fails if given variant is not found. Option value must be of type string or number.

Parameters​

NameTypeDescription
variantIdstringthe variant to decorate.
optionIdstringthe option from product.
optionValuestringoption value to add.

Returns​

Promise<ProductOptionValue>

the result of the update operation.

Defined in​

medusa/src/services/product-variant.ts:836


atomicPhase_​

▸ Protected atomicPhase_<TResult, TError>(work, isolationOrErrorHandler?, maybeErrorHandlerOrDontFail?): Promise<TResult>

Wraps some work within a transactional block. If the service already has a transaction manager attached this will be reused, otherwise a new transaction manager is created.

Type parameters​

Name
TResult
TError

Parameters​

NameTypeDescription
work(transactionManager: EntityManager) => Promise<TResult>the transactional work to be done
isolationOrErrorHandler?IsolationLevel | (error: TError) => Promise<void | TResult>the isolation level to be used for the work.
maybeErrorHandlerOrDontFail?(error: TError) => Promise<void | TResult>Potential error handler

Returns​

Promise<TResult>

the result of the transactional work

Inherited from​

TransactionBaseService.atomicPhase_

Defined in​

medusa/src/interfaces/transaction-base-service.ts:56


create​

▸ create<TVariants, TOutput>(productOrProductId, variants): Promise<TOutput>

Creates an unpublished product variant. Will validate against parent product to ensure that the variant can in fact be created.

Type parameters​

NameType
TVariantsextends CreateProductVariantInput | CreateProductVariantInput[]
TOutputTVariants extends CreateProductVariantInput[] ? CreateProductVariantInput[] : CreateProductVariantInput

Parameters​

NameTypeDescription
productOrProductIdstring | Productthe product the variant will be added to
variantsCreateProductVariantInput | CreateProductVariantInput[]

Returns​

Promise<TOutput>

resolves to the creation result.

Defined in​

medusa/src/services/product-variant.ts:168


delete​

▸ delete(variantIds): Promise<void>

Deletes variant or variants. Will never fail due to delete being idempotent.

Parameters​

NameTypeDescription
variantIdsstring | string[]the id of the variant to delete. Must be castable as an ObjectId

Returns​

Promise<void>

empty promise

Defined in​

medusa/src/services/product-variant.ts:1006


deleteOptionValue​

▸ deleteOptionValue(variantId, optionId): Promise<void>

Deletes option value from given variant. Will never fail due to delete being idempotent.

Parameters​

NameTypeDescription
variantIdstringthe variant to decorate.
optionIdstringthe option from product.

Returns​

Promise<void>

empty promise

Defined in​

medusa/src/services/product-variant.ts:863


getFreeTextQueryBuilder_​

▸ getFreeTextQueryBuilder_(variantRepo, query, q?): SelectQueryBuilder<ProductVariant>

Lists variants based on the provided parameters and includes the count of variants that match the query.

Parameters​

NameTypeDescription
variantRepoRepository<ProductVariant>the variant repository
queryFindWithRelationsOptionsobject that defines the scope for what should be returned
q?stringfree text query

Returns​

SelectQueryBuilder<ProductVariant>

an array containing the products as the first element and the total count of products that matches the query as the second element.

Defined in​

medusa/src/services/product-variant.ts:1069


getRegionPrice​

▸ getRegionPrice(variantId, context): Promise<null | number>

Gets the price specific to a region. If no region specific money amount exists the function will try to use a currency price. If no default currency price exists the function will throw an error.

Parameters​

NameTypeDescription
variantIdstringthe id of the variant to get price from
contextGetRegionPriceContextcontext for getting region price

Returns​

Promise<null | number>

the price specific to the region

Defined in​

medusa/src/services/product-variant.ts:711


isVariantInSalesChannels​

▸ isVariantInSalesChannels(id, salesChannelIds): Promise<boolean>

Check if the variant is assigned to at least one of the provided sales channels.

Parameters​

NameTypeDescription
idstringproduct variant id
salesChannelIdsstring[]an array of sales channel ids

Returns​

Promise<boolean>

Defined in​

medusa/src/services/product-variant.ts:1044


list​

▸ list(selector, config?): Promise<ProductVariant[]>

Parameters​

NameTypeDescription
selectorFilterableProductVariantPropsthe query object for find
configFindConfig<ProductVariant> & PriceSelectionContextquery config object for variant retrieval

Returns​

Promise<ProductVariant[]>

the result of the find operation

Defined in​

medusa/src/services/product-variant.ts:952


listAndCount​

▸ listAndCount(selector, config?): Promise<[ProductVariant[], number]>

Parameters​

NameTypeDescription
selectorFilterableProductVariantPropsthe query object for find
configFindConfig<ProductVariant> & PriceSelectionContextquery config object for variant retrieval

Returns​

Promise<[ProductVariant[], number]>

the result of the find operation

Defined in​

medusa/src/services/product-variant.ts:891


retrieve​

▸ retrieve(variantId, config?): Promise<ProductVariant>

Gets a product variant by id.

Parameters​

NameTypeDescription
variantIdstringthe id of the product to get.
configFindConfig<ProductVariant> & PriceSelectionContextquery config object for variant retrieval.

Returns​

Promise<ProductVariant>

the product document.

Defined in​

medusa/src/services/product-variant.ts:104


retrieveBySKU​

▸ retrieveBySKU(sku, config?): Promise<ProductVariant>

Gets a product variant by id.

Parameters​

NameTypeDescription
skustringThe unique stock keeping unit used to identify the product variant.
configFindConfig<ProductVariant> & PriceSelectionContextquery config object for variant retrieval.

Returns​

Promise<ProductVariant>

the product document.

Defined in​

medusa/src/services/product-variant.ts:132


setCurrencyPrice​

▸ setCurrencyPrice(variantId, price): Promise<MoneyAmount>

Deprecated

use addOrUpdateCurrencyPrices instead Sets the default price for the given currency.

Parameters​

NameTypeDescription
variantIdstringthe id of the variant to set prices for
priceProductVariantPricethe price for the variant

Returns​

Promise<MoneyAmount>

the result of the update operation

Defined in​

medusa/src/services/product-variant.ts:777


setRegionPrice​

▸ setRegionPrice(variantId, price): Promise<MoneyAmount>

Deprecated

use addOrUpdateRegionPrices instead Sets the default price of a specific region

Parameters​

NameTypeDescription
variantIdstringthe id of the variant to update
priceProductVariantPricethe price for the variant.

Returns​

Promise<MoneyAmount>

the result of the update operation

Defined in​

medusa/src/services/product-variant.ts:740


shouldRetryTransaction_​

▸ Protected shouldRetryTransaction_(err): boolean

Parameters​

NameType
errRecord<string, unknown> | { code: string }

Returns​

boolean

Inherited from​

TransactionBaseService.shouldRetryTransaction_

Defined in​

medusa/src/interfaces/transaction-base-service.ts:37


update​

▸ update(variantData): Promise<ProductVariant[]>

Updates a collection of variant.

Parameters​

NameTypeDescription
variantData{ updateData: UpdateProductVariantInput ; variant: ProductVariant }[]a collection of variant and the data to update.

Returns​

Promise<ProductVariant[]>

resolves to the update result.

Defined in​

medusa/src/services/product-variant.ts:266

▸ update(variantOrVariantId, update): Promise<ProductVariant>

Updates a variant. Price updates should use dedicated methods. The function will throw, if price updates are attempted.

Parameters​

NameTypeDescription
variantOrVariantIdstring | Partial<ProductVariant>variant or id of a variant.
updateUpdateProductVariantInputan object with the update values.

Returns​

Promise<ProductVariant>

resolves to the update result.

Defined in​

medusa/src/services/product-variant.ts:281

▸ update(variantOrVariantId, update): Promise<ProductVariant>

Parameters​

NameType
variantOrVariantIdstring | Partial<ProductVariant>
updateUpdateProductVariantInput

Returns​

Promise<ProductVariant>

Defined in​

medusa/src/services/product-variant.ts:286


updateBatch​

▸ Protected updateBatch(variantData): Promise<ProductVariant[]>

Parameters​

NameType
variantDataUpdateProductVariantData[]

Returns​

Promise<ProductVariant[]>

Defined in​

medusa/src/services/product-variant.ts:340


updateOptionValue​

▸ updateOptionValue(variantId, optionId, optionValue): Promise<ProductOptionValue>

Updates variant's option value. Option value must be of type string or number.

Parameters​

NameTypeDescription
variantIdstringthe variant to decorate.
optionIdstringthe option from product.
optionValuestringoption value to add.

Returns​

Promise<ProductOptionValue>

the result of the update operation.

Defined in​

medusa/src/services/product-variant.ts:798


updateVariantPrices​

▸ updateVariantPrices(data): Promise<void>

Updates variant/prices collection. Deletes any prices that are not in the update object, and is not associated with a price list.

Parameters​

NameType
dataUpdateVariantPricesData[]

Returns​

Promise<void>

empty promise

Defined in​

medusa/src/services/product-variant.ts:438

▸ updateVariantPrices(variantId, prices): Promise<void>

Updates a variant's prices. Deletes any prices that are not in the update object, and is not associated with a price list.

Parameters​

NameTypeDescription
variantIdstringthe id of variant
pricesProductVariantPrice[]the update prices

Returns​

Promise<void>

empty promise

Defined in​

medusa/src/services/product-variant.ts:447


updateVariantPricesBatch​

▸ Protected updateVariantPricesBatch(data): Promise<void>

Parameters​

NameType
dataUpdateVariantPricesData[]

Returns​

Promise<void>

Defined in​

medusa/src/services/product-variant.ts:467


upsertCurrencyPrices​

▸ upsertCurrencyPrices(data): Promise<void>

Parameters​

NameType
data{ price: WithRequiredProperty<ProductVariantPrice, "currency_code"> ; variantId: string }[]

Returns​

Promise<void>

Defined in​

medusa/src/services/product-variant.ts:619


upsertRegionPrices​

▸ upsertRegionPrices(data): Promise<void>

Parameters​

NameType
dataUpdateVariantRegionPriceData[]

Returns​

Promise<void>

Defined in​

medusa/src/services/product-variant.ts:540


validateVariantsToCreate_​

▸ Protected validateVariantsToCreate_(product, variants): void

Parameters​

NameType
productProduct
variantsCreateProductVariantInput[]

Returns​

void

Defined in​

medusa/src/services/product-variant.ts:1104


withTransaction​

▸ withTransaction(transactionManager?): ProductVariantService

Parameters​

NameType
transactionManager?EntityManager

Returns​

ProductVariantService

Inherited from​

TransactionBaseService.withTransaction

Defined in​

medusa/src/interfaces/transaction-base-service.ts:20

Was this section helpful?