Dealing with realtime is actually really hard (imposter syndrome is hitting real hard rn)
297 lines
16 KiB
TypeScript
297 lines
16 KiB
TypeScript
export type Json =
|
||
| string
|
||
| number
|
||
| boolean
|
||
| null
|
||
| { [key: string]: Json | undefined }
|
||
| Json[]
|
||
|
||
export type Database = {
|
||
public: {
|
||
Tables: {
|
||
message_threads: {
|
||
Row: {
|
||
created_at: string
|
||
id: string
|
||
}
|
||
Insert: {
|
||
created_at?: string
|
||
id?: string
|
||
}
|
||
Update: {
|
||
created_at?: string
|
||
id?: string
|
||
}
|
||
Relationships: []
|
||
}
|
||
messages: {
|
||
Row: {
|
||
created_at: string
|
||
id: string
|
||
recipient_content: string
|
||
sender_content: string
|
||
sender_uuid: string
|
||
thread_id: string | null
|
||
}
|
||
Insert: {
|
||
created_at?: string
|
||
id?: string
|
||
recipient_content: string
|
||
sender_content: string
|
||
sender_uuid: string
|
||
thread_id?: string | null
|
||
}
|
||
Update: {
|
||
created_at?: string
|
||
id?: string
|
||
recipient_content?: string
|
||
sender_content?: string
|
||
sender_uuid?: string
|
||
thread_id?: string | null
|
||
}
|
||
Relationships: [
|
||
{
|
||
foreignKeyName: "messages_sender_uuid_fkey"
|
||
columns: ["sender_uuid"]
|
||
isOneToOne: false
|
||
referencedRelation: "users"
|
||
referencedColumns: ["uuid"]
|
||
},
|
||
{
|
||
foreignKeyName: "messages_thread_id_fkey"
|
||
columns: ["thread_id"]
|
||
isOneToOne: false
|
||
referencedRelation: "message_threads"
|
||
referencedColumns: ["id"]
|
||
},
|
||
]
|
||
}
|
||
thread_participants: {
|
||
Row: {
|
||
thread_id: string
|
||
user_uuid: string
|
||
}
|
||
Insert: {
|
||
thread_id: string
|
||
user_uuid: string
|
||
}
|
||
Update: {
|
||
thread_id?: string
|
||
user_uuid?: string
|
||
}
|
||
Relationships: [
|
||
{
|
||
foreignKeyName: "thread_participants_thread_id_fkey"
|
||
columns: ["thread_id"]
|
||
isOneToOne: false
|
||
referencedRelation: "message_threads"
|
||
referencedColumns: ["id"]
|
||
},
|
||
{
|
||
foreignKeyName: "thread_participants_user_uuid_fkey"
|
||
columns: ["user_uuid"]
|
||
isOneToOne: false
|
||
referencedRelation: "users"
|
||
referencedColumns: ["uuid"]
|
||
},
|
||
]
|
||
}
|
||
users: {
|
||
Row: {
|
||
created_at: string
|
||
indexable: boolean | null
|
||
public_key: Json | null
|
||
requests: string[] | null
|
||
suuid: string
|
||
username: string
|
||
uuid: string
|
||
}
|
||
Insert: {
|
||
created_at?: string
|
||
indexable?: boolean | null
|
||
public_key?: Json | null
|
||
requests?: string[] | null
|
||
suuid: string
|
||
username: string
|
||
uuid?: string
|
||
}
|
||
Update: {
|
||
created_at?: string
|
||
indexable?: boolean | null
|
||
public_key?: Json | null
|
||
requests?: string[] | null
|
||
suuid?: string
|
||
username?: string
|
||
uuid?: string
|
||
}
|
||
Relationships: []
|
||
}
|
||
}
|
||
Views: {
|
||
[_ in never]: never
|
||
}
|
||
Functions: {
|
||
create_private_thread: {
|
||
Args: {
|
||
participant_suuid: string
|
||
}
|
||
Returns: string
|
||
}
|
||
generate_short_uuid: {
|
||
Args: Record<PropertyKey, never>
|
||
Returns: string
|
||
}
|
||
get_user_threads: {
|
||
Args: {
|
||
user_id: string
|
||
}
|
||
Returns: {
|
||
thread_id: string
|
||
participants: string[]
|
||
messages: Json[]
|
||
}[]
|
||
}
|
||
is_thread_participant: {
|
||
Args: {
|
||
thread_uuid: string
|
||
}
|
||
Returns: boolean
|
||
}
|
||
search_users: {
|
||
Args: {
|
||
search_term: string
|
||
}
|
||
Returns: {
|
||
uuid: string
|
||
suuid: string
|
||
username: string
|
||
indexable: boolean
|
||
}[]
|
||
}
|
||
send_message: {
|
||
Args: {
|
||
thread_id: string
|
||
sender_content: string
|
||
recipient_content: string
|
||
}
|
||
Returns: string
|
||
}
|
||
update_user_public_key: {
|
||
Args: {
|
||
new_public_key: Json
|
||
}
|
||
Returns: boolean
|
||
}
|
||
update_user_requests: {
|
||
Args: {
|
||
search_term: string
|
||
new_request: string
|
||
}
|
||
Returns: boolean
|
||
}
|
||
}
|
||
Enums: {
|
||
[_ in never]: never
|
||
}
|
||
CompositeTypes: {
|
||
[_ in never]: never
|
||
}
|
||
}
|
||
}
|
||
|
||
type PublicSchema = Database[Extract<keyof Database, "public">]
|
||
|
||
export type Tables<
|
||
PublicTableNameOrOptions extends
|
||
| keyof (PublicSchema["Tables"] & PublicSchema["Views"])
|
||
| { schema: keyof Database },
|
||
TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
|
||
? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
|
||
Database[PublicTableNameOrOptions["schema"]]["Views"])
|
||
: never = never,
|
||
> = PublicTableNameOrOptions extends { schema: keyof Database }
|
||
? (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
|
||
Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends {
|
||
Row: infer R
|
||
}
|
||
? R
|
||
: never
|
||
: PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] &
|
||
PublicSchema["Views"])
|
||
? (PublicSchema["Tables"] &
|
||
PublicSchema["Views"])[PublicTableNameOrOptions] extends {
|
||
Row: infer R
|
||
}
|
||
? R
|
||
: never
|
||
: never
|
||
|
||
export type TablesInsert<
|
||
PublicTableNameOrOptions extends
|
||
| keyof PublicSchema["Tables"]
|
||
| { schema: keyof Database },
|
||
TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
|
||
? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
|
||
: never = never,
|
||
> = PublicTableNameOrOptions extends { schema: keyof Database }
|
||
? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
|
||
Insert: infer I
|
||
}
|
||
? I
|
||
: never
|
||
: PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
|
||
? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
|
||
Insert: infer I
|
||
}
|
||
? I
|
||
: never
|
||
: never
|
||
|
||
export type TablesUpdate<
|
||
PublicTableNameOrOptions extends
|
||
| keyof PublicSchema["Tables"]
|
||
| { schema: keyof Database },
|
||
TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
|
||
? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
|
||
: never = never,
|
||
> = PublicTableNameOrOptions extends { schema: keyof Database }
|
||
? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
|
||
Update: infer U
|
||
}
|
||
? U
|
||
: never
|
||
: PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
|
||
? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
|
||
Update: infer U
|
||
}
|
||
? U
|
||
: never
|
||
: never
|
||
|
||
export type Enums<
|
||
PublicEnumNameOrOptions extends
|
||
| keyof PublicSchema["Enums"]
|
||
| { schema: keyof Database },
|
||
EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database }
|
||
? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"]
|
||
: never = never,
|
||
> = PublicEnumNameOrOptions extends { schema: keyof Database }
|
||
? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName]
|
||
: PublicEnumNameOrOptions extends keyof PublicSchema["Enums"]
|
||
? PublicSchema["Enums"][PublicEnumNameOrOptions]
|
||
: never
|
||
|
||
export type CompositeTypes<
|
||
PublicCompositeTypeNameOrOptions extends
|
||
| keyof PublicSchema["CompositeTypes"]
|
||
| { schema: keyof Database },
|
||
CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
|
||
schema: keyof Database
|
||
}
|
||
? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
|
||
: never = never,
|
||
> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
|
||
? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
|
||
: PublicCompositeTypeNameOrOptions extends keyof PublicSchema["CompositeTypes"]
|
||
? PublicSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
|
||
: never
|