Files
moyosapp_beta.0.0.3.3_beta1/scripts/create-storage-bucket.ts
2026-01-16 19:04:48 +02:00

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);
});