Export core schema types, provide reversed day/number record type

This commit is contained in:
2023-11-15 20:48:52 -06:00
parent f71e8e3603
commit 50665fb444
+16 -6
View File
@@ -1,12 +1,12 @@
import { intersection } from '@/sets';
import { z } from 'zod';
type ParsedTime = {
export type ParsedTime = {
hours: number;
minutes: number;
};
const DayEnumSchema = z.enum([
export const DayEnumSchema = z.enum([
'monday',
'tuesday',
'wednesday',
@@ -15,7 +15,7 @@ const DayEnumSchema = z.enum([
'saturday',
'sunday'
]);
type DayEnum = z.infer<typeof DayEnumSchema>;
export type DayEnum = z.infer<typeof DayEnumSchema>;
const TimeConfigSchema = z.object({
// A short name to be included in notifications
@@ -160,8 +160,8 @@ export const ConfigurationSchema = z.object({
message: `A maxLate's value cannot place it outside of the given day (${maxLateTime.hours
.toString()
.padStart(2, '0')}:${maxLateTime.minutes
.toString()
.padStart(2, '0')})`
.toString()
.padStart(2, '0')})`
});
});
@@ -202,7 +202,7 @@ export const ConfigurationSchema = z.object({
});
export type Configuration = z.infer<typeof ConfigurationSchema>;
const dayAsNumber: Record<string, DayEnum> = {
export const dayAsNumber: Record<string, DayEnum> = {
1: 'monday',
2: 'tuesday',
3: 'wednesday',
@@ -212,6 +212,16 @@ const dayAsNumber: Record<string, DayEnum> = {
0: 'sunday'
};
export const numberAsDay: Record<DayEnum, number> = {
monday: 1,
tuesday: 2,
wednesday: 3,
thursday: 4,
friday: 5,
saturday: 6,
sunday: 0
};
export async function getMatchingTime(
config: Configuration,
now: Date = new Date()