From 388a16c687cfa9131c3e4efe53bc6f4dfcc4e0cd Mon Sep 17 00:00:00 2001 From: Dheeraj Kumar Date: Fri, 18 Apr 2025 14:54:37 +0530 Subject: [PATCH] Fix: Prevent space-only messages and allow same file re-upload after cancel --- .env.local.example | 36 -- app/api/chat/google/route.ts | 1 - components/chat/chat-helpers/index.ts | 7 +- components/chat/chat-input.tsx | 13 +- db/files.ts | 5 +- lib/build-prompt.ts | 54 ++- lib/chat-setting-limits.ts | 2 +- lib/models/llm/google-llm-list.ts | 7 +- supabase/types.ts | 592 +++++++++++++++----------- 9 files changed, 383 insertions(+), 334 deletions(-) delete mode 100644 .env.local.example diff --git a/.env.local.example b/.env.local.example deleted file mode 100644 index 7cff1a7118..0000000000 --- a/.env.local.example +++ /dev/null @@ -1,36 +0,0 @@ -# Supabase Public -NEXT_PUBLIC_SUPABASE_URL= -NEXT_PUBLIC_SUPABASE_ANON_KEY= - -# Supabase Private -SUPABASE_SERVICE_ROLE_KEY= - -# Ollama -NEXT_PUBLIC_OLLAMA_URL=http://localhost:11434 - -# API Keys (Optional: Entering an API key here overrides the API keys globally for all users.) -OPENAI_API_KEY= -ANTHROPIC_API_KEY= -GOOGLE_GEMINI_API_KEY= -MISTRAL_API_KEY= -GROQ_API_KEY= -PERPLEXITY_API_KEY= -OPENROUTER_API_KEY= - -# OpenAI API Information -NEXT_PUBLIC_OPENAI_ORGANIZATION_ID= - -# Azure API Information -AZURE_OPENAI_API_KEY= -AZURE_OPENAI_ENDPOINT= -AZURE_GPT_35_TURBO_NAME= -AZURE_GPT_45_VISION_NAME= -AZURE_GPT_45_TURBO_NAME= -AZURE_EMBEDDINGS_NAME= - -# General Configuration (Optional) -EMAIL_DOMAIN_WHITELIST= -EMAIL_WHITELIST= - -# File size limit for uploads in bytes -NEXT_PUBLIC_USER_FILE_SIZE_LIMIT=10485760 \ No newline at end of file diff --git a/app/api/chat/google/route.ts b/app/api/chat/google/route.ts index ad79139646..cb9820ee88 100644 --- a/app/api/chat/google/route.ts +++ b/app/api/chat/google/route.ts @@ -44,7 +44,6 @@ export async function POST(request: Request) { return new Response(readableStream, { headers: { "Content-Type": "text/plain" } }) - } catch (error: any) { let errorMessage = error.message || "An unexpected error occurred" const errorCode = error.status || 500 diff --git a/components/chat/chat-helpers/index.ts b/components/chat/chat-helpers/index.ts index 17a2089638..ec4a548cdc 100644 --- a/components/chat/chat-helpers/index.ts +++ b/components/chat/chat-helpers/index.ts @@ -208,9 +208,12 @@ export const handleHostedChat = async ( let draftMessages = await buildFinalMessages(payload, profile, chatImages) - let formattedMessages : any[] = [] + let formattedMessages: any[] = [] if (provider === "google") { - formattedMessages = await adaptMessagesForGoogleGemini(payload, draftMessages) + formattedMessages = await adaptMessagesForGoogleGemini( + payload, + draftMessages + ) } else { formattedMessages = draftMessages } diff --git a/components/chat/chat-input.tsx b/components/chat/chat-input.tsx index 761c6cdcf0..519a553036 100644 --- a/components/chat/chat-input.tsx +++ b/components/chat/chat-input.tsx @@ -229,8 +229,13 @@ export const ChatInput: FC = ({}) => { className="hidden" type="file" onChange={e => { - if (!e.target.files) return - handleSelectDeviceFile(e.target.files[0]) + const input = e.target + if (!input.files || input.files.length === 0) return + + handleSelectDeviceFile(input.files[0]) + + // Clear the input value so the same file can be selected again after cancel + input.value = "" }} accept={filesToAccept} /> @@ -264,10 +269,10 @@ export const ChatInput: FC = ({}) => { { - if (!userInput) return + if (!userInput.trim()) return handleSendMessage(userInput, chatMessages, false) }} diff --git a/db/files.ts b/db/files.ts index 68ad01e343..0b69625e68 100644 --- a/db/files.ts +++ b/db/files.ts @@ -94,7 +94,10 @@ export const createFile = async ( let validFilename = fileRecord.name.replace(/[^a-z0-9.]/gi, "_").toLowerCase() const extension = file.name.split(".").pop() const extensionIndex = validFilename.lastIndexOf(".") - const baseName = validFilename.substring(0, (extensionIndex < 0) ? undefined : extensionIndex) + const baseName = validFilename.substring( + 0, + extensionIndex < 0 ? undefined : extensionIndex + ) const maxBaseNameLength = 100 - (extension?.length || 0) - 1 if (baseName.length > maxBaseNameLength) { fileRecord.name = baseName.substring(0, maxBaseNameLength) + "." + extension diff --git a/lib/build-prompt.ts b/lib/build-prompt.ts index ddb0e76377..8bda846f9f 100644 --- a/lib/build-prompt.ts +++ b/lib/build-prompt.ts @@ -184,36 +184,35 @@ function buildRetrievalText(fileItems: Tables<"file_items">[]) { } function adaptSingleMessageForGoogleGemini(message: any) { - let adaptedParts = [] let rawParts = [] - if(!Array.isArray(message.content)) { - rawParts.push({type: 'text', text: message.content}) + if (!Array.isArray(message.content)) { + rawParts.push({ type: "text", text: message.content }) } else { rawParts = message.content } - for(let i = 0; i < rawParts.length; i++) { + for (let i = 0; i < rawParts.length; i++) { let rawPart = rawParts[i] - if(rawPart.type == 'text') { - adaptedParts.push({text: rawPart.text}) - } else if(rawPart.type === 'image_url') { + if (rawPart.type == "text") { + adaptedParts.push({ text: rawPart.text }) + } else if (rawPart.type === "image_url") { adaptedParts.push({ inlineData: { data: getBase64FromDataURL(rawPart.image_url.url), - mimeType: getMediaTypeFromDataURL(rawPart.image_url.url), + mimeType: getMediaTypeFromDataURL(rawPart.image_url.url) } }) } } - let role = 'user' - if(["user", "system"].includes(message.role)) { - role = 'user' - } else if(message.role === 'assistant') { - role = 'model' + let role = "user" + if (["user", "system"].includes(message.role)) { + role = "user" + } else if (message.role === "assistant") { + role = "model" } return { @@ -222,29 +221,29 @@ function adaptSingleMessageForGoogleGemini(message: any) { } } -function adaptMessagesForGeminiVision( - messages: any[] -) { +function adaptMessagesForGeminiVision(messages: any[]) { // Gemini Pro Vision cannot process multiple messages // Reformat, using all texts and last visual only const basePrompt = messages[0].parts[0].text const baseRole = messages[0].role - const lastMessage = messages[messages.length-1] - const visualMessageParts = lastMessage.parts; - let visualQueryMessages = [{ - role: "user", - parts: [ - `${baseRole}:\n${basePrompt}\n\nuser:\n${visualMessageParts[0].text}\n\n`, - visualMessageParts.slice(1) - ] - }] + const lastMessage = messages[messages.length - 1] + const visualMessageParts = lastMessage.parts + let visualQueryMessages = [ + { + role: "user", + parts: [ + `${baseRole}:\n${basePrompt}\n\nuser:\n${visualMessageParts[0].text}\n\n`, + visualMessageParts.slice(1) + ] + } + ] return visualQueryMessages } export async function adaptMessagesForGoogleGemini( payload: ChatPayload, - messages: any[] + messages: any[] ) { let geminiMessages = [] for (let i = 0; i < messages.length; i++) { @@ -252,9 +251,8 @@ export async function adaptMessagesForGoogleGemini( geminiMessages.push(adaptedMessage) } - if(payload.chatSettings.model === "gemini-pro-vision") { + if (payload.chatSettings.model === "gemini-pro-vision") { geminiMessages = adaptMessagesForGeminiVision(geminiMessages) } return geminiMessages } - diff --git a/lib/chat-setting-limits.ts b/lib/chat-setting-limits.ts index c802bd657b..1dcde08490 100644 --- a/lib/chat-setting-limits.ts +++ b/lib/chat-setting-limits.ts @@ -47,7 +47,7 @@ export const CHAT_SETTING_LIMITS: Record = { }, // GOOGLE MODELS - + "gemini-1.5-flash": { MIN_TEMPERATURE: 0.0, MAX_TEMPERATURE: 1.0, diff --git a/lib/models/llm/google-llm-list.ts b/lib/models/llm/google-llm-list.ts index d039eda4af..833eb7ec2b 100644 --- a/lib/models/llm/google-llm-list.ts +++ b/lib/models/llm/google-llm-list.ts @@ -44,4 +44,9 @@ const GEMINI_PRO_VISION: LLM = { imageInput: true } -export const GOOGLE_LLM_LIST: LLM[] = [GEMINI_PRO, GEMINI_PRO_VISION, GEMINI_1_5_PRO, GEMINI_1_5_FLASH] +export const GOOGLE_LLM_LIST: LLM[] = [ + GEMINI_PRO, + GEMINI_PRO_VISION, + GEMINI_1_5_PRO, + GEMINI_1_5_FLASH +] diff --git a/supabase/types.ts b/supabase/types.ts index e54950274a..c85aa14fc9 100644 --- a/supabase/types.ts +++ b/supabase/types.ts @@ -71,13 +71,6 @@ export type Database = { referencedRelation: "collections" referencedColumns: ["id"] }, - { - foreignKeyName: "assistant_collections_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } assistant_files: { @@ -117,13 +110,6 @@ export type Database = { referencedRelation: "files" referencedColumns: ["id"] }, - { - foreignKeyName: "assistant_files_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } assistant_tools: { @@ -163,13 +149,6 @@ export type Database = { referencedRelation: "tools" referencedColumns: ["id"] }, - { - foreignKeyName: "assistant_tools_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } assistant_workspaces: { @@ -202,13 +181,6 @@ export type Database = { referencedRelation: "assistants" referencedColumns: ["id"] }, - { - foreignKeyName: "assistant_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "assistant_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -281,13 +253,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "assistants_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } chat_files: { @@ -327,13 +292,6 @@ export type Database = { referencedRelation: "files" referencedColumns: ["id"] }, - { - foreignKeyName: "chat_files_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } chats: { @@ -406,13 +364,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "chats_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "chats_workspace_id_fkey" columns: ["workspace_id"] @@ -459,13 +410,6 @@ export type Database = { referencedRelation: "files" referencedColumns: ["id"] }, - { - foreignKeyName: "collection_files_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } collection_workspaces: { @@ -498,13 +442,6 @@ export type Database = { referencedRelation: "collections" referencedColumns: ["id"] }, - { - foreignKeyName: "collection_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "collection_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -553,13 +490,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "collections_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } file_items: { @@ -607,13 +537,6 @@ export type Database = { referencedRelation: "files" referencedColumns: ["id"] }, - { - foreignKeyName: "file_items_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } file_workspaces: { @@ -646,13 +569,6 @@ export type Database = { referencedRelation: "files" referencedColumns: ["id"] }, - { - foreignKeyName: "file_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "file_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -713,13 +629,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "files_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } folders: { @@ -754,13 +663,6 @@ export type Database = { workspace_id?: string } Relationships: [ - { - foreignKeyName: "folders_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "folders_workspace_id_fkey" columns: ["workspace_id"] @@ -807,13 +709,6 @@ export type Database = { referencedRelation: "messages" referencedColumns: ["id"] }, - { - foreignKeyName: "message_file_items_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } messages: { @@ -871,13 +766,6 @@ export type Database = { referencedRelation: "chats" referencedColumns: ["id"] }, - { - foreignKeyName: "messages_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } model_workspaces: { @@ -910,13 +798,6 @@ export type Database = { referencedRelation: "models" referencedColumns: ["id"] }, - { - foreignKeyName: "model_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "model_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -977,13 +858,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "models_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } preset_workspaces: { @@ -1016,13 +890,6 @@ export type Database = { referencedRelation: "presets" referencedColumns: ["id"] }, - { - foreignKeyName: "preset_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "preset_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -1092,13 +959,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "presets_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } profiles: { @@ -1186,15 +1046,7 @@ export type Database = { user_id?: string username?: string } - Relationships: [ - { - foreignKeyName: "profiles_user_id_fkey" - columns: ["user_id"] - isOneToOne: true - referencedRelation: "users" - referencedColumns: ["id"] - }, - ] + Relationships: [] } prompt_workspaces: { Row: { @@ -1226,13 +1078,6 @@ export type Database = { referencedRelation: "prompts" referencedColumns: ["id"] }, - { - foreignKeyName: "prompt_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "prompt_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -1281,13 +1126,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "prompts_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } tool_workspaces: { @@ -1320,13 +1158,6 @@ export type Database = { referencedRelation: "tools" referencedColumns: ["id"] }, - { - foreignKeyName: "tool_workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, { foreignKeyName: "tool_workspaces_workspace_id_fkey" columns: ["workspace_id"] @@ -1384,13 +1215,6 @@ export type Database = { referencedRelation: "folders" referencedColumns: ["id"] }, - { - foreignKeyName: "tools_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, ] } workspaces: { @@ -1451,15 +1275,7 @@ export type Database = { updated_at?: string | null user_id?: string } - Relationships: [ - { - foreignKeyName: "workspaces_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] - }, - ] + Relationships: [] } } Views: { @@ -1467,11 +1283,7 @@ export type Database = { } Functions: { create_duplicate_messages_for_new_chat: { - Args: { - old_chat_id: string - new_chat_id: string - new_user_id: string - } + Args: { old_chat_id: string; new_chat_id: string; new_user_id: string } Returns: undefined } delete_message_including_and_after: { @@ -1491,17 +1303,11 @@ export type Database = { Returns: undefined } delete_storage_object: { - Args: { - bucket: string - object: string - } + Args: { bucket: string; object: string } Returns: Record } delete_storage_object_from_bucket: { - Args: { - bucket_name: string - object_path: string - } + Args: { bucket_name: string; object_path: string } Returns: Record } match_file_items_local: { @@ -1533,21 +1339,15 @@ export type Database = { }[] } non_private_assistant_exists: { - Args: { - p_name: string - } + Args: { p_name: string } Returns: boolean } non_private_file_exists: { - Args: { - p_name: string - } + Args: { p_name: string } Returns: boolean } non_private_workspace_exists: { - Args: { - p_name: string - } + Args: { p_name: string } Returns: boolean } } @@ -1626,12 +1426,14 @@ export type Database = { created_at: string | null id: string last_accessed_at: string | null + level: number | null metadata: Json | null name: string | null owner: string | null owner_id: string | null path_tokens: string[] | null updated_at: string | null + user_metadata: Json | null version: string | null } Insert: { @@ -1639,12 +1441,14 @@ export type Database = { created_at?: string | null id?: string last_accessed_at?: string | null + level?: number | null metadata?: Json | null name?: string | null owner?: string | null owner_id?: string | null path_tokens?: string[] | null updated_at?: string | null + user_metadata?: Json | null version?: string | null } Update: { @@ -1652,12 +1456,14 @@ export type Database = { created_at?: string | null id?: string last_accessed_at?: string | null + level?: number | null metadata?: Json | null name?: string | null owner?: string | null owner_id?: string | null path_tokens?: string[] | null updated_at?: string | null + user_metadata?: Json | null version?: string | null } Relationships: [ @@ -1670,36 +1476,175 @@ export type Database = { }, ] } + prefixes: { + Row: { + bucket_id: string + created_at: string | null + level: number + name: string + updated_at: string | null + } + Insert: { + bucket_id: string + created_at?: string | null + level?: number + name: string + updated_at?: string | null + } + Update: { + bucket_id?: string + created_at?: string | null + level?: number + name?: string + updated_at?: string | null + } + Relationships: [ + { + foreignKeyName: "prefixes_bucketId_fkey" + columns: ["bucket_id"] + isOneToOne: false + referencedRelation: "buckets" + referencedColumns: ["id"] + }, + ] + } + s3_multipart_uploads: { + Row: { + bucket_id: string + created_at: string + id: string + in_progress_size: number + key: string + owner_id: string | null + upload_signature: string + user_metadata: Json | null + version: string + } + Insert: { + bucket_id: string + created_at?: string + id: string + in_progress_size?: number + key: string + owner_id?: string | null + upload_signature: string + user_metadata?: Json | null + version: string + } + Update: { + bucket_id?: string + created_at?: string + id?: string + in_progress_size?: number + key?: string + owner_id?: string | null + upload_signature?: string + user_metadata?: Json | null + version?: string + } + Relationships: [ + { + foreignKeyName: "s3_multipart_uploads_bucket_id_fkey" + columns: ["bucket_id"] + isOneToOne: false + referencedRelation: "buckets" + referencedColumns: ["id"] + }, + ] + } + s3_multipart_uploads_parts: { + Row: { + bucket_id: string + created_at: string + etag: string + id: string + key: string + owner_id: string | null + part_number: number + size: number + upload_id: string + version: string + } + Insert: { + bucket_id: string + created_at?: string + etag: string + id?: string + key: string + owner_id?: string | null + part_number: number + size?: number + upload_id: string + version: string + } + Update: { + bucket_id?: string + created_at?: string + etag?: string + id?: string + key?: string + owner_id?: string | null + part_number?: number + size?: number + upload_id?: string + version?: string + } + Relationships: [ + { + foreignKeyName: "s3_multipart_uploads_parts_bucket_id_fkey" + columns: ["bucket_id"] + isOneToOne: false + referencedRelation: "buckets" + referencedColumns: ["id"] + }, + { + foreignKeyName: "s3_multipart_uploads_parts_upload_id_fkey" + columns: ["upload_id"] + isOneToOne: false + referencedRelation: "s3_multipart_uploads" + referencedColumns: ["id"] + }, + ] + } } Views: { [_ in never]: never } Functions: { + add_prefixes: { + Args: { _bucket_id: string; _name: string } + Returns: undefined + } can_insert_object: { - Args: { - bucketid: string - name: string - owner: string - metadata: Json - } + Args: { bucketid: string; name: string; owner: string; metadata: Json } Returns: undefined } + delete_prefix: { + Args: { _bucket_id: string; _name: string } + Returns: boolean + } extension: { - Args: { - name: string - } + Args: { name: string } Returns: string } filename: { - Args: { - name: string - } + Args: { name: string } Returns: string } foldername: { - Args: { - name: string - } + Args: { name: string } + Returns: string[] + } + get_level: { + Args: { name: string } + Returns: number + } + get_prefix: { + Args: { name: string } + Returns: string + } + get_prefixes: { + Args: { name: string } Returns: string[] } get_size_by_bucket: { @@ -1709,6 +1654,41 @@ export type Database = { bucket_id: string }[] } + list_multipart_uploads_with_delimiter: { + Args: { + bucket_id: string + prefix_param: string + delimiter_param: string + max_keys?: number + next_key_token?: string + next_upload_token?: string + } + Returns: { + key: string + id: string + created_at: string + }[] + } + list_objects_with_delimiter: { + Args: { + bucket_id: string + prefix_param: string + delimiter_param: string + max_keys?: number + start_after?: string + next_token?: string + } + Returns: { + name: string + id: string + metadata: Json + updated_at: string + }[] + } + operation: { + Args: Record + Returns: string + } search: { Args: { prefix: string @@ -1729,6 +1709,63 @@ export type Database = { metadata: Json }[] } + search_legacy_v1: { + 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 + }[] + } + search_v1_optimised: { + 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 + }[] + } + search_v2: { + Args: { + prefix: string + bucket_name: string + limits?: number + levels?: number + start_after?: string + } + Returns: { + key: string + name: string + id: string + updated_at: string + created_at: string + metadata: Json + }[] + } } Enums: { [_ in never]: never @@ -1739,27 +1776,29 @@ export type Database = { } } -type PublicSchema = Database[Extract] +type DefaultSchema = Database[Extract] export type Tables< - PublicTableNameOrOptions extends - | keyof (PublicSchema["Tables"] & PublicSchema["Views"]) + DefaultSchemaTableNameOrOptions extends + | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"]) | { schema: keyof Database }, - TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] & - Database[PublicTableNameOrOptions["schema"]]["Views"]) + TableName extends DefaultSchemaTableNameOrOptions extends { + schema: keyof Database + } + ? keyof (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) : never = never, -> = PublicTableNameOrOptions extends { schema: keyof Database } - ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] & - Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } + ? (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends { Row: infer R } ? R : never - : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] & - PublicSchema["Views"]) - ? (PublicSchema["Tables"] & - PublicSchema["Views"])[PublicTableNameOrOptions] extends { + : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] & + DefaultSchema["Views"]) + ? (DefaultSchema["Tables"] & + DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends { Row: infer R } ? R @@ -1767,20 +1806,22 @@ export type Tables< : never export type TablesInsert< - PublicTableNameOrOptions extends - | keyof PublicSchema["Tables"] + DefaultSchemaTableNameOrOptions extends + | keyof DefaultSchema["Tables"] | { schema: keyof Database }, - TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + TableName extends DefaultSchemaTableNameOrOptions extends { + schema: keyof Database + } + ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, -> = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } + ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Insert: infer I } ? I : never - : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] - ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { + : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] + ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends { Insert: infer I } ? I @@ -1788,20 +1829,22 @@ export type TablesInsert< : never export type TablesUpdate< - PublicTableNameOrOptions extends - | keyof PublicSchema["Tables"] + DefaultSchemaTableNameOrOptions extends + | keyof DefaultSchema["Tables"] | { schema: keyof Database }, - TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + TableName extends DefaultSchemaTableNameOrOptions extends { + schema: keyof Database + } + ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, -> = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } + ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Update: infer U } ? U : never - : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] - ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { + : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] + ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends { Update: infer U } ? U @@ -1809,15 +1852,44 @@ export type TablesUpdate< : never export type Enums< - PublicEnumNameOrOptions extends - | keyof PublicSchema["Enums"] + DefaultSchemaEnumNameOrOptions extends + | keyof DefaultSchema["Enums"] | { schema: keyof Database }, - EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"] + EnumName extends DefaultSchemaEnumNameOrOptions extends { + schema: keyof Database + } + ? keyof Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] : never = never, -> = PublicEnumNameOrOptions extends { schema: keyof Database } - ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName] - : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"] - ? PublicSchema["Enums"][PublicEnumNameOrOptions] +> = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database } + ? Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] + : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"] + ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions] : never +export type CompositeTypes< + PublicCompositeTypeNameOrOptions extends + | keyof DefaultSchema["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 DefaultSchema["CompositeTypes"] + ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions] + : never + +export const Constants = { + graphql_public: { + Enums: {}, + }, + public: { + Enums: {}, + }, + storage: { + Enums: {}, + }, +} as const +