Hi there! Are you looking for the official Deno documentation? Try docs.deno.com for all your Deno learning needs.

StorageAnalyticsClient

import { StorageAnalyticsClient } from "https://esm.sh/@supabase/storage-js@2.89.0/dist/index.d.mts";

Client class for managing Analytics Buckets using Iceberg tables Provides methods for creating, listing, and deleting analytics buckets

class StorageAnalyticsClient {
constructor(
url: string,
headers?: {
[key: string]: string;
}
,
fetch?: Fetch$1,
);
protected fetch: Fetch$1;
protected headers: {
[key: string]: string;
}
;
protected shouldThrowOnError: boolean;
protected url: string;
 
createBucket(name: string): Promise<{
error: null;
}
| {
data: null;
error: StorageError;
}
>
;
deleteBucket(bucketName: string): Promise<{
data: {
message: string;
}
;
error: null;
}
| {
data: null;
error: StorageError;
}
>
;
from(bucketName: string): WrappedIcebergRestCatalog;
listBuckets(options?: {
limit?: number;
offset?: number;
sortColumn?: "name" | "created_at" | "updated_at";
sortOrder?: "asc" | "desc";
search?: string;
}
): Promise<{
data: AnalyticBucket[];
error: null;
}
| {
data: null;
error: StorageError;
}
>
;
throwOnError(): this;
}

§Constructors

§
new StorageAnalyticsClient(url: string, headers?: {
[key: string]: string;
}
, fetch?: Fetch$1)
[src]
@param url
  • The base URL for the storage API
@param headers
  • HTTP headers to include in requests
@param fetch
  • Optional custom fetch implementation
@example
const client = new StorageAnalyticsClient(url, headers)

§Properties

§
fetch: Fetch$1
[src]
§
headers: {
[key: string]: string;
}
[src]
§
shouldThrowOnError: boolean
[src]
§
url: string
[src]

§Methods

§
createBucket(name: string): Promise<{
error: null;
}
| {
data: null;
error: StorageError;
}
>
[src]
@param name

A unique name for the bucket you are creating

@return

Promise with response containing newly created analytics bucket or error

@example

Create analytics bucket

const { data, error } = await supabase
  .storage
  .analytics
  .createBucket('analytics-data')

Response:

{
  "data": {
    "name": "analytics-data",
    "type": "ANALYTICS",
    "format": "iceberg",
    "created_at": "2024-05-22T22:26:05.100Z",
    "updated_at": "2024-05-22T22:26:05.100Z"
  },
  "error": null
}
§
deleteBucket(bucketName: string): Promise<{
data: {
message: string;
}
;
error: null;
}
| {
data: null;
error: StorageError;
}
>
[src]
@param bucketName

The unique identifier of the bucket you would like to delete

@return

Promise with response containing success message or error

@example

Delete analytics bucket

const { data, error } = await supabase
  .storage
  .analytics
  .deleteBucket('analytics-data')

Response:

{
  "data": {
    "message": "Successfully deleted"
  },
  "error": null
}
§
from(bucketName: string): WrappedIcebergRestCatalog
[src]
@param bucketName
  • The name of the analytics bucket (warehouse) to connect to
@return

The wrapped Iceberg catalog client

@example

Get catalog and create table

// First, create an analytics bucket
const { data: bucket, error: bucketError } = await supabase
  .storage
  .analytics
  .createBucket('analytics-data')

// Get the Iceberg catalog for that bucket
const catalog = supabase.storage.analytics.from('analytics-data')

// Create a namespace
const { error: nsError } = await catalog.createNamespace({ namespace: ['default'] })

// Create a table with schema
const { data: tableMetadata, error: tableError } = await catalog.createTable(
  { namespace: ['default'] },
  {
    name: 'events',
    schema: {
      type: 'struct',
      fields: [
        { id: 1, name: 'id', type: 'long', required: true },
        { id: 2, name: 'timestamp', type: 'timestamp', required: true },
        { id: 3, name: 'user_id', type: 'string', required: false }
      ],
      'schema-id': 0,
      'identifier-field-ids': [1]
    },
    'partition-spec': {
      'spec-id': 0,
      fields: []
    },
    'write-order': {
      'order-id': 0,
      fields: []
    },
    properties: {
      'write.format.default': 'parquet'
    }
  }
)
@example

List tables in namespace

const catalog = supabase.storage.analytics.from('analytics-data')

// List all tables in the default namespace
const { data: tables, error: listError } = await catalog.listTables({ namespace: ['default'] })
if (listError) {
  if (listError.isNotFound()) {
    console.log('Namespace not found')
  }
  return
}
console.log(tables) // [{ namespace: ['default'], name: 'events' }]
@example

Working with namespaces

const catalog = supabase.storage.analytics.from('analytics-data')

// List all namespaces
const { data: namespaces } = await catalog.listNamespaces()

// Create namespace with properties
await catalog.createNamespace(
  { namespace: ['production'] },
  { properties: { owner: 'data-team', env: 'prod' } }
)
@example

Cleanup operations

const catalog = supabase.storage.analytics.from('analytics-data')

// Drop table with purge option (removes all data)
const { error: dropError } = await catalog.dropTable(
  { namespace: ['default'], name: 'events' },
  { purge: true }
)

if (dropError?.isNotFound()) {
  console.log('Table does not exist')
}

// Drop namespace (must be empty)
await catalog.dropNamespace({ namespace: ['default'] })
§
listBuckets(options?: {
limit?: number;
offset?: number;
sortColumn?: "name" | "created_at" | "updated_at";
sortOrder?: "asc" | "desc";
search?: string;
}
): Promise<{
data: AnalyticBucket[];
error: null;
}
| {
data: null;
error: StorageError;
}
>
[src]
@param options

Query parameters for listing buckets

@param options.limit

Maximum number of buckets to return

@param options.offset

Number of buckets to skip

@param options.sortColumn

Column to sort by ('name', 'created_at', 'updated_at')

@param options.sortOrder

Sort order ('asc' or 'desc')

@param options.search

Search term to filter bucket names

@return

Promise with response containing array of analytics buckets or error

@example

List analytics buckets

const { data, error } = await supabase
  .storage
  .analytics
  .listBuckets({
    limit: 10,
    offset: 0,
    sortColumn: 'created_at',
    sortOrder: 'desc'
  })

Response:

{
  "data": [
    {
      "name": "analytics-data",
      "type": "ANALYTICS",
      "format": "iceberg",
      "created_at": "2024-05-22T22:26:05.100Z",
      "updated_at": "2024-05-22T22:26:05.100Z"
    }
  ],
  "error": null
}
§
throwOnError(): this
[src]
@return

This instance for method chaining