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)

View File

@@ -22,6 +22,17 @@ export type FilterFields = {
shortBio: boolean | undefined
drinks_min: number | undefined
drinks_max: number | undefined
// Big Five personality filters (0-100 range)
big5_openness_min: number | undefined
big5_openness_max: number | undefined
big5_conscientiousness_min: number | undefined
big5_conscientiousness_max: number | undefined
big5_extraversion_min: number | undefined
big5_extraversion_max: number | undefined
big5_agreeableness_min: number | undefined
big5_agreeableness_max: number | undefined
big5_neuroticism_min: number | undefined
big5_neuroticism_max: number | undefined
} & {
[K in OptionTableKey]: string[]
}
@@ -89,6 +100,16 @@ export const initialFilters: Partial<FilterFields> = {
shortBio: undefined,
drinks_min: undefined,
drinks_max: undefined,
big5_openness_min: undefined,
big5_openness_max: undefined,
big5_conscientiousness_min: undefined,
big5_conscientiousness_max: undefined,
big5_extraversion_min: undefined,
big5_extraversion_max: undefined,
big5_agreeableness_min: undefined,
big5_agreeableness_max: undefined,
big5_neuroticism_min: undefined,
big5_neuroticism_max: undefined,
orderBy: 'created_time',
}

View File

@@ -856,6 +856,11 @@ export type Database = {
profiles: {
Row: {
age: number | null
big5_agreeableness: number | null
big5_conscientiousness: number | null
big5_extraversion: number | null
big5_neuroticism: number | null
big5_openness: number | null
bio: Json | null
bio_length: number | null
bio_text: string | null
@@ -913,6 +918,11 @@ export type Database = {
}
Insert: {
age?: number | null
big5_agreeableness?: number | null
big5_conscientiousness?: number | null
big5_extraversion?: number | null
big5_neuroticism?: number | null
big5_openness?: number | null
bio?: Json | null
bio_length?: number | null
bio_text?: string | null
@@ -970,6 +980,11 @@ export type Database = {
}
Update: {
age?: number | null
big5_agreeableness?: number | null
big5_conscientiousness?: number | null
big5_extraversion?: number | null
big5_neuroticism?: number | null
big5_openness?: number | null
bio?: Json | null
bio_length?: number | null
bio_text?: string | null
@@ -1204,7 +1219,15 @@ export type Database = {
ts?: string
user_id?: string | null
}
Relationships: []
Relationships: [
{
foreignKeyName: 'user_events_user_id_fkey'
columns: ['user_id']
isOneToOne: false
referencedRelation: 'users'
referencedColumns: ['id']
},
]
}
user_notifications: {
Row: {