63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
export default defineEventHandler(async (event) => {
|
|
try {
|
|
const config = useRuntimeConfig().minio;
|
|
|
|
// Log configuration (without secrets)
|
|
const configInfo = {
|
|
endPoint: config.endPoint,
|
|
port: config.port,
|
|
useSSL: config.useSSL,
|
|
bucketName: config.bucketName,
|
|
hasAccessKey: !!config.accessKey,
|
|
hasSecretKey: !!config.secretKey,
|
|
accessKeyLength: config.accessKey?.length || 0,
|
|
secretKeyLength: config.secretKey?.length || 0,
|
|
};
|
|
|
|
console.log('Testing MinIO connection with config:', configInfo);
|
|
|
|
// Import MinIO client
|
|
const { Client } = await import('minio');
|
|
|
|
// Create client
|
|
const client = new Client({
|
|
endPoint: config.endPoint,
|
|
port: parseInt(config.port),
|
|
useSSL: config.useSSL,
|
|
accessKey: config.accessKey,
|
|
secretKey: config.secretKey,
|
|
});
|
|
|
|
// Test bucket exists
|
|
const bucketExists = await client.bucketExists(config.bucketName);
|
|
console.log(`Bucket ${config.bucketName} exists:`, bucketExists);
|
|
|
|
// If bucket doesn't exist, try to create it
|
|
if (!bucketExists) {
|
|
console.log(`Attempting to create bucket ${config.bucketName}`);
|
|
await client.makeBucket(config.bucketName, 'us-east-1');
|
|
console.log(`Bucket ${config.bucketName} created successfully`);
|
|
}
|
|
|
|
// List buckets to verify connection
|
|
const buckets = await client.listBuckets();
|
|
console.log('Available buckets:', buckets.map(b => b.name));
|
|
|
|
return {
|
|
success: true,
|
|
connection: 'successful',
|
|
config: configInfo,
|
|
bucketExists,
|
|
availableBuckets: buckets.map(b => b.name),
|
|
};
|
|
} catch (error: any) {
|
|
console.error('MinIO connection test failed:', error);
|
|
return {
|
|
success: false,
|
|
error: error.message,
|
|
stack: error.stack,
|
|
code: error.code,
|
|
};
|
|
}
|
|
});
|