This repository was archived by the owner on Feb 25, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-cloudinary.js
More file actions
113 lines (102 loc) · 3.4 KB
/
setup-cloudinary.js
File metadata and controls
113 lines (102 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const cloudinary = require('cloudinary').v2;
require('dotenv').config();
// Configure Cloudinary with actual credentials
cloudinary.config({
cloud_name: 'dgaxmigyc',
api_key: '989384135426687',
api_secret: 'LYQMrzySO6kdR76UYhaX7rdg3ho'
});
// Log configuration (without sensitive data)
console.log('Cloudinary Configuration:');
console.log('Cloud Name: dgaxmigyc');
console.log('API Key: ✓ Set');
console.log('API Secret: ✓ Set');
async function setupCloudinary() {
try {
// Create folders
console.log('\nCreating folders...');
const folders = [
'room-uploads', // Original room images
'generated-designs', // AI-generated designs
'examples', // Example before/after images
'user-profiles', // User profile pictures
'temp' // Temporary storage
];
for (const folder of folders) {
try {
await cloudinary.api.create_folder(folder);
console.log(`✓ Created folder: ${folder}`);
} catch (error) {
if (error.error && error.error.message && error.error.message.includes('already exists')) {
console.log(`→ Folder already exists: ${folder}`);
} else {
console.error(`Error creating folder ${folder}:`, error.error || error);
}
}
}
// Create upload presets
console.log('\nCreating upload presets...');
const presets = [
{
name: 'room_upload_preset',
folder: 'room-uploads',
allowed_formats: ['jpg', 'png', 'jpeg'],
max_file_size: 10000000, // 10MB
transformation: [
{ quality: 'auto:good' },
{ fetch_format: 'auto' }
]
},
{
name: 'generated_design_preset',
folder: 'generated-designs',
allowed_formats: ['jpg', 'png', 'jpeg'],
transformation: [
{ quality: 'auto:good' },
{ fetch_format: 'auto' }
]
},
{
name: 'profile_picture_preset',
folder: 'user-profiles',
allowed_formats: ['jpg', 'png', 'jpeg'],
transformation: [
{ width: 400, height: 400, crop: 'fill' },
{ quality: 'auto:good' },
{ fetch_format: 'auto' }
]
}
];
for (const preset of presets) {
try {
await cloudinary.api.create_upload_preset({
name: preset.name,
folder: preset.folder,
allowed_formats: preset.allowed_formats,
transformation: preset.transformation
});
console.log(`✓ Created upload preset: ${preset.name}`);
} catch (error) {
if (error.error && error.error.message && error.error.message.includes('already exists')) {
console.log(`→ Upload preset already exists: ${preset.name}`);
// Update existing preset
await cloudinary.api.update_upload_preset(
preset.name,
{
folder: preset.folder,
allowed_formats: preset.allowed_formats,
transformation: preset.transformation
}
);
console.log(`✓ Updated upload preset: ${preset.name}`);
} else {
console.error(`Error creating preset ${preset.name}:`, error.error || error);
}
}
}
console.log('\n✓ Cloudinary setup completed successfully!');
} catch (error) {
console.error('Error setting up Cloudinary:', error.error || error);
}
}
setupCloudinary();