All files / shared/types/models settings.ts

100% Statements 6/6
100% Branches 0/0
100% Functions 1/1
100% Lines 6/6

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                436x 436x 436x     436x                 436x                     436x                              
import { z } from "zod";
import {
  LoginProvider,
  EventSignupStrategy,
} from "shared/config/eventConfigTypes";
import { EmailNotificationTrigger } from "shared/types/emailNotification";
import { ADMIN_MESSAGE_LENGTH_MAX } from "shared/constants/validation";
 
export enum SignupQuestionType {
  TEXT = "text",
  SELECT = "select",
}
 
const SignupQuestionSelectOptionSchema = z.object({
  optionFi: z.string(),
  optionEn: z.string(),
});
 
export type SignupQuestionSelectOption = z.infer<
  typeof SignupQuestionSelectOptionSchema
>;
 
export const SignupQuestionSchema = z.object({
  programItemId: z.string(),
  questionFi: z.string(),
  questionEn: z.string(),
  private: z.boolean(),
  type: z.enum(SignupQuestionType),
  selectOptions: z.array(SignupQuestionSelectOptionSchema),
});
 
export type SignupQuestion = z.infer<typeof SignupQuestionSchema>;
 
export const SettingsSchema = z.object({
  hiddenProgramItemIds: z.array(z.string()),
  appOpen: z.boolean(),
  adminMessageFi: z.string().max(ADMIN_MESSAGE_LENGTH_MAX),
  adminMessageEn: z.string().max(ADMIN_MESSAGE_LENGTH_MAX),
  signupQuestions: z.array(SignupQuestionSchema),
  signupStrategy: z.enum(EventSignupStrategy),
  programUpdateLastRun: z.string(),
  assignmentLastRun: z.string(),
  latestServerStartTime: z.string(),
  loginProvider: z.enum(LoginProvider),
  emailNotificationTrigger: z.array(z.enum(EmailNotificationTrigger)),
});
 
export type Settings = z.infer<typeof SettingsSchema>;