Files
supabase/packages/common/database-types.ts
Charis 8cd5e10038 feat: alternate search index for nimbus (#38662)
* feat: alternate search index for nimbus

Create an alternate search index for Nimbus that filters out
feature-flagged pages (equivalent to setting all feature flags to
false).

Notes:
- Creates two new DB tables, `page_nimbus` and `page_section_nimbus`,
  which are filtered versions of `page` and `page_section`
- Makes `nimbus` versions of all the DB search functions
- Refactored the embedding upload script. Changes to make it faster (got
  annoyed by how slow it was when testing...), incorporate retries, and
  produce better summary logs.
- Upload script, when run with the environment variable
  ENABLED_FEATURES_OVERRIDE_DISABLE_ALL, produces and uploads the
  alternate search index
- Changed all the search calls in frontend/API to check for
  `isFeatureEnabled('search:fullIndex')` to determine whether to search
  the full or alternate index

* ci: produce nimbus search indexes on merge

* fix: turn full search index on
2025-09-16 12:37:53 -04:00

1177 lines
30 KiB
TypeScript

export type Json = string | number | boolean | null | { [key: string]: Json | undefined } | Json[]
export type Database = {
content: {
Tables: {
error: {
Row: {
code: string
created_at: string | null
deleted_at: string | null
http_status_code: number | null
id: string
message: string | null
metadata: Json | null
service: string
updated_at: string | null
}
Insert: {
code: string
created_at?: string | null
deleted_at?: string | null
http_status_code?: number | null
id?: string
message?: string | null
metadata?: Json | null
service: string
updated_at?: string | null
}
Update: {
code?: string
created_at?: string | null
deleted_at?: string | null
http_status_code?: number | null
id?: string
message?: string | null
metadata?: Json | null
service?: string
updated_at?: string | null
}
Relationships: [
{
foreignKeyName: 'error_service_fkey'
columns: ['service']
isOneToOne: false
referencedRelation: 'service'
referencedColumns: ['id']
},
]
}
service: {
Row: {
created_at: string | null
deleted_at: string | null
id: string
name: string
updated_at: string | null
}
Insert: {
created_at?: string | null
deleted_at?: string | null
id?: string
name: string
updated_at?: string | null
}
Update: {
created_at?: string | null
deleted_at?: string | null
id?: string
name?: string
updated_at?: string | null
}
Relationships: []
}
}
Views: {
[_ in never]: never
}
Functions: {
delete_error_codes_except: {
Args: {
skip_codes: Json
}
Returns: number
}
update_error_code: {
Args: {
code: string
service: string
http_status_code?: number
message?: string
metadata?: Json
}
Returns: boolean
}
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
}
graphql_public: {
Tables: {
[_ in never]: never
}
Views: {
[_ in never]: never
}
Functions: {
graphql: {
Args: {
operationName?: string
query?: string
variables?: Json
extensions?: Json
}
Returns: Json
}
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
}
public: {
Tables: {
feedback: {
Row: {
date_created: string
id: number
metadata: Json | null
page: string
vote: Database['public']['Enums']['feedback_vote']
}
Insert: {
date_created?: string
id?: never
metadata?: Json | null
page: string
vote: Database['public']['Enums']['feedback_vote']
}
Update: {
date_created?: string
id?: never
metadata?: Json | null
page?: string
vote?: Database['public']['Enums']['feedback_vote']
}
Relationships: []
}
last_changed: {
Row: {
checksum: string
heading: string
id: number
last_checked: string
last_updated: string
parent_page: string
}
Insert: {
checksum: string
heading: string
id?: never
last_checked?: string
last_updated?: string
parent_page: string
}
Update: {
checksum?: string
heading?: string
id?: never
last_checked?: string
last_updated?: string
parent_page?: string
}
Relationships: []
}
launch_weeks: {
Row: {
created_at: string
end_date: string | null
id: string
start_date: string | null
}
Insert: {
created_at?: string
end_date?: string | null
id: string
start_date?: string | null
}
Update: {
created_at?: string
end_date?: string | null
id?: string
start_date?: string | null
}
Relationships: []
}
meetups: {
Row: {
city: string | null
country: string | null
created_at: string
display_info: string | null
id: string
is_live: boolean
is_published: boolean
launch_week: string
link: string | null
start_at: string | null
timezone: string | null
title: string | null
}
Insert: {
city?: string | null
country?: string | null
created_at?: string
display_info?: string | null
id?: string
is_live?: boolean
is_published?: boolean
launch_week: string
link?: string | null
start_at?: string | null
timezone?: string | null
title?: string | null
}
Update: {
city?: string | null
country?: string | null
created_at?: string
display_info?: string | null
id?: string
is_live?: boolean
is_published?: boolean
launch_week?: string
link?: string | null
start_at?: string | null
timezone?: string | null
title?: string | null
}
Relationships: [
{
foreignKeyName: 'meetups_launch_week_fkey'
columns: ['launch_week']
isOneToOne: false
referencedRelation: 'launch_weeks'
referencedColumns: ['id']
},
]
}
page: {
Row: {
checksum: string | null
content: string | null
fts_tokens: unknown | null
id: number
last_refresh: string | null
meta: Json | null
path: string
source: string | null
title_tokens: unknown | null
type: string | null
version: string | null
}
Insert: {
checksum?: string | null
content?: string | null
fts_tokens?: unknown | null
id?: number
last_refresh?: string | null
meta?: Json | null
path: string
source?: string | null
title_tokens?: unknown | null
type?: string | null
version?: string | null
}
Update: {
checksum?: string | null
content?: string | null
fts_tokens?: unknown | null
id?: number
last_refresh?: string | null
meta?: Json | null
path?: string
source?: string | null
title_tokens?: unknown | null
type?: string | null
version?: string | null
}
Relationships: []
}
page_nimbus: {
Row: {
checksum: string | null
content: string | null
fts_tokens: unknown | null
id: number
last_refresh: string | null
meta: Json | null
path: string
source: string | null
title_tokens: unknown | null
type: string | null
version: string | null
}
Insert: {
checksum?: string | null
content?: string | null
fts_tokens?: unknown | null
id?: never
last_refresh?: string | null
meta?: Json | null
path: string
source?: string | null
title_tokens?: unknown | null
type?: string | null
version?: string | null
}
Update: {
checksum?: string | null
content?: string | null
fts_tokens?: unknown | null
id?: never
last_refresh?: string | null
meta?: Json | null
path?: string
source?: string | null
title_tokens?: unknown | null
type?: string | null
version?: string | null
}
Relationships: []
}
page_section: {
Row: {
content: string | null
embedding: string | null
heading: string | null
id: number
page_id: number
rag_ignore: boolean | null
slug: string | null
token_count: number | null
}
Insert: {
content?: string | null
embedding?: string | null
heading?: string | null
id?: number
page_id: number
rag_ignore?: boolean | null
slug?: string | null
token_count?: number | null
}
Update: {
content?: string | null
embedding?: string | null
heading?: string | null
id?: number
page_id?: number
rag_ignore?: boolean | null
slug?: string | null
token_count?: number | null
}
Relationships: [
{
foreignKeyName: 'page_section_page_id_fkey'
columns: ['page_id']
isOneToOne: false
referencedRelation: 'page'
referencedColumns: ['id']
},
]
}
page_section_nimbus: {
Row: {
content: string | null
embedding: string | null
heading: string | null
id: number
page_id: number
rag_ignore: boolean | null
slug: string | null
token_count: number | null
}
Insert: {
content?: string | null
embedding?: string | null
heading?: string | null
id?: never
page_id: number
rag_ignore?: boolean | null
slug?: string | null
token_count?: number | null
}
Update: {
content?: string | null
embedding?: string | null
heading?: string | null
id?: never
page_id?: number
rag_ignore?: boolean | null
slug?: string | null
token_count?: number | null
}
Relationships: [
{
foreignKeyName: 'page_section_nimbus_page_id_fkey'
columns: ['page_id']
isOneToOne: false
referencedRelation: 'page_nimbus'
referencedColumns: ['id']
},
]
}
tickets: {
Row: {
company: string | null
created_at: string
email: string | null
game_won_at: string | null
id: string
launch_week: string
location: string | null
metadata: Json | null
name: string | null
referred_by: string | null
role: string | null
shared_on_linkedin: string | null
shared_on_twitter: string | null
ticket_number: number
user_id: string
username: string | null
}
Insert: {
company?: string | null
created_at?: string
email?: string | null
game_won_at?: string | null
id?: string
launch_week: string
location?: string | null
metadata?: Json | null
name?: string | null
referred_by?: string | null
role?: string | null
shared_on_linkedin?: string | null
shared_on_twitter?: string | null
ticket_number?: number
user_id: string
username?: string | null
}
Update: {
company?: string | null
created_at?: string
email?: string | null
game_won_at?: string | null
id?: string
launch_week?: string
location?: string | null
metadata?: Json | null
name?: string | null
referred_by?: string | null
role?: string | null
shared_on_linkedin?: string | null
shared_on_twitter?: string | null
ticket_number?: number
user_id?: string
username?: string | null
}
Relationships: [
{
foreignKeyName: 'public_tickets_id_fkey'
columns: ['user_id']
isOneToOne: false
referencedRelation: 'users'
referencedColumns: ['id']
},
{
foreignKeyName: 'tickets_launch_week_fkey'
columns: ['launch_week']
isOneToOne: false
referencedRelation: 'launch_weeks'
referencedColumns: ['id']
},
{
foreignKeyName: 'tickets_user_id_fkey'
columns: ['user_id']
isOneToOne: false
referencedRelation: 'users'
referencedColumns: ['id']
},
]
}
troubleshooting_entries: {
Row: {
api: Json | null
checksum: string
date_created: string
date_updated: string
errors: Json[] | null
github_id: string
github_url: string
id: string
keywords: string[] | null
title: string
topics: string[]
}
Insert: {
api?: Json | null
checksum: string
date_created?: string
date_updated?: string
errors?: Json[] | null
github_id: string
github_url: string
id?: string
keywords?: string[] | null
title: string
topics: string[]
}
Update: {
api?: Json | null
checksum?: string
date_created?: string
date_updated?: string
errors?: Json[] | null
github_id?: string
github_url?: string
id?: string
keywords?: string[] | null
title?: string
topics?: string[]
}
Relationships: []
}
validation_history: {
Row: {
created_at: string
id: number
tag: string
}
Insert: {
created_at?: string
id?: never
tag: string
}
Update: {
created_at?: string
id?: never
tag?: string
}
Relationships: []
}
}
Views: {
tickets_view: {
Row: {
company: string | null
created_at: string | null
id: string | null
launch_week: string | null
location: string | null
metadata: Json | null
name: string | null
platinum: boolean | null
referrals: number | null
role: string | null
secret: boolean | null
shared_on_linkedin: string | null
shared_on_twitter: string | null
ticket_number: number | null
username: string | null
}
Relationships: [
{
foreignKeyName: 'tickets_launch_week_fkey'
columns: ['launch_week']
isOneToOne: false
referencedRelation: 'launch_weeks'
referencedColumns: ['id']
},
]
}
}
Functions: {
cleanup_last_changed_pages: {
Args: Record<PropertyKey, never>
Returns: number
}
docs_search_embeddings: {
Args: {
embedding: string
match_threshold: number
}
Returns: {
id: number
path: string
type: string
title: string
subtitle: string
description: string
headings: string[]
slugs: string[]
}[]
}
docs_search_embeddings_nimbus: {
Args: {
embedding: string
match_threshold: number
}
Returns: {
id: number
path: string
type: string
title: string
subtitle: string
description: string
headings: string[]
slugs: string[]
}[]
}
docs_search_fts: {
Args: {
query: string
}
Returns: {
id: number
path: string
type: string
title: string
subtitle: string
description: string
}[]
}
docs_search_fts_nimbus: {
Args: {
query: string
}
Returns: {
id: number
path: string
type: string
title: string
subtitle: string
description: string
}[]
}
get_full_content_url: {
Args: {
type: string
path: string
slug: string
}
Returns: string
}
get_last_revalidation_for_tags: {
Args: {
tags: string[]
}
Returns: {
tag: string
created_at: string
}[]
}
hnswhandler: {
Args: {
'': unknown
}
Returns: unknown
}
ipv6_active_status: {
Args: {
project_ref: string
}
Returns: {
pgbouncer_active: boolean
vercel_active: boolean
}[]
}
ivfflathandler: {
Args: {
'': unknown
}
Returns: unknown
}
json_matches_schema: {
Args: {
schema: Json
instance: Json
}
Returns: boolean
}
jsonb_matches_schema: {
Args: {
schema: Json
instance: Json
}
Returns: boolean
}
jsonschema_is_valid: {
Args: {
schema: Json
}
Returns: boolean
}
jsonschema_validation_errors: {
Args: {
schema: Json
instance: Json
}
Returns: string[]
}
match_embedding: {
Args: {
embedding: string
match_threshold?: number
max_results?: number
}
Returns: {
content: string | null
embedding: string | null
heading: string | null
id: number
page_id: number
rag_ignore: boolean | null
slug: string | null
token_count: number | null
}[]
}
match_embedding_nimbus: {
Args: {
embedding: string
match_threshold?: number
max_results?: number
}
Returns: {
content: string | null
embedding: string | null
heading: string | null
id: number
page_id: number
rag_ignore: boolean | null
slug: string | null
token_count: number | null
}[]
}
match_page_sections_v2: {
Args: {
embedding: string
match_threshold: number
min_content_length: number
}
Returns: {
content: string | null
embedding: string | null
heading: string | null
id: number
page_id: number
rag_ignore: boolean | null
slug: string | null
token_count: number | null
}[]
}
match_page_sections_v2_nimbus: {
Args: {
embedding: string
match_threshold: number
min_content_length: number
}
Returns: {
content: string | null
embedding: string | null
heading: string | null
id: number
page_id: number
rag_ignore: boolean | null
slug: string | null
token_count: number | null
}[]
}
search_content: {
Args: {
embedding: string
include_full_content?: boolean
match_threshold?: number
max_result?: number
}
Returns: {
id: number
page_title: string
type: string
href: string
content: string
metadata: Json
subsections: Json[]
}[]
}
search_content_hybrid: {
Args: {
query_text: string
query_embedding: string
max_result?: number
full_text_weight?: number
semantic_weight?: number
rrf_k?: number
match_threshold?: number
include_full_content?: boolean
}
Returns: {
id: number
page_title: string
type: string
href: string
content: string
metadata: Json
subsections: Json[]
}[]
}
search_content_hybrid_nimbus: {
Args: {
query_text: string
query_embedding: string
max_result?: number
full_text_weight?: number
semantic_weight?: number
rrf_k?: number
match_threshold?: number
include_full_content?: boolean
}
Returns: {
id: number
page_title: string
type: string
href: string
content: string
metadata: Json
subsections: Json[]
}[]
}
search_content_nimbus: {
Args: {
embedding: string
include_full_content?: boolean
match_threshold?: number
max_result?: number
}
Returns: {
id: number
page_title: string
type: string
href: string
content: string
metadata: Json
subsections: Json[]
}[]
}
update_last_changed_checksum: {
Args: {
new_parent_page: string
new_heading: string
new_checksum: string
git_update_time: string
check_time: string
}
Returns: string
}
validate_troubleshooting_errors: {
Args: {
errors: Json[]
}
Returns: boolean
}
vector_avg: {
Args: {
'': number[]
}
Returns: string
}
vector_dims: {
Args: {
'': string
}
Returns: number
}
vector_norm: {
Args: {
'': string
}
Returns: number
}
vector_out: {
Args: {
'': string
}
Returns: unknown
}
vector_send: {
Args: {
'': string
}
Returns: string
}
vector_typmod_in: {
Args: {
'': unknown[]
}
Returns: number
}
}
Enums: {
feedback_vote: 'yes' | 'no'
}
CompositeTypes: {
[_ in never]: never
}
}
storage: {
Tables: {
buckets: {
Row: {
allowed_mime_types: string[] | null
avif_autodetection: boolean | null
created_at: string | null
file_size_limit: number | null
id: string
name: string
owner: string | null
owner_id: string | null
public: boolean | null
updated_at: string | null
}
Insert: {
allowed_mime_types?: string[] | null
avif_autodetection?: boolean | null
created_at?: string | null
file_size_limit?: number | null
id: string
name: string
owner?: string | null
owner_id?: string | null
public?: boolean | null
updated_at?: string | null
}
Update: {
allowed_mime_types?: string[] | null
avif_autodetection?: boolean | null
created_at?: string | null
file_size_limit?: number | null
id?: string
name?: string
owner?: string | null
owner_id?: string | null
public?: boolean | null
updated_at?: string | null
}
Relationships: []
}
migrations: {
Row: {
executed_at: string | null
hash: string
id: number
name: string
}
Insert: {
executed_at?: string | null
hash: string
id: number
name: string
}
Update: {
executed_at?: string | null
hash?: string
id?: number
name?: string
}
Relationships: []
}
objects: {
Row: {
bucket_id: string | null
created_at: string | null
id: string
last_accessed_at: string | null
metadata: Json | null
name: string | null
owner: string | null
owner_id: string | null
path_tokens: string[] | null
updated_at: string | null
version: string | null
}
Insert: {
bucket_id?: string | null
created_at?: string | null
id?: string
last_accessed_at?: string | null
metadata?: Json | null
name?: string | null
owner?: string | null
owner_id?: string | null
path_tokens?: string[] | null
updated_at?: string | null
version?: string | null
}
Update: {
bucket_id?: string | null
created_at?: string | null
id?: string
last_accessed_at?: string | null
metadata?: Json | null
name?: string | null
owner?: string | null
owner_id?: string | null
path_tokens?: string[] | null
updated_at?: string | null
version?: string | null
}
Relationships: [
{
foreignKeyName: 'objects_bucketId_fkey'
columns: ['bucket_id']
isOneToOne: false
referencedRelation: 'buckets'
referencedColumns: ['id']
},
]
}
}
Views: {
[_ in never]: never
}
Functions: {
can_insert_object: {
Args: {
bucketid: string
name: string
owner: string
metadata: Json
}
Returns: undefined
}
extension: {
Args: {
name: string
}
Returns: string
}
filename: {
Args: {
name: string
}
Returns: string
}
foldername: {
Args: {
name: string
}
Returns: string[]
}
get_size_by_bucket: {
Args: Record<PropertyKey, never>
Returns: {
size: number
bucket_id: string
}[]
}
search: {
Args: {
prefix: string
bucketname: string
limits?: number
levels?: number
offsets?: number
search?: string
sortcolumn?: string
sortorder?: string
}
Returns: {
name: string
id: string
updated_at: string
created_at: string
last_accessed_at: string
metadata: Json
}[]
}
}
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