mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-01-02 19:08:28 -05:00
798 lines
21 KiB
TypeScript
798 lines
21 KiB
TypeScript
import {
|
|
createClient as createClientGeneric,
|
|
SupabaseClient as SupabaseClientGeneric,
|
|
SupabaseClientOptions as SupabaseClientOptionsGeneric,
|
|
} from '@supabase/supabase-js'
|
|
|
|
export type Json =
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null
|
|
| { [key: string]: Json | undefined }
|
|
| Json[]
|
|
export type Database = {
|
|
public: {
|
|
Tables: {
|
|
love_answers: {
|
|
Row: {
|
|
created_time: string
|
|
creator_id: string
|
|
free_response: string | null
|
|
id: number
|
|
integer: number | null
|
|
multiple_choice: number | null
|
|
question_id: number
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
creator_id: string
|
|
free_response?: string | null
|
|
id?: never
|
|
integer?: number | null
|
|
multiple_choice?: number | null
|
|
question_id: number
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
creator_id?: string
|
|
free_response?: string | null
|
|
id?: never
|
|
integer?: number | null
|
|
multiple_choice?: number | null
|
|
question_id?: number
|
|
}
|
|
Relationships: []
|
|
}
|
|
love_compatibility_answers: {
|
|
Row: {
|
|
created_time: string
|
|
creator_id: string
|
|
explanation: string | null
|
|
id: number
|
|
importance: number
|
|
multiple_choice: number
|
|
pref_choices: number[]
|
|
question_id: number
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
creator_id: string
|
|
explanation?: string | null
|
|
id?: never
|
|
importance: number
|
|
multiple_choice: number
|
|
pref_choices: number[]
|
|
question_id: number
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
creator_id?: string
|
|
explanation?: string | null
|
|
id?: never
|
|
importance?: number
|
|
multiple_choice?: number
|
|
pref_choices?: number[]
|
|
question_id?: number
|
|
}
|
|
Relationships: []
|
|
}
|
|
love_likes: {
|
|
Row: {
|
|
created_time: string
|
|
creator_id: string
|
|
like_id: string
|
|
target_id: string
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
creator_id: string
|
|
like_id?: string
|
|
target_id: string
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
creator_id?: string
|
|
like_id?: string
|
|
target_id?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
love_questions: {
|
|
Row: {
|
|
answer_type: string
|
|
created_time: string
|
|
creator_id: string
|
|
id: number
|
|
importance_score: number
|
|
multiple_choice_options: Json | null
|
|
question: string
|
|
}
|
|
Insert: {
|
|
answer_type?: string
|
|
created_time?: string
|
|
creator_id: string
|
|
id?: never
|
|
importance_score?: number
|
|
multiple_choice_options?: Json | null
|
|
question: string
|
|
}
|
|
Update: {
|
|
answer_type?: string
|
|
created_time?: string
|
|
creator_id?: string
|
|
id?: never
|
|
importance_score?: number
|
|
multiple_choice_options?: Json | null
|
|
question?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
love_ships: {
|
|
Row: {
|
|
created_time: string
|
|
creator_id: string
|
|
ship_id: string
|
|
target1_id: string
|
|
target2_id: string
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
creator_id: string
|
|
ship_id?: string
|
|
target1_id: string
|
|
target2_id: string
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
creator_id?: string
|
|
ship_id?: string
|
|
target1_id?: string
|
|
target2_id?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
love_stars: {
|
|
Row: {
|
|
created_time: string
|
|
creator_id: string
|
|
star_id: string
|
|
target_id: string
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
creator_id: string
|
|
star_id?: string
|
|
target_id: string
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
creator_id?: string
|
|
star_id?: string
|
|
target_id?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
love_waitlist: {
|
|
Row: {
|
|
created_time: string
|
|
email: string
|
|
id: number
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
email: string
|
|
id?: never
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
email?: string
|
|
id?: never
|
|
}
|
|
Relationships: []
|
|
}
|
|
lover_comments: {
|
|
Row: {
|
|
content: Json
|
|
created_time: string
|
|
hidden: boolean
|
|
id: number
|
|
on_user_id: string
|
|
reply_to_comment_id: number | null
|
|
user_avatar_url: string
|
|
user_id: string
|
|
user_name: string
|
|
user_username: string
|
|
}
|
|
Insert: {
|
|
content: Json
|
|
created_time?: string
|
|
hidden?: boolean
|
|
id?: never
|
|
on_user_id: string
|
|
reply_to_comment_id?: number | null
|
|
user_avatar_url: string
|
|
user_id: string
|
|
user_name: string
|
|
user_username: string
|
|
}
|
|
Update: {
|
|
content?: Json
|
|
created_time?: string
|
|
hidden?: boolean
|
|
id?: never
|
|
on_user_id?: string
|
|
reply_to_comment_id?: number | null
|
|
user_avatar_url?: string
|
|
user_id?: string
|
|
user_name?: string
|
|
user_username?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
lovers: {
|
|
Row: {
|
|
age: number
|
|
bio: Json | null
|
|
born_in_location: string | null
|
|
city: string
|
|
city_latitude: number | null
|
|
city_longitude: number | null
|
|
comments_enabled: boolean
|
|
company: string | null
|
|
country: string | null
|
|
created_time: string
|
|
drinks_per_month: number | null
|
|
education_level: string | null
|
|
ethnicity: string[] | null
|
|
gender: string
|
|
geodb_city_id: string | null
|
|
has_kids: number | null
|
|
height_in_inches: number | null
|
|
id: number
|
|
is_smoker: boolean | null
|
|
is_vegetarian_or_vegan: boolean | null
|
|
last_online_time: string
|
|
looking_for_matches: boolean
|
|
messaging_status: string
|
|
occupation: string | null
|
|
occupation_title: string | null
|
|
photo_urls: string[] | null
|
|
pinned_url: string | null
|
|
political_beliefs: string[] | null
|
|
pref_age_max: number
|
|
pref_age_min: number
|
|
pref_gender: string[]
|
|
pref_relation_styles: string[]
|
|
referred_by_username: string | null
|
|
region_code: string | null
|
|
religious_belief_strength: number | null
|
|
religious_beliefs: string | null
|
|
twitter: string | null
|
|
university: string | null
|
|
user_id: string
|
|
visibility: Database['public']['Enums']['lover_visibility']
|
|
wants_kids_strength: number
|
|
website: string | null
|
|
}
|
|
Insert: {
|
|
age?: number
|
|
bio?: Json | null
|
|
born_in_location?: string | null
|
|
city: string
|
|
city_latitude?: number | null
|
|
city_longitude?: number | null
|
|
comments_enabled?: boolean
|
|
company?: string | null
|
|
country?: string | null
|
|
created_time?: string
|
|
drinks_per_month?: number | null
|
|
education_level?: string | null
|
|
ethnicity?: string[] | null
|
|
gender: string
|
|
geodb_city_id?: string | null
|
|
has_kids?: number | null
|
|
height_in_inches?: number | null
|
|
id?: never
|
|
is_smoker?: boolean | null
|
|
is_vegetarian_or_vegan?: boolean | null
|
|
last_online_time?: string
|
|
looking_for_matches?: boolean
|
|
messaging_status?: string
|
|
occupation?: string | null
|
|
occupation_title?: string | null
|
|
photo_urls?: string[] | null
|
|
pinned_url?: string | null
|
|
political_beliefs?: string[] | null
|
|
pref_age_max?: number
|
|
pref_age_min?: number
|
|
pref_gender: string[]
|
|
pref_relation_styles: string[]
|
|
referred_by_username?: string | null
|
|
region_code?: string | null
|
|
religious_belief_strength?: number | null
|
|
religious_beliefs?: string | null
|
|
twitter?: string | null
|
|
university?: string | null
|
|
user_id: string
|
|
visibility?: Database['public']['Enums']['lover_visibility']
|
|
wants_kids_strength?: number
|
|
website?: string | null
|
|
}
|
|
Update: {
|
|
age?: number
|
|
bio?: Json | null
|
|
born_in_location?: string | null
|
|
city?: string
|
|
city_latitude?: number | null
|
|
city_longitude?: number | null
|
|
comments_enabled?: boolean
|
|
company?: string | null
|
|
country?: string | null
|
|
created_time?: string
|
|
drinks_per_month?: number | null
|
|
education_level?: string | null
|
|
ethnicity?: string[] | null
|
|
gender?: string
|
|
geodb_city_id?: string | null
|
|
has_kids?: number | null
|
|
height_in_inches?: number | null
|
|
id?: never
|
|
is_smoker?: boolean | null
|
|
is_vegetarian_or_vegan?: boolean | null
|
|
last_online_time?: string
|
|
looking_for_matches?: boolean
|
|
messaging_status?: string
|
|
occupation?: string | null
|
|
occupation_title?: string | null
|
|
photo_urls?: string[] | null
|
|
pinned_url?: string | null
|
|
political_beliefs?: string[] | null
|
|
pref_age_max?: number
|
|
pref_age_min?: number
|
|
pref_gender?: string[]
|
|
pref_relation_styles?: string[]
|
|
referred_by_username?: string | null
|
|
region_code?: string | null
|
|
religious_belief_strength?: number | null
|
|
religious_beliefs?: string | null
|
|
twitter?: string | null
|
|
university?: string | null
|
|
user_id?: string
|
|
visibility?: Database['public']['Enums']['lover_visibility']
|
|
wants_kids_strength?: number
|
|
website?: string | null
|
|
}
|
|
Relationships: []
|
|
}
|
|
private_user_message_channel_members: {
|
|
Row: {
|
|
channel_id: number
|
|
created_time: string
|
|
id: number
|
|
notify_after_time: string
|
|
role: string
|
|
status: string
|
|
user_id: string
|
|
}
|
|
Insert: {
|
|
channel_id: number
|
|
created_time?: string
|
|
id?: never
|
|
notify_after_time?: string
|
|
role?: string
|
|
status?: string
|
|
user_id: string
|
|
}
|
|
Update: {
|
|
channel_id?: number
|
|
created_time?: string
|
|
id?: never
|
|
notify_after_time?: string
|
|
role?: string
|
|
status?: string
|
|
user_id?: string
|
|
}
|
|
Relationships: [
|
|
{
|
|
foreignKeyName: 'channel_id_fkey'
|
|
columns: ['channel_id']
|
|
isOneToOne: false
|
|
referencedRelation: 'private_user_message_channels'
|
|
referencedColumns: ['id']
|
|
}
|
|
]
|
|
}
|
|
private_user_message_channels: {
|
|
Row: {
|
|
created_time: string
|
|
id: number
|
|
last_updated_time: string
|
|
title: string | null
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
id?: never
|
|
last_updated_time?: string
|
|
title?: string | null
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
id?: never
|
|
last_updated_time?: string
|
|
title?: string | null
|
|
}
|
|
Relationships: []
|
|
}
|
|
private_user_messages: {
|
|
Row: {
|
|
channel_id: number
|
|
content: Json
|
|
created_time: string
|
|
id: number
|
|
old_id: number | null
|
|
user_id: string
|
|
visibility: string
|
|
}
|
|
Insert: {
|
|
channel_id: number
|
|
content: Json
|
|
created_time?: string
|
|
id?: never
|
|
old_id?: number | null
|
|
user_id: string
|
|
visibility?: string
|
|
}
|
|
Update: {
|
|
channel_id?: number
|
|
content?: Json
|
|
created_time?: string
|
|
id?: never
|
|
old_id?: number | null
|
|
user_id?: string
|
|
visibility?: string
|
|
}
|
|
Relationships: [
|
|
{
|
|
foreignKeyName: 'private_user_messages_channel_id_fkey'
|
|
columns: ['channel_id']
|
|
isOneToOne: false
|
|
referencedRelation: 'private_user_message_channels'
|
|
referencedColumns: ['id']
|
|
}
|
|
]
|
|
}
|
|
private_user_seen_message_channels: {
|
|
Row: {
|
|
channel_id: number
|
|
created_time: string
|
|
id: number
|
|
user_id: string
|
|
}
|
|
Insert: {
|
|
channel_id: number
|
|
created_time?: string
|
|
id?: never
|
|
user_id: string
|
|
}
|
|
Update: {
|
|
channel_id?: number
|
|
created_time?: string
|
|
id?: never
|
|
user_id?: string
|
|
}
|
|
Relationships: [
|
|
{
|
|
foreignKeyName: 'channel_id_fkey'
|
|
columns: ['channel_id']
|
|
isOneToOne: false
|
|
referencedRelation: 'private_user_message_channels'
|
|
referencedColumns: ['id']
|
|
}
|
|
]
|
|
}
|
|
private_users: {
|
|
Row: {
|
|
data: Json
|
|
id: string
|
|
}
|
|
Insert: {
|
|
data: Json
|
|
id: string
|
|
}
|
|
Update: {
|
|
data?: Json
|
|
id?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
reports: {
|
|
Row: {
|
|
content_id: string
|
|
content_owner_id: string
|
|
content_type: string
|
|
created_time: string | null
|
|
description: string | null
|
|
id: string
|
|
parent_id: string | null
|
|
parent_type: string | null
|
|
user_id: string
|
|
}
|
|
Insert: {
|
|
content_id: string
|
|
content_owner_id: string
|
|
content_type: string
|
|
created_time?: string | null
|
|
description?: string | null
|
|
id?: string
|
|
parent_id?: string | null
|
|
parent_type?: string | null
|
|
user_id: string
|
|
}
|
|
Update: {
|
|
content_id?: string
|
|
content_owner_id?: string
|
|
content_type?: string
|
|
created_time?: string | null
|
|
description?: string | null
|
|
id?: string
|
|
parent_id?: string | null
|
|
parent_type?: string | null
|
|
user_id?: string
|
|
}
|
|
Relationships: [
|
|
{
|
|
foreignKeyName: 'reports_content_owner_id_fkey'
|
|
columns: ['content_owner_id']
|
|
isOneToOne: false
|
|
referencedRelation: 'users'
|
|
referencedColumns: ['id']
|
|
},
|
|
{
|
|
foreignKeyName: 'reports_user_id_fkey'
|
|
columns: ['user_id']
|
|
isOneToOne: false
|
|
referencedRelation: 'users'
|
|
referencedColumns: ['id']
|
|
}
|
|
]
|
|
}
|
|
temp_users: {
|
|
Row: {
|
|
created_time: string | null
|
|
id: string | null
|
|
name: string | null
|
|
private_user_data: Json | null
|
|
user_data: Json | null
|
|
username: string | null
|
|
}
|
|
Insert: {
|
|
created_time?: string | null
|
|
id?: string | null
|
|
name?: string | null
|
|
private_user_data?: Json | null
|
|
user_data?: Json | null
|
|
username?: string | null
|
|
}
|
|
Update: {
|
|
created_time?: string | null
|
|
id?: string | null
|
|
name?: string | null
|
|
private_user_data?: Json | null
|
|
user_data?: Json | null
|
|
username?: string | null
|
|
}
|
|
Relationships: []
|
|
}
|
|
user_events: {
|
|
Row: {
|
|
ad_id: string | null
|
|
comment_id: string | null
|
|
contract_id: string | null
|
|
data: Json
|
|
id: number
|
|
name: string
|
|
ts: string
|
|
user_id: string | null
|
|
}
|
|
Insert: {
|
|
ad_id?: string | null
|
|
comment_id?: string | null
|
|
contract_id?: string | null
|
|
data: Json
|
|
id?: never
|
|
name: string
|
|
ts?: string
|
|
user_id?: string | null
|
|
}
|
|
Update: {
|
|
ad_id?: string | null
|
|
comment_id?: string | null
|
|
contract_id?: string | null
|
|
data?: Json
|
|
id?: never
|
|
name?: string
|
|
ts?: string
|
|
user_id?: string | null
|
|
}
|
|
Relationships: []
|
|
}
|
|
user_notifications: {
|
|
Row: {
|
|
data: Json
|
|
notification_id: string
|
|
user_id: string
|
|
}
|
|
Insert: {
|
|
data: Json
|
|
notification_id: string
|
|
user_id: string
|
|
}
|
|
Update: {
|
|
data?: Json
|
|
notification_id?: string
|
|
user_id?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
users: {
|
|
Row: {
|
|
created_time: string
|
|
data: Json
|
|
id: string
|
|
name: string
|
|
name_username_vector: unknown | null
|
|
username: string
|
|
}
|
|
Insert: {
|
|
created_time?: string
|
|
data: Json
|
|
id?: string
|
|
name: string
|
|
name_username_vector?: unknown | null
|
|
username: string
|
|
}
|
|
Update: {
|
|
created_time?: string
|
|
data?: Json
|
|
id?: string
|
|
name?: string
|
|
name_username_vector?: unknown | null
|
|
username?: string
|
|
}
|
|
Relationships: []
|
|
}
|
|
}
|
|
Views: {
|
|
[_ in never]: never
|
|
}
|
|
Functions: {
|
|
calculate_earth_distance_km: {
|
|
Args: { lat1: number; lon1: number; lat2: number; lon2: number }
|
|
Returns: number
|
|
}
|
|
can_access_private_messages: {
|
|
Args: { channel_id: number; user_id: string }
|
|
Returns: boolean
|
|
}
|
|
firebase_uid: {
|
|
Args: Record<PropertyKey, never>
|
|
Returns: string
|
|
}
|
|
get_average_rating: {
|
|
Args: { user_id: string }
|
|
Returns: number
|
|
}
|
|
get_compatibility_questions_with_answer_count: {
|
|
Args: Record<PropertyKey, never>
|
|
Returns: Record<string, unknown>[]
|
|
}
|
|
get_love_question_answers_and_lovers: {
|
|
Args: { p_question_id: number }
|
|
Returns: Record<string, unknown>[]
|
|
}
|
|
is_admin: {
|
|
Args: Record<PropertyKey, never> | { user_id: string }
|
|
Returns: boolean
|
|
}
|
|
millis_interval: {
|
|
Args: { start_millis: number; end_millis: number }
|
|
Returns: unknown
|
|
}
|
|
millis_to_ts: {
|
|
Args: { millis: number }
|
|
Returns: string
|
|
}
|
|
random_alphanumeric: {
|
|
Args: { length: number }
|
|
Returns: string
|
|
}
|
|
to_jsonb: {
|
|
Args: { '': Json }
|
|
Returns: Json
|
|
}
|
|
ts_to_millis: {
|
|
Args: { ts: string } | { ts: string }
|
|
Returns: number
|
|
}
|
|
}
|
|
Enums: {
|
|
lover_visibility: 'public' | 'member'
|
|
}
|
|
CompositeTypes: {
|
|
[_ in never]: never
|
|
}
|
|
}
|
|
}
|
|
|
|
export type Schema = Database['public']
|
|
|
|
export type SupabaseClient = SupabaseClientGeneric<Database, 'public', Schema>
|
|
|
|
export function createClient(
|
|
instanceId: string,
|
|
key: string,
|
|
opts?: SupabaseClientOptionsGeneric<'public'>
|
|
) {
|
|
const url = `https://${instanceId}.supabase.co`
|
|
return createClientGeneric(url, key, opts) as SupabaseClient
|
|
}
|
|
|
|
export const ENV_CONFIG = {
|
|
domain: 'dev.compassmeet.com',
|
|
firebaseConfig: {
|
|
apiKey: "AIzaSyAxzhj6bZuZ1TCw9xzibGccRHXiRWq6iy0",
|
|
authDomain: "compass-130ba.firebaseapp.com",
|
|
projectId: "compass-130ba",
|
|
storageBucket: "compass-130ba-public",
|
|
messagingSenderId: "253367029065",
|
|
appId: "1:253367029065:web:b338785af99d4145095e98",
|
|
measurementId: "G-2LSQYJQE6P",
|
|
region: 'us-west1',
|
|
privateBucket: 'compass-130ba.firebasestorage.app',
|
|
},
|
|
cloudRunId: 'w3txbmd3ba',
|
|
cloudRunRegion: 'uc',
|
|
supabaseInstanceId: 'ltzepxnhhnrnvovqblfr',
|
|
supabaseAnonKey: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Imx0emVweG5oaG5ybnZvdnFibGZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTU5NjczNjgsImV4cCI6MjA3MTU0MzM2OH0.pbazcrVOG7Kh_IgblRu2VAfoBe3-xheNfRzAto7xvzY',
|
|
apiEndpoint: 'api.dev.compassmeet.com',
|
|
adminIds: [
|
|
'...',
|
|
],
|
|
}
|
|
|
|
export function initSupabaseClient() {
|
|
// console.log(
|
|
// 'Initializing supabase client',
|
|
// ENV_CONFIG.supabaseInstanceId,
|
|
// ENV_CONFIG.supabaseAnonKey
|
|
// )
|
|
return createClient(ENV_CONFIG.supabaseInstanceId, ENV_CONFIG.supabaseAnonKey)
|
|
}
|
|
|
|
export const db = initSupabaseClient()
|
|
|
|
export const removeUndefinedProps = <T extends object>(obj: T): T => {
|
|
const newObj: any = {}
|
|
|
|
for (const key of Object.keys(obj)) {
|
|
if ((obj as any)[key] !== undefined) newObj[key] = (obj as any)[key]
|
|
}
|
|
|
|
return newObj
|
|
}
|
|
|
|
const userId = 'Fpf0JZ1J79MS1dAvYXwyOMnwrHV2'
|
|
const commentId = 'abcd'
|
|
|
|
console.log(db)
|
|
const data = db.from('lovers').select('*').eq('user_id', userId)
|
|
// const data = db.from('user_events').insert({
|
|
// name: 'name_test',
|
|
// data: removeUndefinedProps({username: "MartinBraquet"}) as Record<string, Json>,
|
|
// // user_id: userId,
|
|
// comment_id: undefined,
|
|
// })
|
|
|
|
data.then((d) => console.log(d))
|