bookwiz.io / lib / supabase-types.ts
supabase-types.ts
Raw
export type Json =
  | string
  | number
  | boolean
  | null
  | { [key: string]: Json | undefined }
  | Json[]

export type Database = {
  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: {
      profiles: {
        Row: {
          avatar_url: string | null
          created_at: string
          email: string | null
          full_name: string | null
          id: string
          updated_at: string
        }
        Insert: {
          avatar_url?: string | null
          created_at?: string
          email?: string | null
          full_name?: string | null
          id: string
          updated_at?: string
        }
        Update: {
          avatar_url?: string | null
          created_at?: string
          email?: string | null
          full_name?: string | null
          id?: string
          updated_at?: string
        }
        Relationships: []
      }
      email_preferences: {
        Row: {
          user_id: string
          weekly_progress_digest: boolean
          product_updates: boolean
          account_notifications: boolean
          created_at: string
          updated_at: string
        }
        Insert: {
          user_id: string
          weekly_progress_digest?: boolean
          product_updates?: boolean
          account_notifications?: boolean
          created_at?: string
          updated_at?: string
        }
        Update: {
          user_id?: string
          weekly_progress_digest?: boolean
          product_updates?: boolean
          account_notifications?: boolean
          created_at?: string
          updated_at?: string
        }
        Relationships: [
          {
            foreignKeyName: "email_preferences_user_id_fkey"
            columns: ["user_id"]
            isOneToOne: true
            referencedRelation: "profiles"
            referencedColumns: ["id"]
          }
        ]
      }
      books: {
        Row: {
          id: string
          title: string
          description: string | null
          status: string
          word_count: number
          created_at: string
          updated_at: string
          user_id: string
          author: string | null
          cover_image_url: string | null
          genre: string | null
          target_word_count: number | null
          settings: Json
        }
        Insert: {
          id?: string
          title: string
          description?: string | null
          status?: string
          word_count?: number
          created_at?: string
          updated_at?: string
          user_id: string
          author?: string | null
          cover_image_url?: string | null
          genre?: string | null
          target_word_count?: number | null
          settings?: Json
        }
        Update: {
          id?: string
          title?: string
          description?: string | null
          status?: string
          word_count?: number
          created_at?: string
          updated_at?: string
          user_id?: string
          author?: string | null
          cover_image_url?: string | null
          genre?: string | null
          target_word_count?: number | null
          settings?: Json
        }
        Relationships: []
      }
      file_system_items: {
        Row: {
          id: string
          book_id: string
          parent_id: string | null
          name: string
          type: string
          content: string | null
          file_extension: string | null
          mime_type: string | null
          file_size: number | null
          file_url: string | null
          expanded: boolean
          sort_order: number
          created_at: string
          updated_at: string
          metadata: Json
        }
        Insert: {
          id?: string
          book_id: string
          parent_id?: string | null
          name: string
          type: string
          content?: string | null
          file_extension?: string | null
          mime_type?: string | null
          file_size?: number | null
          file_url?: string | null
          expanded?: boolean
          sort_order?: number
          created_at?: string
          updated_at?: string
          metadata?: Json
        }
        Update: {
          id?: string
          book_id?: string
          parent_id?: string | null
          name?: string
          type?: string
          content?: string | null
          file_extension?: string | null
          mime_type?: string | null
          file_size?: number | null
          file_url?: string | null
          expanded?: boolean
          sort_order?: number
          created_at?: string
          updated_at?: string
          metadata?: Json
        }
        Relationships: [
          {
            foreignKeyName: "file_system_items_book_id_fkey"
            columns: ["book_id"]
            isOneToOne: false
            referencedRelation: "books"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "file_system_items_parent_id_fkey"
            columns: ["parent_id"]
            isOneToOne: false
            referencedRelation: "file_system_items"
            referencedColumns: ["id"]
          }
        ]
      }
      chats: {
        Row: {
          id: string
          book_id: string
          user_id: string
          title: string
          created_at: string
          updated_at: string
          model: string
          total_messages: number
          last_message_at: string
        }
        Insert: {
          id?: string
          book_id: string
          user_id: string
          title?: string
          created_at?: string
          updated_at?: string
          model?: string
          total_messages?: number
          last_message_at?: string
        }
        Update: {
          id?: string
          book_id?: string
          user_id?: string
          title?: string
          created_at?: string
          updated_at?: string
          model?: string
          total_messages?: number
          last_message_at?: string
        }
        Relationships: [
          {
            foreignKeyName: "chats_book_id_fkey"
            columns: ["book_id"]
            isOneToOne: false
            referencedRelation: "books"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "chats_user_id_fkey"
            columns: ["user_id"]
            isOneToOne: false
            referencedRelation: "profiles"
            referencedColumns: ["id"]
          }
        ]
      }
      messages: {
        Row: {
          id: string
          chat_id: string
          type: string
          content: string
          created_at: string
          sequence_number: number
          model: string | null
          tool_results: Json | null
          context_info: Json | null
        }
        Insert: {
          id?: string
          chat_id: string
          type: string
          content: string
          created_at?: string
          sequence_number: number
          model?: string | null
          tool_results?: Json | null
          context_info?: Json | null
        }
        Update: {
          id?: string
          chat_id?: string
          type?: string
          content?: string
          created_at?: string
          sequence_number?: number
          model?: string | null
          tool_results?: Json | null
          context_info?: Json | null
        }
        Relationships: [
          {
            foreignKeyName: "messages_chat_id_fkey"
            columns: ["chat_id"]
            isOneToOne: false
            referencedRelation: "chats"
            referencedColumns: ["id"]
          }
        ]
      }
    }
    Views: {
      [_ in never]: never
    }
    Functions: {
      [_ in never]: never
    }
    Enums: {
      [_ in never]: never
    }
    CompositeTypes: {
      [_ in never]: never
    }
  }
}

type DefaultSchema = Database[Extract<keyof Database, "public">]

export type Tables<
  DefaultSchemaTableNameOrOptions extends
    | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"])
    | { schema: keyof Database },
  TableName extends DefaultSchemaTableNameOrOptions extends {
    schema: keyof Database
  }
    ? keyof (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
        Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])
    : never = never,
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
  ? (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
      Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends {
      Row: infer R
    }
    ? R
    : never
  : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] &
        DefaultSchema["Views"])
    ? (DefaultSchema["Tables"] &
        DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends {
        Row: infer R
      }
      ? R
      : never
    : never

export type TablesInsert<
  DefaultSchemaTableNameOrOptions extends
    | keyof DefaultSchema["Tables"]
    | { schema: keyof Database },
  TableName extends DefaultSchemaTableNameOrOptions extends {
    schema: keyof Database
  }
    ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
    : never = never,
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
  ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
      Insert: infer I
    }
    ? I
    : never
  : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
    ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
        Insert: infer I
      }
      ? I
      : never
    : never

export type TablesUpdate<
  DefaultSchemaTableNameOrOptions extends
    | keyof DefaultSchema["Tables"]
    | { schema: keyof Database },
  TableName extends DefaultSchemaTableNameOrOptions extends {
    schema: keyof Database
  }
    ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
    : never = never,
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
  ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
      Update: infer U
    }
    ? U
    : never
  : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
    ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
        Update: infer U
      }
      ? U
      : never
    : never

export type Enums<
  DefaultSchemaEnumNameOrOptions extends
    | keyof DefaultSchema["Enums"]
    | { schema: keyof Database },
  EnumName extends DefaultSchemaEnumNameOrOptions extends {
    schema: keyof Database
  }
    ? keyof Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"]
    : never = never,
> = 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: {},
  },
} as const