UNPKG

solobase-js

Version:

A 100% drop-in replacement for the Supabase JavaScript client. Self-hosted Supabase alternative with complete API compatibility.

190 lines (161 loc) 5.07 kB
// Basic usage example - identical to Supabase import {createClient} from 'solobase-js' // Initialize client const solobase = createClient( 'http://127.0.0.1:8000/api', 'your-api-key' ) // Authentication examples async function authExamples() { // // Sign up // const { data: signUpData, error: signUpError } = await solobase.auth.signUp({ // email: 'user@example.com', // password: 'securepassword123', // options: { // data: { // first_name: 'John', // last_name: 'Doe', // age: 30 // } // } // }) // // if (signUpError) { // console.error('Sign up error:', signUpError.message) // return // } // // console.log('User signed up:', signUpData.user.email) // Sign in const {data: signInData, error: signInError} = await solobase.auth.signInWithPassword({ email: 'abutimartin778@gmail.com', password: 'password123' }) if (signInError) { console.error('Sign in error:', signInError.message) return } // console.log('User signed in:', signInData.session.user.email) } // Database examples async function databaseExamples() { // Insert data // const { data: insertData, error: insertError } = await solobase // .from('users') // .insert([ // { name: 'John Doe', email: 'john@example.com', age: 30 }, // { name: 'Jane Smith', email: 'jane@example.com', age: 25 } // ]) // // .select() // // if (insertError) { // console.error('Insert error:', insertError.message) // return // } // // console.log('Inserted users:', insertData) // Select data with filters let base = solobase .from('users') .select('*',{count:"exact"}); base.limit(10) const {data: selectData, error: selectError, count: userCount} = await base; // // .gte('age', 25) // // .order('created_at', { ascending: false }) // .limit(10) // .range(10, 20) if (selectError) { console.error('Select error:', selectError.message) return } console.log('count users:', userCount,selectData.length) return // Update data const {data: updateData, error: updateError} = await solobase .from('users') .update({age: 31}) .eq('email', 'john@example.com') .select() if (updateError) { console.error('Update error:', updateError.message) return } console.log('Updated user:', updateData) // Real-time subscription const subscription = solobase .channel('users-channel') .on('postgres_changes', { event: '*', schema: 'public', table: 'users' }, (payload) => { console.log('Real-time change:', payload) }) .subscribe() // Later, unsubscribe // subscription.unsubscribe() } // Storage examples async function storageExamples() { // Create bucket const {data: bucketData, error: bucketError} = await solobase.storage .createBucket('avatars', { public: true, fileSizeLimit: 1024 * 1024 * 5, // 5MB allowedMimeTypes: ['image/png', 'image/jpeg', 'image/gif'] }) if (bucketError) { console.error('Bucket creation error:', bucketError.message) return } console.log('Created bucket:', bucketData.name) // Upload file (example with File object) const fileInput = document.getElementById('file-input') // HTML input element if (fileInput && fileInput.files[0]) { const file = fileInput.files[0] const {data: uploadData, error: uploadError} = await solobase.storage .from('avatars') .upload(`user-${Date.now()}.png`, file, { cacheControl: '3600', upsert: false }) if (uploadError) { console.error('Upload error:', uploadError.message) return } console.log('Uploaded file:', uploadData.path) // Get public URL const {data: urlData} = solobase.storage .from('avatars') .getPublicUrl(uploadData.path) console.log('Public URL:', urlData.publicUrl) } // List files const {data: fileList, error: listError} = await solobase.storage .from('avatars') .list('', { limit: 100, sortBy: {column: 'name', order: 'asc'} }) if (listError) { console.error('List error:', listError.message) return } console.log('Files in bucket:', fileList) } // Run examples authExamples() .then(async () => { let base = solobase .from('users') .select('*',{count:"exact"}); base.limit(10) base.range(0,20) const {data, error, count} = await base; console.log(count,data.length) // databaseExamples() }) .then(() => { // storageExamples() }) .catch(console.error)