Files
medusa-store/packages/medusa/src/api/admin/campaigns/route.ts
T
Harminder VirkandAdrien de Peretti 48e00169d2 breaking: move shared HTTP utils to the framework (#9402)
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>
2024-10-03 09:42:00 +00:00

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 })
}