26 lines
847 B
TypeScript
26 lines
847 B
TypeScript
import type { Static } from '@sinclair/typebox'
|
|
import { Type } from '@sinclair/typebox'
|
|
|
|
import { date, id } from './utils'
|
|
|
|
export const languages = [Type.Literal('fr'), Type.Literal('en')]
|
|
export const themes = [Type.Literal('light'), Type.Literal('dark')]
|
|
|
|
export const userSettingsSchema = {
|
|
id,
|
|
language: Type.Union(languages, { default: 'en' }),
|
|
theme: Type.Union(themes, { default: 'dark' }),
|
|
isPublicEmail: Type.Boolean({ default: false }),
|
|
isPublicGuilds: Type.Boolean({ default: false }),
|
|
createdAt: date.createdAt,
|
|
updatedAt: date.updatedAt,
|
|
userId: id
|
|
}
|
|
|
|
export const userSettingsSchemaType = Type.Object(userSettingsSchema)
|
|
|
|
export type Theme = Static<typeof userSettingsSchema.theme>
|
|
export type Language = Static<typeof userSettingsSchema.language>
|
|
|
|
export type UserSettings = Static<typeof userSettingsSchemaType>
|