73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
#!/usr/bin/env tsx
|
|
/**
|
|
* Create Storage Bucket Script
|
|
*
|
|
* Creates the gallery bucket in Supabase Storage with proper configuration.
|
|
*
|
|
* Usage:
|
|
* tsx scripts/create-storage-bucket.ts
|
|
*/
|
|
|
|
import { createSupabaseAdminClient, isSupabaseConfigured } from '../src/lib/supabase';
|
|
import { logger } from '../src/lib/logger';
|
|
|
|
const GALLERY_BUCKET = 'gallery';
|
|
|
|
async function createBucket() {
|
|
console.log('=== Creating Supabase Storage Bucket ===\n');
|
|
|
|
// Check Supabase configuration
|
|
if (!isSupabaseConfigured()) {
|
|
console.error('❌ Supabase is not configured!');
|
|
console.error('Please set NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY');
|
|
process.exit(1);
|
|
}
|
|
|
|
const supabase = createSupabaseAdminClient();
|
|
|
|
// Check if bucket already exists
|
|
console.log('Checking if bucket exists...');
|
|
const { data: buckets, error: listError } = await supabase.storage.listBuckets();
|
|
|
|
if (listError) {
|
|
console.error('❌ Failed to list buckets:', listError.message);
|
|
process.exit(1);
|
|
}
|
|
|
|
const existingBucket = buckets?.find(b => b.name === GALLERY_BUCKET);
|
|
if (existingBucket) {
|
|
console.log(`✓ Bucket "${GALLERY_BUCKET}" already exists`);
|
|
console.log(` Public: ${existingBucket.public ? 'Yes' : 'No'}`);
|
|
console.log(` Created: ${existingBucket.created_at}`);
|
|
console.log('\nBucket is ready to use!');
|
|
return;
|
|
}
|
|
|
|
// Create bucket
|
|
console.log(`Creating bucket "${GALLERY_BUCKET}"...`);
|
|
const { data: bucket, error: createError } = await supabase.storage.createBucket(GALLERY_BUCKET, {
|
|
public: true,
|
|
fileSizeLimit: 10485760, // 10MB
|
|
allowedMimeTypes: ['image/jpeg', 'image/png', 'image/webp'],
|
|
});
|
|
|
|
if (createError) {
|
|
console.error('❌ Failed to create bucket:', createError.message);
|
|
console.error('\nNote: Bucket creation may require admin permissions.');
|
|
console.error('You can create it manually via:');
|
|
console.error(' 1. Supabase Dashboard → Storage → New bucket');
|
|
console.error(' 2. Supabase CLI: supabase storage create gallery --public');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`✓ Bucket "${GALLERY_BUCKET}" created successfully!`);
|
|
// Bucket was created with public: true, so it's public
|
|
console.log(` Public: Yes`);
|
|
console.log('\nBucket is ready to use!');
|
|
}
|
|
|
|
createBucket().catch((error) => {
|
|
console.error('Script failed:', error);
|
|
process.exit(1);
|
|
});
|