feat(medusa,pricing,types): added get endpoints for pricing rule types (#6678)

what:

- adds list endpoint for rule types
- adds get endpoint for rule types
This commit is contained in:
Riqwan Thamir
2024-03-12 17:35:24 +00:00
committed by GitHub
parent f0c8142635
commit d4b921f3db
14 changed files with 312 additions and 14 deletions
@@ -0,0 +1,35 @@
import { transformQuery } from "../../../api/middlewares"
import { MiddlewareRoute } from "../../../loaders/helpers/routing/types"
import { authenticate } from "../../../utils/authenticate-middleware"
import * as QueryConfig from "./query-config"
import {
AdminGetPricingRuleTypesParams,
AdminGetPricingRuleTypesRuleTypeParams,
} from "./validators"
export const adminPricingRoutesMiddlewares: MiddlewareRoute[] = [
{
matcher: "/admin/pricing*",
middlewares: [authenticate("admin", ["bearer", "session"])],
},
{
method: ["GET"],
matcher: "/admin/pricing/rule-types",
middlewares: [
transformQuery(
AdminGetPricingRuleTypesParams,
QueryConfig.listTransformQueryConfig
),
],
},
{
method: ["GET"],
matcher: "/admin/pricing/rule-types/:id",
middlewares: [
transformQuery(
AdminGetPricingRuleTypesRuleTypeParams,
QueryConfig.retrieveTransformQueryConfig
),
],
},
]
@@ -0,0 +1,20 @@
export const defaultAdminPricingRuleTypeRelations = []
export const allowedAdminPricingRuleTypeRelations = []
export const defaultAdminPricingRuleTypeFields = [
"id",
"name",
"rule_attribute",
"default_priority",
]
export const retrieveTransformQueryConfig = {
defaultFields: defaultAdminPricingRuleTypeFields,
defaultRelations: defaultAdminPricingRuleTypeRelations,
allowedRelations: allowedAdminPricingRuleTypeRelations,
isList: false,
}
export const listTransformQueryConfig = {
...retrieveTransformQueryConfig,
isList: true,
}
@@ -0,0 +1,23 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import { IPricingModuleService } from "@medusajs/types"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../../../types/routing"
import { AdminGetPricingRuleTypesRuleTypeParams } from "../../validators"
export const GET = async (
req: AuthenticatedMedusaRequest<AdminGetPricingRuleTypesRuleTypeParams>,
res: MedusaResponse
) => {
const pricingModule: IPricingModuleService = req.scope.resolve(
ModuleRegistrationName.PRICING
)
const ruleType = await pricingModule.retrieveRuleType(req.params.id, {
select: req.retrieveConfig.select,
relations: req.retrieveConfig.relations,
})
res.status(200).json({ rule_type: ruleType })
}
@@ -0,0 +1,30 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import { IPricingModuleService } from "@medusajs/types"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../../types/routing"
import { AdminGetPricingRuleTypesParams } from "../validators"
export const GET = async (
req: AuthenticatedMedusaRequest<AdminGetPricingRuleTypesParams>,
res: MedusaResponse
) => {
const pricingModule: IPricingModuleService = req.scope.resolve(
ModuleRegistrationName.PRICING
)
const [ruleTypes, count] = await pricingModule.listAndCountRuleTypes(
req.filterableFields,
req.listConfig
)
const { limit, offset } = req.validatedQuery
res.json({
count,
rule_types: ruleTypes,
offset,
limit,
})
}
@@ -0,0 +1,12 @@
import { IsOptional, IsString } from "class-validator"
import { FindParams, extendedFindParamsMixin } from "../../../types/common"
export class AdminGetPricingRuleTypesRuleTypeParams extends FindParams {}
export class AdminGetPricingRuleTypesParams extends extendedFindParamsMixin({
limit: 100,
offset: 0,
}) {
@IsString()
@IsOptional()
rule_attribute?: string[]
}