1.0.0 • Published 10 months ago
@asaidimu/remote-store-supabase v1.0.0
@asaidimu/remote-store-supabase
A Supabase adapter for the remote-store library that provides a consistent interface for working with Supabase tables and storage.
Installation
npm install @asaidimu/remote-store-supabase @supabase/supabase-jsUsage
import { createClient } from '@supabase/supabase-js';
import { createSupabaseStore } from '@asaidimu/remote-store-supabase';
// Initialize Supabase client
const supabase = createClient(
'YOUR_SUPABASE_URL',
'YOUR_SUPABASE_ANON_KEY'
);
// Define your record type
interface User extends RemoteStoreRecord {
name: string;
email: string;
avatar_url?: string;
}
// Create a store instance
const userStore = createSupabaseStore<User>({
table: 'users',
supabase,
bucketName: 'avatars', // optional, defaults to 'uploads'
});
// Use the store
async function example() {
// Create a user
const user = await userStore.create({
data: {
name: 'John Doe',
email: 'john@example.com',
}
});
// Upload an avatar
const avatarFile = new File([''], 'avatar.png');
await userStore.upload({
id: user.id,
field: 'avatar_url',
file: avatarFile
});
// List users with pagination
const users = await userStore.list({
page: 1,
pageSize: 20,
filter: 'name=John Doe',
select: ['name', 'email'],
include: ['profile']
});
}API
createSupabaseStore(options)
Creates a new store instance for interacting with a Supabase table.
Options
table: string- The name of the Supabase tablesupabase: SupabaseClient- An initialized Supabase client instancebucketName?: string- The name of the storage bucket (defaults to 'uploads')
Returns
Returns a BaseStore<T> instance with the following methods:
find({ filter, options? })- Find first record matching the filterread({ id, options? })- Read a record by IDlist({ filter?, page?, pageSize?, ...options })- List records with paginationcreate({ data })- Create a new recordupdate({ id, data })- Update an existing recorddelete({ id })- Delete a recordupload({ id, field, file })- Upload a file to storage and update record with URL
License
MIT
1.0.0
10 months ago