feat(medusa,types): GET admin promotion endpoint to fetch by code (#6697)
what: - GET admin promotion endpoint will search for a promotion either through ID or code
This commit is contained in:
@@ -2,27 +2,42 @@ import {
|
||||
deletePromotionsWorkflow,
|
||||
updatePromotionsWorkflow,
|
||||
} from "@medusajs/core-flows"
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IPromotionModuleService, UpdatePromotionDTO } from "@medusajs/types"
|
||||
import { MedusaError } from "@medusajs/utils"
|
||||
import {
|
||||
AuthenticatedMedusaRequest,
|
||||
MedusaResponse,
|
||||
} from "../../../../types/routing"
|
||||
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IPromotionModuleService, UpdatePromotionDTO } from "@medusajs/types"
|
||||
import { AdminPostPromotionsPromotionReq } from "../validators"
|
||||
import {
|
||||
AdminGetPromotionsParams,
|
||||
AdminPostPromotionsPromotionReq,
|
||||
} from "../validators"
|
||||
|
||||
export const GET = async (
|
||||
req: AuthenticatedMedusaRequest,
|
||||
req: AuthenticatedMedusaRequest<AdminGetPromotionsParams>,
|
||||
res: MedusaResponse
|
||||
) => {
|
||||
const idOrCode = req.params.id
|
||||
const promotionModuleService: IPromotionModuleService = req.scope.resolve(
|
||||
ModuleRegistrationName.PROMOTION
|
||||
)
|
||||
|
||||
const promotion = await promotionModuleService.retrieve(req.params.id, {
|
||||
select: req.retrieveConfig.select,
|
||||
relations: req.retrieveConfig.relations,
|
||||
})
|
||||
const [promotion] = await promotionModuleService.list(
|
||||
{ $or: [{ id: idOrCode }, { code: idOrCode }] },
|
||||
{
|
||||
select: req.retrieveConfig.select,
|
||||
relations: req.retrieveConfig.relations,
|
||||
take: 1,
|
||||
}
|
||||
)
|
||||
|
||||
if (!promotion) {
|
||||
throw new MedusaError(
|
||||
MedusaError.Types.NOT_FOUND,
|
||||
`Promotion with id or code: does-not-exist was not found`
|
||||
)
|
||||
}
|
||||
|
||||
res.status(200).json({ promotion })
|
||||
}
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
import { BaseFilterable, OperatorMap } from "../../dal"
|
||||
import { CreateCampaignDTO } from "../mutations"
|
||||
import {
|
||||
ApplicationMethodDTO,
|
||||
CreateApplicationMethodDTO,
|
||||
UpdateApplicationMethodDTO,
|
||||
} from "./application-method"
|
||||
import { CreatePromotionRuleDTO, PromotionRuleDTO } from "./promotion-rule"
|
||||
|
||||
import { BaseFilterable } from "../../dal"
|
||||
import { CampaignDTO } from "./campaign"
|
||||
import { CreateCampaignDTO } from "../mutations"
|
||||
import { CreatePromotionRuleDTO, PromotionRuleDTO } from "./promotion-rule"
|
||||
|
||||
export type PromotionTypeValues = "standard" | "buyget"
|
||||
|
||||
@@ -42,9 +41,9 @@ export interface UpdatePromotionDTO {
|
||||
|
||||
export interface FilterablePromotionProps
|
||||
extends BaseFilterable<FilterablePromotionProps> {
|
||||
id?: string[]
|
||||
code?: string[]
|
||||
id?: string | string[]
|
||||
code?: string | string[] | OperatorMap<string>
|
||||
budget_id?: string[] | OperatorMap<string>
|
||||
is_automatic?: boolean
|
||||
type?: PromotionTypeValues[]
|
||||
budget_id?: string[]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user