UNPKG

@0xtld/tair-node

Version:

A Node.js package for Tair functionality with configuration, core, and helper modules.

61 lines (47 loc) 1.54 kB
import { createClient, SupabaseClient } from '@supabase/supabase-js'; const DefaultSupabaseURL = process.env.SUPABASE_URL || ''; const DefaultSupabaseKey = process.env.SUPABASE_KEY || ''; class SupabaseDB { public instance: SupabaseClient; constructor(url?: string, key?: string) { url = url || DefaultSupabaseURL; key = key || DefaultSupabaseKey; if (!url || !key) { throw new Error('Supabase URL and Key are required'); } this.instance = createClient(url, key); } async getData<T>(table: string): Promise<T[]> { const { data, error } = await this.instance .from(table) .select('*'); if (error) throw error; return data; } async insertData(table: string, data: any): Promise<string> { const { error, count } = await this.instance .from(table) .insert(data); if (error) throw error; return `Inserted ${count} rows`; } async updateData(table: string, data: any, keyEq: string): Promise<string> { const keyEqValue = data[keyEq]; const { error, count } = await this.instance .from(table) .update(data) .eq(keyEq, keyEqValue); if (error) throw error; return `Updated ${count} rows`; } async deleteData(table: string, keyEq: string, keyEqValue: any): Promise<string> { const { error, count } = await this.instance .from(table) .delete() .eq(keyEq, keyEqValue); if (error) throw error; return `Deleted ${count} rows`; } } export { SupabaseDB }; export default SupabaseDB;