mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 01:15:49 +10:00
feat: rework command search (#3109)
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import { adminGlobalSearch } from '@documenso/lib/server-only/admin/admin-global-search';
|
||||
|
||||
import { adminProcedure } from '../trpc';
|
||||
import { ZAdminSearchRequestSchema, ZAdminSearchResponseSchema } from './admin-search.types';
|
||||
|
||||
export const adminSearchRoute = adminProcedure
|
||||
.input(ZAdminSearchRequestSchema)
|
||||
.output(ZAdminSearchResponseSchema)
|
||||
.query(async ({ input }) => {
|
||||
const { query } = input;
|
||||
|
||||
const groups = await adminGlobalSearch({ query });
|
||||
|
||||
return { groups };
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export const ZAdminSearchResultTypeSchema = z.enum([
|
||||
'document',
|
||||
'user',
|
||||
'organisation',
|
||||
'team',
|
||||
'recipient',
|
||||
'subscription',
|
||||
]);
|
||||
|
||||
export const ZAdminSearchResultSchema = z.object({
|
||||
label: z.string(),
|
||||
sublabel: z.string().optional(),
|
||||
path: z.string(),
|
||||
value: z.string(),
|
||||
});
|
||||
|
||||
export const ADMIN_SEARCH_MAX_QUERY_LENGTH = 100;
|
||||
|
||||
export const ZAdminSearchRequestSchema = z.object({
|
||||
query: z.string().trim().min(1).max(ADMIN_SEARCH_MAX_QUERY_LENGTH),
|
||||
});
|
||||
|
||||
export const ZAdminSearchResponseSchema = z.object({
|
||||
groups: z.array(
|
||||
z.object({
|
||||
type: ZAdminSearchResultTypeSchema,
|
||||
results: ZAdminSearchResultSchema.array(),
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
export type TAdminSearchResultType = z.infer<typeof ZAdminSearchResultTypeSchema>;
|
||||
export type TAdminSearchResult = z.infer<typeof ZAdminSearchResultSchema>;
|
||||
export type TAdminSearchRequest = z.infer<typeof ZAdminSearchRequestSchema>;
|
||||
export type TAdminSearchResponse = z.infer<typeof ZAdminSearchResponseSchema>;
|
||||
@@ -1,4 +1,5 @@
|
||||
import { router } from '../trpc';
|
||||
import { adminSearchRoute } from './admin-search';
|
||||
import { createAdminOrganisationRoute } from './create-admin-organisation';
|
||||
import { createStripeCustomerRoute } from './create-stripe-customer';
|
||||
import { createSubscriptionClaimRoute } from './create-subscription-claim';
|
||||
@@ -118,5 +119,6 @@ export const adminRouter = router({
|
||||
teamMember: {
|
||||
delete: deleteAdminTeamMemberRoute,
|
||||
},
|
||||
search: adminSearchRoute,
|
||||
updateSiteSetting: updateSiteSettingRoute,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user