drupabase-js
v0.1.0
Published
JavaScript client for Drupabase — Supabase-style BaaS powered by Drupal
Downloads
11
Maintainers
Readme
drupabase-js
JavaScript client for Drupabase — Supabase-style BaaS powered by Drupal.
Install
npm install drupabase-jsQuick Start
import { createClient } from 'drupabase-js'
const db = createClient('https://my-app.ddev.site/drupabase/v1', '<your-anon-key>')Auth
// Sign up
const { data, error } = await db.auth.signUp({
email: '[email protected]',
password: 'password',
})
// Sign in
const { data, error } = await db.auth.signIn({
email: '[email protected]',
password: 'password',
})
// Get current user
const { data: user } = await db.auth.getUser()
// Sign out
db.auth.signOut()Querying Data
// Get all blog posts
const { data } = await db.from('blog').select('*').get()
// Get one by ID
const { data } = await db.from('blog').single('uuid-here')
// Filter, sort, paginate
const { data } = await db
.from('blog')
.select('*')
.eq('featured', true)
.order('created', { ascending: false })
.limit(10)
.get()
// Include relations
const { data } = await db
.from('blog')
.select('*')
.include('tags', 'author')
.get()
// Insert
const { data } = await db.from('blog').insert({
title: 'My Post',
body: { value: 'Hello world', format: 'plain_text' },
featured: true,
})
// Update
const { data } = await db.from('blog').update('uuid', {
title: 'Updated Title',
})
// Delete
const { error } = await db.from('blog').delete('uuid')Storage
// Upload
const { data } = await db.storage
.from('avatars')
.upload('user1.jpg', file, { contentType: 'image/jpeg' })
// Download
const { data: blob } = await db.storage.from('avatars').download('user1.jpg')
// Delete
await db.storage.from('avatars').remove('user1.jpg')
// Get public URL
const url = db.storage.from('avatars').getPublicUrl('user1.jpg')Realtime
// Subscribe to changes
const subscription = db.realtime.on('blog', (event) => {
console.log(event.event, event.id) // 'INSERT', '5'
})
// Subscribe to specific events only
const sub = db.realtime.on('blog', callback, { event: 'INSERT' })
// Unsubscribe
subscription.unsubscribe()
// Remove all subscriptions
db.realtime.removeAllSubscriptions()