Pages corrections pages missions
This commit is contained in:
parent
2913a4c560
commit
0e20e7b4b4
@ -71,7 +71,11 @@ export async function GET(
|
||||
const path = searchParams.get('path') || ''; // Subfolder path within mission
|
||||
|
||||
// Construct prefix for listing
|
||||
const prefix = path ? `missions/${missionId}/${path}/` : `missions/${missionId}/`;
|
||||
// Note: In MinIO, files are stored without the "missions/" prefix (it's removed during upload)
|
||||
// So the prefix should be just "{missionId}/" or "{missionId}/{path}/"
|
||||
const prefix = path ? `${missionId}/${path}/` : `${missionId}/`;
|
||||
|
||||
console.log(`[GET /api/missions/${missionId}/files] Listing with prefix: ${prefix} in bucket: ${MISSIONS_S3_CONFIG.bucket}`);
|
||||
|
||||
const command = new ListObjectsV2Command({
|
||||
Bucket: MISSIONS_S3_CONFIG.bucket,
|
||||
@ -84,14 +88,16 @@ export async function GET(
|
||||
// Extract folders (CommonPrefixes)
|
||||
const folders = (response.CommonPrefixes || []).map(commonPrefix => {
|
||||
const folderPath = commonPrefix.Prefix || '';
|
||||
// Extract folder name from path (e.g., "missions/123/docs/" -> "docs")
|
||||
// Extract folder name from path (e.g., "123/docs/" -> "docs")
|
||||
const pathParts = folderPath.replace(prefix, '').split('/').filter(Boolean);
|
||||
const folderName = pathParts[pathParts.length - 1] || folderPath;
|
||||
// Store full path with missions/ prefix for consistency
|
||||
const fullPath = `missions/${folderPath}`;
|
||||
return {
|
||||
type: 'folder',
|
||||
name: folderName,
|
||||
path: folderPath,
|
||||
key: folderPath
|
||||
path: fullPath,
|
||||
key: fullPath
|
||||
};
|
||||
});
|
||||
|
||||
@ -105,14 +111,19 @@ export async function GET(
|
||||
if (obj.Key.includes('.placeholder')) return false;
|
||||
return true;
|
||||
})
|
||||
.map(obj => ({
|
||||
type: 'file',
|
||||
name: obj.Key?.split('/').pop() || obj.Key,
|
||||
path: obj.Key,
|
||||
key: obj.Key,
|
||||
size: obj.Size,
|
||||
lastModified: obj.LastModified
|
||||
}));
|
||||
.map(obj => {
|
||||
const key = obj.Key || '';
|
||||
// Store full path with missions/ prefix for consistency
|
||||
const fullPath = `missions/${key}`;
|
||||
return {
|
||||
type: 'file',
|
||||
name: key.split('/').pop() || key,
|
||||
path: fullPath,
|
||||
key: fullPath,
|
||||
size: obj.Size,
|
||||
lastModified: obj.LastModified
|
||||
};
|
||||
});
|
||||
|
||||
return NextResponse.json({
|
||||
folders,
|
||||
@ -165,9 +176,12 @@ export async function POST(
|
||||
return NextResponse.json({ error: 'Invalid file path' }, { status: 400 });
|
||||
}
|
||||
|
||||
// Remove missions/ prefix for MinIO (files are stored without it)
|
||||
const minioKey = key.replace(/^missions\//, '');
|
||||
|
||||
const command = new GetObjectCommand({
|
||||
Bucket: MISSIONS_S3_CONFIG.bucket,
|
||||
Key: key
|
||||
Key: minioKey
|
||||
});
|
||||
|
||||
const response = await missionsS3Client.send(command);
|
||||
@ -215,9 +229,12 @@ export async function PUT(
|
||||
return NextResponse.json({ error: 'Invalid file path' }, { status: 400 });
|
||||
}
|
||||
|
||||
// Remove missions/ prefix for MinIO (files are stored without it)
|
||||
const minioKey = key.replace(/^missions\//, '');
|
||||
|
||||
const command = new PutObjectCommand({
|
||||
Bucket: MISSIONS_S3_CONFIG.bucket,
|
||||
Key: key,
|
||||
Key: minioKey,
|
||||
Body: content || Buffer.alloc(0),
|
||||
ContentType: 'text/plain'
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user