feat: Add notification endpoints for admin (#8196)
This commit is contained in:
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(),
|
||||
})
|
||||
)
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user