mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 08:42:12 +10:00
feat: add inbox counter (#1849)
This commit is contained in:
35
packages/trpc/server/document-router/get-inbox-count.ts
Normal file
35
packages/trpc/server/document-router/get-inbox-count.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import { DocumentStatus, RecipientRole } from '@prisma/client';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
import { ZGetInboxCountRequestSchema, ZGetInboxCountResponseSchema } from './get-inbox-count.types';
|
||||
|
||||
export const getInboxCountRoute = authenticatedProcedure
|
||||
.input(ZGetInboxCountRequestSchema)
|
||||
.output(ZGetInboxCountResponseSchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
const { readStatus } = input ?? {};
|
||||
|
||||
const userEmail = ctx.user.email;
|
||||
|
||||
const count = await prisma.recipient.count({
|
||||
where: {
|
||||
email: userEmail,
|
||||
readStatus,
|
||||
role: {
|
||||
not: RecipientRole.CC,
|
||||
},
|
||||
document: {
|
||||
status: {
|
||||
not: DocumentStatus.DRAFT,
|
||||
},
|
||||
deletedAt: null,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
count,
|
||||
};
|
||||
});
|
||||
@ -0,0 +1,15 @@
|
||||
// import type { OpenApiMeta } from 'trpc-to-openapi';
|
||||
import { ReadStatus } from '@prisma/client';
|
||||
import { z } from 'zod';
|
||||
|
||||
export const ZGetInboxCountRequestSchema = z
|
||||
.object({
|
||||
readStatus: z.nativeEnum(ReadStatus).optional(),
|
||||
})
|
||||
.optional();
|
||||
|
||||
export const ZGetInboxCountResponseSchema = z.object({
|
||||
count: z.number(),
|
||||
});
|
||||
|
||||
export type TGetInboxCountResponse = z.infer<typeof ZGetInboxCountResponseSchema>;
|
||||
@ -28,6 +28,7 @@ import { isDocumentCompleted } from '@documenso/lib/utils/document';
|
||||
|
||||
import { authenticatedProcedure, procedure, router } from '../trpc';
|
||||
import { findInboxRoute } from './find-inbox';
|
||||
import { getInboxCountRoute } from './get-inbox-count';
|
||||
import {
|
||||
ZCreateDocumentRequestSchema,
|
||||
ZCreateDocumentV2RequestSchema,
|
||||
@ -59,6 +60,7 @@ import { updateDocumentRoute } from './update-document';
|
||||
export const documentRouter = router({
|
||||
inbox: {
|
||||
find: findInboxRoute,
|
||||
getCount: getInboxCountRoute,
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user