This documentation covers the UserService
, Database
, and Storage
classes from the supabase.ts
file, which provide interfaces for interacting with Supabase functionalities.
Auth: Before using authentication providers, ensure they are enabled in your Supabase Authentication settings. Configure your site URL and redirect URLs in the URL Configuration section.
Storage: If you plan to use public URLs, make sure your storage buckets are set to public. However, it's recommended to apply specific access policies for security.
Database: As always, ensure that your table columns align with the data structure you intend to store.
import { User, Database, Auth, Storage } from '@/controllers/supabase'
The UserService
class provides methods for managing user-related operations.
const result = await User.updateUserMeta({ birth_day: '1995/03/12', custom_name: 'John Doe' });
if (result.error) {
console.error(result.error);
} else {
console.log(result.data);
}
const user = await User.getUser();
if (user) {
console.log('Logged in user:', user);
} else {
console.log('No user logged in');
}
The Database
class provides methods for interacting with Supabase tables.
const result = await Database.set('users', { id: 1, name: 'John Doe' });
if (result.error) {
console.error(result.error);
} else {
console.log(result.data);
}
const result = await Database.fetch('users', { key: 'name', value: 'John Doe' });
if (result.error) {
console.error(result.error);
} else {
console.log(result.data);
}
const result = await Database.delete('users', 1);
if (result.error) {
console.error(result.error);
} else {
console.log('Record deleted successfully');
}
The Auth
class provides methods for handling various authentication operations using Supabase.
const result = await Auth.handleOAuth('google');
if (result.error) {
console.error(result.error);
} else {
console.log('OAuth login successful');
}
const loginResult = await Auth.handleEmailAuth({ email: '[email protected]', password: 'password123' }, true);
if (loginResult.error) {
console.error(loginResult.error);
} else {
console.log('Login successful');
}
const signupResult = await Auth.handleEmailAuth({ email: '[email protected]', password: 'password123' }, false, 'https://yourapp.com/welcome');
if (signupResult.error) {
console.error(signupResult.error);
} else {
console.log('Signup successful');
}
const result = await Auth.handleReset('[email protected]', 'https://yourapp.com/reset-password');
if (result.error) {
console.error(result.error);
} else {
console.log('Password reset email sent successfully');
}
const result = await Auth.handlePassword('newPassword123');
if (result.error) {
console.error(result.error);
} else {
console.log('Password updated successfully');
}
The Storage
class provides methods for managing file storage in Supabase.
constructor(bucket: string)
bucket
(string): The name of the storage bucket.
const storage = new Storage('my-bucket');
const file = new File(['file content'], 'example.txt', { type: 'text/plain' });
const result = await storage.upload(file, { folder: 'documents', publicUrl: true });
if (result.error) {
console.error(result.error);
} else {
console.log(result.data);
}
const storage = new Storage('my-bucket');
const result = await storage.fetch('documents', 10);
if (result.error) {
console.error(result.error);
} else {
console.log(result.files);
}
const storage = new Storage('my-bucket');
const result = await storage.delete('example.txt', 'documents');
if (result.error) {
console.error(result.error);
} else {
console.log('File deleted successfully');
}
The Supabase client is initialized using environment variables:
const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
const supabaseKey = import.meta.env.VITE_SUPABASE_ANON_KEY;
const supabase = createClient(supabaseUrl, supabaseKey);
Ensure that these environment variables are properly set in your project.