58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
const cloudinary = require('cloudinary').v2;
|
|
const postgres = require('postgres');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
require('dotenv').config({ path: '.env.local' });
|
|
|
|
cloudinary.config({
|
|
cloud_name: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,
|
|
api_key: process.env.CLOUDINARY_API_KEY,
|
|
api_secret: process.env.CLOUDINARY_API_SECRET
|
|
});
|
|
|
|
const sql = postgres(process.env.DATABASE_URL);
|
|
|
|
async function uploadAndSync() {
|
|
const partnersDir = path.join(process.cwd(), 'public', 'partnerlogo');
|
|
const files = fs.readdirSync(partnersDir).filter(file => file.endsWith('.png'));
|
|
|
|
console.log(`Found ${files.length} images to upload.`);
|
|
|
|
// First, let's clear or check existing partners
|
|
// To keep it simple, we'll insert new records or update by a 'name' which we'll placeholder
|
|
|
|
for (const file of files) {
|
|
const filePath = path.join(partnersDir, file);
|
|
const partnerId = file.replace('.png', ''); // e.g., "1"
|
|
|
|
try {
|
|
console.log(`Uploading ${file}...`);
|
|
const result = await cloudinary.uploader.upload(filePath, {
|
|
folder: 'partners',
|
|
public_id: `partner_${partnerId}`
|
|
});
|
|
|
|
console.log(`Uploaded: ${result.secure_url}`);
|
|
|
|
// Insert or Update in DB
|
|
// We'll use partnerId as id and display_order
|
|
const idNum = parseInt(partnerId);
|
|
await sql`
|
|
INSERT INTO partners (id, name, logo, display_order)
|
|
VALUES (${idNum}, ${`Partner ${partnerId}`}, ${result.secure_url}, ${idNum})
|
|
ON CONFLICT (id)
|
|
DO UPDATE SET logo = EXCLUDED.logo
|
|
`;
|
|
|
|
console.log(`Synced ${file} to database (ID: ${idNum}).`);
|
|
} catch (error) {
|
|
console.error(`Error processing ${file}:`, error);
|
|
}
|
|
}
|
|
|
|
console.log('Sync complete.');
|
|
process.exit(0);
|
|
}
|
|
|
|
uploadAndSync();
|