Add Big 5 profile field

This commit is contained in:
MartinBraquet
2026-02-13 15:23:54 +01:00
parent ca55a93d5f
commit 7734b689a3
15 changed files with 576 additions and 11 deletions

View File

@@ -509,6 +509,16 @@ export const API = (_apiTypeCheck = {
pref_age_max: z.coerce.number().optional(),
drinks_min: z.coerce.number().optional(),
drinks_max: z.coerce.number().optional(),
big5_openness_min: z.coerce.number().optional(),
big5_openness_max: z.coerce.number().optional(),
big5_conscientiousness_min: z.coerce.number().optional(),
big5_conscientiousness_max: z.coerce.number().optional(),
big5_extraversion_min: z.coerce.number().optional(),
big5_extraversion_max: z.coerce.number().optional(),
big5_agreeableness_min: z.coerce.number().optional(),
big5_agreeableness_max: z.coerce.number().optional(),
big5_neuroticism_min: z.coerce.number().optional(),
big5_neuroticism_max: z.coerce.number().optional(),
religion: arraybeSchema.optional(),
pref_relation_styles: arraybeSchema.optional(),
pref_romantic_styles: arraybeSchema.optional(),

View File

@@ -56,6 +56,7 @@ export const baseProfilesSchema = z.object({
country: z.string().optional().nullable(),
gender: genderType,
geodb_city_id: z.string().optional().nullable(),
languages: z.array(z.string()).optional().nullable(),
looking_for_matches: zBoolean,
photo_urls: z.array(z.string()).nullable(),
pinned_url: z.string(),
@@ -67,13 +68,18 @@ export const baseProfilesSchema = z.object({
region_code: z.string().optional().nullable(),
visibility: z.union([z.literal('public'), z.literal('member')]),
wants_kids_strength: z.number().nullable(),
languages: z.array(z.string()).optional().nullable(),
})
const optionalProfilesSchema = z.object({
avatar_url: z.string().optional().nullable(),
bio: contentSchema.optional().nullable(),
big5_openness: z.number().min(0).max(100).optional().nullable(),
big5_conscientiousness: z.number().min(0).max(100).optional().nullable(),
big5_extraversion: z.number().min(0).max(100).optional().nullable(),
big5_agreeableness: z.number().min(0).max(100).optional().nullable(),
big5_neuroticism: z.number().min(0).max(100).optional().nullable(),
born_in_location: z.string().optional().nullable(),
causes: z.array(z.string()).optional().nullable(),
comments_enabled: zBoolean.optional(),
company: z.string().optional().nullable(),
diet: z.array(z.string()).optional().nullable(),
@@ -82,29 +88,27 @@ const optionalProfilesSchema = z.object({
drinks_min: z.number().min(0).optional().nullable(),
drinks_per_month: z.number().min(0).optional().nullable(),
education_level: z.string().optional().nullable(),
mbti: z.string().optional().nullable(),
ethnicity: z.array(z.string()).optional().nullable(),
has_kids: z.number().min(0).optional().nullable(),
has_pets: zBoolean.optional().nullable(),
height_in_inches: z.number().optional().nullable(),
image_descriptions: z.any().optional().nullable(),
interests: z.array(z.string()).optional().nullable(),
is_smoker: zBoolean.optional().nullable(),
mbti: z.string().optional().nullable(),
occupation: z.string().optional().nullable(),
occupation_title: z.string().optional().nullable(),
political_beliefs: z.array(z.string()).optional().nullable(),
interests: z.array(z.string()).optional().nullable(),
work: z.array(z.string()).optional().nullable(),
causes: z.array(z.string()).optional().nullable(),
relationship_status: z.array(z.string()).optional().nullable(),
political_details: z.string().optional().nullable(),
pref_romantic_styles: z.array(z.string()).nullable(),
relationship_status: z.array(z.string()).optional().nullable(),
religion: z.array(z.string()).optional().nullable(),
religious_belief_strength: z.number().optional().nullable(),
religious_beliefs: z.string().optional().nullable(),
twitter: z.string().optional().nullable(),
university: z.string().optional().nullable(),
website: z.string().optional().nullable(),
image_descriptions: z.any().optional().nullable(),
work: z.array(z.string()).optional().nullable(),
})
export const combinedProfileSchema =
baseProfilesSchema.merge(optionalProfilesSchema)
export const combinedProfileSchema = baseProfilesSchema.merge(optionalProfilesSchema)