feat(medusa): integrate pricing module to core (#5304)

* add pricing integraiton feature flag

* init

* first endpoint

* cleanup

* remove console.logs

* refactor to util and implement across endpoints

* add changeset

* rename variables

* remove mistype

* feat(medusa): move price module integration to pricing service (#5322)

* initial changes

* chore: make product service always internal for pricing module

* add notes

---------

Co-authored-by: Riqwan Thamir <rmthamir@gmail.com>

* nit

* cleanup

* update to object querying

* update cart integration test

* remove uppercase currency_code

* nit

* Feat/admin product pricing module reads (#5354)

* initial changes to list prices for admin

* working price module implementation of list prices

* nit

* variant pricing

* redo integration test changes

* cleanup

* cleanup

* fix unit tests

* [wip] Core <> Pricing - price updates  (#5364)

* chore: update medusa-app

* wip

* get links and modules working with migration

* wip

* chore: make test pass

* Feat/rule type utils (#5371)

* initial rule type utils

* update migration script

* chore: cleanup

* ensure prices are always decorated

* chore: use seed instead

* chore: fix oas conflict

* region id add to admin price read!

---------

Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
Co-authored-by: Philip Korsholm <philip.korsholm@hotmail.com>

* pr feedback

* create remoteQueryFunction type

* fix merge

* fix loaders issue

* Feat(medusa, types, pricing): pricing module migration script (#5409)

* add migration script for money amounts in pricing module

* add changeset

* rename file

* cleanup imports

* update changeset

* add check for pricing module and ff

* feat(medusa,workflows,types): update prices on product and variant update (#5412)

* wip

* chore: update product prices through workflow

* chore: cleanup

* chore: update product handler updates prices for variants

* chore: handle reverts

* chore: address pr comments

* chore: scope workflow handlers to flag handlers

* chore: update return

* chore: update db url

* chore: remove migration

* chore: increase jest timeout

* Feat(medusa): update migration and initDb to run link-migrations (#5437)

* initial

* loader update

* more progress on loaders

* update integration tests and remote-query loader

* remove helper

* migrate isolated modules

* fix test

* fix integration test

* update with pr feedback

* unregister medusa-app

* re-register medusaApp

* fix featureflag

* set timeout

* set timeout

* conditionally run link-module migrations

* pr feedback 1

* add driver options for db

* throw if link is not defined in migration script

* pass config module directly

* include container in migrate command

* chore: increase timeout

* rm redis from api integration tests to test

* chore: temporarily skip tests

* chore: undo skips + add timeout for workflow tests

* chore: increase timeout for order edits

* re-add redis

* include final resolution

* add sharedcontainer to medusaapp loader

* chore: move migration under run command

* try removing redis_url from api tests

* chore: cleanup server on process exit

* chore: clear container on exit

* chore: adjustments

* chore: remove consoles

* chore: close express app on finish

* chore: destroy pg connection on shutdown

* chore: skip

* chore: unskip test

* chore: cleanup container pg connection

* chore: skip

---------

Co-authored-by: Riqwan Thamir <rmthamir@gmail.com>
This commit is contained in:
Philip Korsholm
2023-10-30 14:42:17 +01:00
committed by GitHub
co-authored by Riqwan Thamir Philip Korsholm
parent b69f182571
commit 148f537b47
84 changed files with 2702 additions and 284 deletions
+7 -2
View File
@@ -1,8 +1,8 @@
import { JoinerRelationship, JoinerServiceConfig } from "../joiner"
import { JoinerRelationship, JoinerServiceConfig, RemoteJoinerQuery } from "../joiner"
import { Logger } from "../logger"
import { MedusaContainer } from "../common"
import { RepositoryService } from "../dal"
import { Logger } from "../logger"
export type Constructor<T> = new (...args: any[]) => T
export * from "../common/medusa-container"
@@ -260,3 +260,8 @@ export type ModuleServiceInitializeCustomDataLayerOptions = {
[key: string]: Constructor<RepositoryService>
}
}
export type RemoteQueryFunction = (
query: string | RemoteJoinerQuery | object,
variables?: Record<string, unknown>
) => Promise<any> | null
@@ -39,8 +39,8 @@ export interface CreateMoneyAmountDTO {
currency_code: string
currency?: CreateCurrencyDTO
amount?: number
min_quantity?: number
max_quantity?: number
min_quantity?: number | null
max_quantity?: number | null
}
/**
@@ -1,4 +1,6 @@
import { BaseFilterable } from "../../dal"
import { MoneyAmountDTO } from "./money-amount"
import { PriceRuleDTO } from "./price-rule"
import { PriceSetDTO } from "./price-set"
/**
@@ -15,6 +17,8 @@ export interface PriceSetMoneyAmountDTO {
id: string
title?: string
price_set?: PriceSetDTO
price_set_id?: string
price_rules?: PriceRuleDTO[]
money_amount?: MoneyAmountDTO
}
@@ -30,3 +34,9 @@ export interface CreatePriceSetMoneyAmountDTO {
price_set?: PriceSetDTO | string
money_amount?: MoneyAmountDTO | string
}
export interface FilterablePriceSetMoneyAmountProps
extends BaseFilterable<FilterablePriceSetMoneyAmountProps> {
id?: string[]
price_set_id?: string[]
}
+17 -1
View File
@@ -12,12 +12,14 @@ import {
FilterableCurrencyProps,
FilterableMoneyAmountProps,
FilterablePriceRuleProps,
FilterablePriceSetMoneyAmountProps,
FilterablePriceSetMoneyAmountRulesProps,
FilterablePriceSetProps,
FilterableRuleTypeProps,
MoneyAmountDTO,
PriceRuleDTO,
PriceSetDTO,
PriceSetMoneyAmountDTO,
PriceSetMoneyAmountRulesDTO,
PricingContext,
PricingFilters,
@@ -31,9 +33,9 @@ import {
UpdateRuleTypeDTO,
} from "./common"
import { Context } from "../shared-context"
import { FindConfig } from "../common"
import { ModuleJoinerConfig } from "../modules-sdk"
import { Context } from "../shared-context"
export interface IPricingModuleService {
/**
@@ -2198,6 +2200,20 @@ export interface IPricingModuleService {
sharedContext?: Context
): Promise<[PriceSetMoneyAmountRulesDTO[], number]>
listPriceSetMoneyAmounts(
filters?: FilterablePriceSetMoneyAmountProps,
config?: FindConfig<PriceSetMoneyAmountDTO>,
sharedContext?: Context
): Promise<PriceSetMoneyAmountDTO[]>
listAndCountPriceSetMoneyAmounts(
filters?: FilterablePriceSetMoneyAmountProps,
config?: FindConfig<PriceSetMoneyAmountDTO>,
sharedContext?: Context
): Promise<[PriceSetMoneyAmountDTO[], number]>
/**
* This method is used to create new price set money amount rules. A price set money amount rule creates an association between a price set money amount and
* a rule type.
@@ -1,2 +1,3 @@
export * from "./create-products"
export * from "./update-product-variants"
export * from "./update-products"
@@ -0,0 +1,41 @@
export interface UpsertProductVariantPricesInputDTO {
id?: string
region_id?: string
currency_code?: string
amount: number
min_quantity?: number
max_quantity?: number
}
export interface UpsertProductVariantOptionInputDTO {
value: string
option_id: string
}
export interface UpdateProductVariantsInputDTO {
id: string
title?: string
sku?: string
ean?: string
upc?: string
barcode?: string
hs_code?: string
inventory_quantity?: number
allow_backorder?: boolean
manage_inventory?: boolean
weight?: number
length?: number
height?: number
width?: number
origin_country?: string
mid_code?: string
material?: string
metadata?: Record<string, unknown>
prices?: UpsertProductVariantPricesInputDTO[]
options?: UpsertProductVariantOptionInputDTO[]
}
export interface UpdateProductVariantsWorkflowInputDTO {
productVariants: UpdateProductVariantsInputDTO[]
}