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
|
/* IMPORT */
import * as z from 'zod';
import {
createSearchParamsCache,
parseAsArrayOf,
parseAsInteger,
parseAsString,
parseAsStringEnum,
} from 'nuqs/server';
import { getFiltersStateParser, getSortingStateParser } from '@/lib/parsers';
import { RisksView } from '@/db/schema';
// ----------------------------------------------------------------------------------------------------
function getPreviousWeekday(date: Date) {
const referenceTime = new Date(date);
referenceTime.setHours(6, 0, 0, 0);
const result = new Date(date);
if (date < referenceTime) {
result.setDate(result.getDate() - 1);
}
const day = result.getDay();
if (day === 1) {
result.setDate(result.getDate() - 3);
} else if (day === 0) {
result.setDate(result.getDate() - 2);
} else {
result.setDate(result.getDate() - 1);
}
return result;
}
const previousWorkday = getPreviousWeekday(new Date());
const defaultFrom = new Date(previousWorkday);
defaultFrom.setHours(0, 0, 0, 0);
const defaultTo = new Date(previousWorkday);
defaultTo.setHours(23, 59, 59, 999);
const defaultFromStr = defaultFrom.toISOString();
const defaultToStr = defaultTo.toISOString();
/* QUERY PARAMETER SCHEMATA */
const searchParamsCache = createSearchParamsCache({
flags: parseAsArrayOf(z.enum(['advancedTable', 'floatingBar'])).withDefault([]),
page: parseAsInteger.withDefault(1),
perPage: parseAsInteger.withDefault(10),
sort: getSortingStateParser<RisksView>().withDefault([
{ id: 'occuredAt', desc: true },
]),
filters: getFiltersStateParser().withDefault([]),
joinOperator: parseAsStringEnum(['and', 'or']).withDefault('and'),
search: parseAsString.withDefault(''),
from: parseAsString.withDefault(defaultFromStr),
to: parseAsString.withDefault(defaultToStr),
});
// ----------------------------------------------------------------------------------------------------
/* TYPES */
type GetRisksSchema = Awaited<ReturnType<typeof searchParamsCache.parse>>;
// ----------------------------------------------------------------------------------------------------
/* EXPORT */
export {
getPreviousWeekday,
searchParamsCache,
type GetRisksSchema,
};
|