Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | 5x 3x 5x 6x 5x 3x 5x | /**
* 排序参数 Zod Schema 定义
*/
import { z } from 'zod';
/**
* 排序方向 Schema
*/
export const SortOrderSchema = z.enum(['asc', 'desc']);
/**
* 排序方向类型
*/
export type SortOrder = z.infer<typeof SortOrderSchema>;
/**
* 排序参数类型
*/
export type SortParams<T extends string = string> = {
/**
* 排序字段
*/
sortBy?: T;
/**
* 排序方向
*/
sortOrder?: SortOrder;
};
/**
* 创建排序参数 Schema
*
* 单字段排序参数
*
* @typeParam T - 排序字段枚举类型
*/
export function createSortParamsSchema<T extends [string, ...string[]]>(fields: T) {
return z.object({
/**
* 排序字段
*/
sortBy: z.enum(fields).optional(),
/**
* 排序方向
*/
sortOrder: SortOrderSchema.optional(),
});
}
/**
* 默认排序参数 Schema(字符串字段)
*/
export const SortParamsSchema = z.object({
/**
* 排序字段
*/
sortBy: z.string().optional(),
/**
* 排序方向
*/
sortOrder: SortOrderSchema.optional(),
});
/**
* 多字段排序项类型
*/
export type SortItem<T extends string = string> = {
/**
* 排序字段
*/
field: T;
/**
* 排序方向
*/
order: SortOrder;
};
/**
* 创建多字段排序项 Schema
*
* 单个排序项定义
*
* @typeParam T - 排序字段枚举类型
*/
export function createSortItemSchema<T extends [string, ...string[]]>(fields: T) {
return z.object({
/**
* 排序字段
*/
field: z.enum(fields),
/**
* 排序方向
*/
order: SortOrderSchema,
});
}
/**
* 默认排序项 Schema(字符串字段)
*/
export const SortItemSchema = z.object({
/**
* 排序字段
*/
field: z.string(),
/**
* 排序方向
*/
order: SortOrderSchema,
});
/**
* 多字段排序参数类型
*/
export type MultiSortParams<T extends string = string> = {
/**
* 排序项数组
*/
sort?: SortItem<T>[];
};
/**
* 创建多字段排序参数 Schema
*
* 支持多个字段的排序
*
* @typeParam T - 排序字段枚举类型
*/
export function createMultiSortParamsSchema<T extends [string, ...string[]]>(fields: T) {
return z.object({
/**
* 排序项数组
*/
sort: z.array(createSortItemSchema(fields)).optional(),
});
}
/**
* 默认多字段排序参数 Schema(字符串字段)
*/
export const MultiSortParamsSchema = z.object({
/**
* 排序项数组
*/
sort: z.array(SortItemSchema).optional(),
});
|