How To: Using @quatrain/storage-supabase

This guide covers Supabase-specific storage operations.

Table of Contents

  1. Public URLs vs Signed URLs
  2. Uploading assets

1. Public URLs vs Signed URLs

Supabase buckets can be public or private. By default, getUrl() fetches the public URL if the bucket is configured as public in Supabase.

import { Storage } from '@quatrain/storage'
 
async function getImageUrl(imagePath: string) {
    const storage = Storage.getAdapter('supabase')
    
    // Will return https://xxx.supabase.co/storage/v1/object/public/images/...
    const publicUrl = await storage.getUrl('images', imagePath)
    
    return publicUrl
}

2. Uploading assets

Uploading an asset to Supabase storage behaves exactly like other adapters.

import { Storage } from '@quatrain/storage'
 
async function saveDocument(buffer: Buffer) {
    const storage = Storage.getAdapter()
    
    await storage.put('secure-documents', 'user-1/contract.pdf', buffer, {
        contentType: 'application/pdf'
    })
}