feat: Add notification endpoints for admin (#8196)

This commit is contained in:
Stevche Radevski authored and GitHub committed 2024-07-19 22:00:53 +02:00
1 parent ecc97076b5
commit 56f2ddc4b6
15 files changed
+209 -3

No files matched your search

@@ -0,0 +1,19 @@
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../../types/routing"
import { AdminGetNotificationParamsType } from "../validators"
import { refetchEntity } from "../../../utils/refetch-entity"
export const GET = async (
req: AuthenticatedMedusaRequest<AdminGetNotificationParamsType>,
res: MedusaResponse
) => {
const notification = await refetchEntity(
"notification",
req.params.id,
req.scope,
req.remoteQueryConfig.fields
)
res.status(200).json({ notification })
}
@@ -0,0 +1,30 @@
import { MiddlewareRoute } from "../../../loaders/helpers/routing/types"
import { validateAndTransformQuery } from "../../utils/validate-query"
import * as QueryConfig from "./query-config"
import {
AdminGetNotificationParams,
AdminGetNotificationsParams,
} from "./validators"
export const adminNotificationRoutesMiddlewares: MiddlewareRoute[] = [
{
method: ["GET"],
matcher: "/admin/notifications",
middlewares: [
validateAndTransformQuery(
AdminGetNotificationsParams,
QueryConfig.listTransformQueryConfig
),
],
},
{
method: ["GET"],
matcher: "/admin/notifications/:id",
middlewares: [
validateAndTransformQuery(
AdminGetNotificationParams,
QueryConfig.retrieveTransformQueryConfig
),
],
},
]
@@ -0,0 +1,23 @@
export const defaultAdminNotificationFields = [
"id",
"to",
"channel",
"template",
"data",
"trigger_type",
"resource_id",
"resource_type",
"receiver_id",
"created_at",
"updated_at",
]
export const retrieveTransformQueryConfig = {
defaults: defaultAdminNotificationFields,
isList: false,
}
export const listTransformQueryConfig = {
...retrieveTransformQueryConfig,
isList: true,
}
@@ -0,0 +1,25 @@
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../types/routing"
import { AdminGetNotificationsParamsType } from "./validators"
import { refetchEntities } from "../../utils/refetch-entity"
export const GET = async (
req: AuthenticatedMedusaRequest<AdminGetNotificationsParamsType>,
res: MedusaResponse
) => {
const { rows: notifications, metadata } = await refetchEntities(
"notification",
req.filterableFields,
req.scope,
req.remoteQueryConfig.fields,
req.remoteQueryConfig.pagination
)
res.json({
notifications,
count: metadata.count,
offset: metadata.skip,
limit: metadata.take,
})
}
@@ -0,0 +1,23 @@
import { z } from "zod"
import { createFindParams, createSelectParams } from "../../utils/validators"
export type AdminGetNotificationParamsType = z.infer<
typeof AdminGetNotificationParams
>
export const AdminGetNotificationParams = createSelectParams()
export type AdminGetNotificationsParamsType = z.infer<
typeof AdminGetNotificationsParams
>
export const AdminGetNotificationsParams = createFindParams({
limit: 50,
offset: 0,
}).merge(
z.object({
q: z.string().optional(),
id: z.union([z.string(), z.array(z.string())]).optional(),
channel: z.union([z.string(), z.array(z.string())]).optional(),
$and: z.lazy(() => AdminGetNotificationsParams.array()).optional(),
$or: z.lazy(() => AdminGetNotificationsParams.array()).optional(),
})
)
+2
View File
@@ -11,6 +11,7 @@ import { adminFulfillmentSetsRoutesMiddlewares } from "./admin/fulfillment-sets/
import { adminFulfillmentsRoutesMiddlewares } from "./admin/fulfillments/middlewares"
import { adminInventoryRoutesMiddlewares } from "./admin/inventory-items/middlewares"
import { adminInviteRoutesMiddlewares } from "./admin/invites/middlewares"
import { adminNotificationRoutesMiddlewares } from "./admin/notifications/middlewares"
import { adminOrderRoutesMiddlewares } from "./admin/orders/middlewares"
import { adminPaymentRoutesMiddlewares } from "./admin/payments/middlewares"
import { adminPriceListsRoutesMiddlewares } from "./admin/price-lists/middlewares"
@@ -92,6 +93,7 @@ export const config: MiddlewaresConfig = {
...adminProductTagRoutesMiddlewares,
...adminUploadRoutesMiddlewares,
...adminFulfillmentSetsRoutesMiddlewares,
...adminNotificationRoutesMiddlewares,
...adminOrderRoutesMiddlewares,
...adminReservationRoutesMiddlewares,
...adminProductCategoryRoutesMiddlewares,