Convert backends to Firebase and combine projects
This commit is contained in:
85
RIT-EVENT-MANAGEMENT--main/migrateDomains.js
Normal file
85
RIT-EVENT-MANAGEMENT--main/migrateDomains.js
Normal file
@@ -0,0 +1,85 @@
|
||||
import { createClient } from '@supabase/supabase-js';
|
||||
|
||||
const SUPABASE_URL = 'https://mhvdpopbbtllhvzcpqkf.supabase.co';
|
||||
const SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im1odmRwb3BiYnRsbGh2emNwcWtmIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzE0MjUwMTUsImV4cCI6MjA4NzAwMTAxNX0.59OvUt4dj8-OguyD6dItdhC2jvUPSJVXNbsUxdk9w_s';
|
||||
|
||||
const supabase = createClient(SUPABASE_URL, SUPABASE_KEY);
|
||||
|
||||
const DOMAIN_MAP = {
|
||||
'TECHNICAL': [
|
||||
{ id: 'Computer Science and Engineering', name: 'CSE', image: 'https://images.unsplash.com/photo-1517694712202-14dd9538aa97?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'Computer Science and Business Systems', name: 'CSBS', image: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'Artificial Intelligence and Machine Learning (AIML)', name: 'AIML', image: 'https://images.unsplash.com/photo-1677442136019-21780ecad995?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'AIDS', name: 'AIDS', image: 'https://images.unsplash.com/photo-1509228627152-72ae9ae6848d?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'Information Technology', name: 'IT', image: 'https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'ECE', name: 'ECE', image: 'https://images.unsplash.com/photo-1517077304055-6e89abbf09b0?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'Mechanical', name: 'Mechanical', image: 'https://images.unsplash.com/photo-1537462715879-360eeb61a0ad?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'Bio-tech', name: 'Bio-tech', image: 'https://images.unsplash.com/photo-1530210124550-912dc1381cb8?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'CCE', name: 'CCE', image: 'https://images.unsplash.com/photo-1550751827-4bd374c3f58b?auto=format&fit=crop&q=80&w=600' },
|
||||
{ id: 'VLSI', name: 'VLSI', image: 'https://images.unsplash.com/photo-1518770660439-4636190af475?auto=format&fit=crop&q=80&w=600' }
|
||||
],
|
||||
'NON-TECHNICAL': [
|
||||
{ id: 'Management', name: 'Management', image: 'https://images.unsplash.com/photo-1519389950473-47ba0277781c?auto=format&fit=crop&q=80&w=400' },
|
||||
{ id: 'Arts & Culture', name: 'Arts & Culture', image: 'https://images.unsplash.com/photo-1513364776144-60967b0f800f?auto=format&fit=crop&q=80&w=800' },
|
||||
{ id: 'Sports & Athletics', name: 'Sports', image: 'https://images.unsplash.com/photo-1552674605-db6ffd4facb5?auto=format&fit=crop&q=80&w=400' },
|
||||
{ id: 'Social Service', name: 'Social Welfare', image: 'https://images.unsplash.com/photo-1488521787991-ed7bbaae773c?auto=format&fit=crop&q=80&w=400' }
|
||||
],
|
||||
'WORKSHOP': [
|
||||
{ id: 'Software Engineering', name: 'Software Dev', image: 'https://images.unsplash.com/photo-1633356122544-f134324a6cee?auto=format&fit=crop&q=80&w=400' },
|
||||
{ id: 'UI/UX Design', name: 'Design', image: 'https://images.unsplash.com/photo-1561070791-2526d30994b5?auto=format&fit=crop&q=80&w=800' },
|
||||
{ id: 'Cloud', name: 'Cloud/DevOps', image: 'https://images.unsplash.com/photo-1451187580459-43490279c0fa?auto=format&fit=crop&q=80&w=400' }
|
||||
]
|
||||
};
|
||||
|
||||
async function migrate() {
|
||||
for (const [category, domains] of Object.entries(DOMAIN_MAP)) {
|
||||
for (const d of domains) {
|
||||
console.log(`Processing ${d.name}...`);
|
||||
try {
|
||||
const response = await fetch(d.image);
|
||||
const arrayBuffer = await response.arrayBuffer();
|
||||
const buffer = Buffer.from(arrayBuffer);
|
||||
|
||||
const path = `migrated/${Date.now()}_${d.name.replace(/\\s+/g, '_')}.jpg`;
|
||||
|
||||
const { data: uploadData, error: uploadError } = await supabase.storage
|
||||
.from('domains')
|
||||
.upload(path, buffer, {
|
||||
contentType: 'image/jpeg',
|
||||
upsert: true
|
||||
});
|
||||
|
||||
if (uploadError) {
|
||||
console.log(`Failed to upload ${d.name}`, uploadError);
|
||||
continue;
|
||||
}
|
||||
|
||||
const { data: { publicUrl } } = supabase.storage
|
||||
.from('domains')
|
||||
.getPublicUrl(path);
|
||||
|
||||
console.log(`Uploaded! URL: ${publicUrl}`);
|
||||
|
||||
// Insert into database
|
||||
const { error: insertError } = await supabase.from('domains').insert({
|
||||
name: d.name,
|
||||
description: d.id, // using original id name as description
|
||||
category: category,
|
||||
image: publicUrl,
|
||||
status: 'APPROVED'
|
||||
});
|
||||
|
||||
if (insertError) {
|
||||
console.log(`Failed to insert ${d.name} to DB`, insertError);
|
||||
} else {
|
||||
console.log(`Inserted ${d.name} into DB!`);
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
console.error(`Error processing ${d.name}`, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
migrate().then(() => console.log('Migration complete'));
|
||||
Reference in New Issue
Block a user