@0xtld/tair-node
Version:
A Node.js package for Tair functionality with configuration, core, and helper modules.
61 lines (47 loc) • 1.54 kB
text/typescript
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;