Fixes: FRMW-2728, FRMW-2729 After this PR gets merged the following middleware will be exported from the `@medusajs/framework/http` import path. - applyParamsAsFilters - clearFiltersByKey - applyDefaultFilters - setContext - getQueryConfig - httpCompression - maybeApplyLinkFilter - refetchEntities - unlessPath - validateBody - validateQuery Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import {
|
|
AuthenticatedMedusaRequest,
|
|
MedusaResponse,
|
|
} from "@medusajs/framework/http"
|
|
import { createCampaignsWorkflow } from "@medusajs/core-flows"
|
|
import {
|
|
ContainerRegistrationKeys,
|
|
remoteQueryObjectFromString,
|
|
} from "@medusajs/framework/utils"
|
|
import { AdminCreateCampaignType } from "./validators"
|
|
import { refetchCampaign } from "./helpers"
|
|
import { AdditionalData, HttpTypes } from "@medusajs/framework/types"
|
|
|
|
export const GET = async (
|
|
req: AuthenticatedMedusaRequest<HttpTypes.AdminGetCampaignParams>,
|
|
res: MedusaResponse<HttpTypes.AdminCampaignListResponse>
|
|
) => {
|
|
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
|
|
|
|
const query = remoteQueryObjectFromString({
|
|
entryPoint: "campaign",
|
|
variables: {
|
|
filters: req.filterableFields,
|
|
...req.remoteQueryConfig.pagination,
|
|
},
|
|
fields: req.remoteQueryConfig.fields,
|
|
})
|
|
|
|
const { rows: campaigns, metadata } = await remoteQuery(query)
|
|
|
|
res.json({
|
|
campaigns,
|
|
count: metadata.count,
|
|
offset: metadata.skip,
|
|
limit: metadata.take,
|
|
})
|
|
}
|
|
|
|
export const POST = async (
|
|
req: AuthenticatedMedusaRequest<AdminCreateCampaignType & AdditionalData>,
|
|
res: MedusaResponse<HttpTypes.AdminCampaignResponse>
|
|
) => {
|
|
const { additional_data, ...rest } = req.validatedBody
|
|
const createCampaigns = createCampaignsWorkflow(req.scope)
|
|
const campaignsData = [rest]
|
|
|
|
const { result } = await createCampaigns.run({
|
|
input: { campaignsData, additional_data },
|
|
context: {
|
|
requestId: req.requestId,
|
|
},
|
|
})
|
|
|
|
const campaign = await refetchCampaign(
|
|
result[0].id,
|
|
req.scope,
|
|
req.remoteQueryConfig.fields
|
|
)
|
|
|
|
res.status(200).json({ campaign })
|
|
}
|