33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { z } from 'zod';
|
|
import { currentAcademicYearStart, graduationYearOf } from '@classhelper/shared';
|
|
import { enrollmentYearSchema } from '../../lib/schemas.js';
|
|
|
|
/** 届别列表的查询参数 */
|
|
export const listArchivesQuerySchema = z.object({
|
|
/** 只看某一届 */
|
|
enrollmentYear: enrollmentYearSchema.optional(),
|
|
keyword: z.string().trim().max(64).optional(),
|
|
});
|
|
|
|
/** 归档班级的内容(作业 / 通知)查询 */
|
|
export const archivedContentQuerySchema = z.object({
|
|
/** 作业与通知最多各返回多少条(默认 200) */
|
|
limit: z.coerce.number().int().min(1).max(500).optional(),
|
|
});
|
|
|
|
export const archiveClassParamSchema = z.object({
|
|
id: z.string().min(1),
|
|
classId: z.string().min(1),
|
|
});
|
|
|
|
/**
|
|
* 可归档的届别(前端下拉用):当前学年往前推几届,已经毕业的那几届就是候选。
|
|
* 只给"看起来该毕业了"的届别,避免管理员手滑把在读的届归档掉。
|
|
*/
|
|
export function suggestedEnrollmentYears(now: Date = new Date()): number[] {
|
|
const start = currentAcademicYearStart(now);
|
|
return [start - 2, start - 3, start - 4, start - 5];
|
|
}
|
|
|
|
export { graduationYearOf };
|