W n8n attention vm
This commit is contained in:
parent
97f1313a18
commit
880d22665e
@ -209,28 +209,7 @@ export async function POST(request: Request) {
|
|||||||
}, { status: 400 });
|
}, { status: 400 });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 1: Upload logo to Minio if present
|
// Step 1: Create mission in database first
|
||||||
let logoPath = null;
|
|
||||||
if (body.logo?.data) {
|
|
||||||
try {
|
|
||||||
// Convert base64 to File object
|
|
||||||
const base64Data = body.logo.data.split(',')[1];
|
|
||||||
const buffer = Buffer.from(base64Data, 'base64');
|
|
||||||
const file = new File([buffer], body.logo.name || 'logo.png', { type: body.logo.type || 'image/png' });
|
|
||||||
|
|
||||||
// Upload logo
|
|
||||||
const { filePath } = await uploadMissionLogo(userId, 'temp', file);
|
|
||||||
logoPath = filePath;
|
|
||||||
uploadedFiles.push({ type: 'logo', path: filePath });
|
|
||||||
|
|
||||||
console.log('Logo uploaded successfully:', { logoPath });
|
|
||||||
} catch (uploadError) {
|
|
||||||
console.error('Error uploading logo:', uploadError);
|
|
||||||
throw new Error('Failed to upload logo');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 2: Create mission in database with logo path
|
|
||||||
const missionData = {
|
const missionData = {
|
||||||
name: body.name,
|
name: body.name,
|
||||||
oddScope: body.oddScope,
|
oddScope: body.oddScope,
|
||||||
@ -243,7 +222,7 @@ export async function POST(request: Request) {
|
|||||||
profils: body.profils,
|
profils: body.profils,
|
||||||
participation: body.participation,
|
participation: body.participation,
|
||||||
creatorId: userId,
|
creatorId: userId,
|
||||||
logo: logoPath,
|
logo: null, // Will update after upload
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log('Creating mission with data:', JSON.stringify(missionData, null, 2));
|
console.log('Creating mission with data:', JSON.stringify(missionData, null, 2));
|
||||||
@ -254,7 +233,34 @@ export async function POST(request: Request) {
|
|||||||
|
|
||||||
console.log('Mission created successfully:', JSON.stringify(mission, null, 2));
|
console.log('Mission created successfully:', JSON.stringify(mission, null, 2));
|
||||||
|
|
||||||
// Handle attachments if present
|
// Step 2: Upload logo to Minio if present
|
||||||
|
let logoPath = null;
|
||||||
|
if (body.logo?.data) {
|
||||||
|
try {
|
||||||
|
// Convert base64 to File object
|
||||||
|
const base64Data = body.logo.data.split(',')[1];
|
||||||
|
const buffer = Buffer.from(base64Data, 'base64');
|
||||||
|
const file = new File([buffer], body.logo.name || 'logo.png', { type: body.logo.type || 'image/png' });
|
||||||
|
|
||||||
|
// Upload logo using the correct function
|
||||||
|
const { filePath } = await uploadMissionLogo(userId, mission.id, file);
|
||||||
|
logoPath = filePath;
|
||||||
|
uploadedFiles.push({ type: 'logo', path: filePath });
|
||||||
|
|
||||||
|
// Update mission with logo path
|
||||||
|
await prisma.mission.update({
|
||||||
|
where: { id: mission.id },
|
||||||
|
data: { logo: filePath }
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Logo uploaded successfully:', { logoPath });
|
||||||
|
} catch (uploadError) {
|
||||||
|
console.error('Error uploading logo:', uploadError);
|
||||||
|
throw new Error('Failed to upload logo');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 3: Handle attachments if present
|
||||||
if (body.attachments && body.attachments.length > 0) {
|
if (body.attachments && body.attachments.length > 0) {
|
||||||
try {
|
try {
|
||||||
const attachmentPromises = body.attachments.map(async (attachment: any) => {
|
const attachmentPromises = body.attachments.map(async (attachment: any) => {
|
||||||
@ -262,18 +268,18 @@ export async function POST(request: Request) {
|
|||||||
const buffer = Buffer.from(base64Data, 'base64');
|
const buffer = Buffer.from(base64Data, 'base64');
|
||||||
const file = new File([buffer], attachment.name || 'attachment', { type: attachment.type || 'application/octet-stream' });
|
const file = new File([buffer], attachment.name || 'attachment', { type: attachment.type || 'application/octet-stream' });
|
||||||
|
|
||||||
// Upload attachment
|
// Upload attachment using the correct function
|
||||||
const { filePath } = await uploadMissionLogo(userId, 'temp', file);
|
const { filePath, filename, fileType, fileSize } = await uploadMissionAttachment(userId, mission.id, file);
|
||||||
uploadedFiles.push({ type: 'attachment', path: filePath });
|
uploadedFiles.push({ type: 'attachment', path: filePath });
|
||||||
|
|
||||||
// Create attachment record in database
|
// Create attachment record in database with final path
|
||||||
return prisma.attachment.create({
|
return prisma.attachment.create({
|
||||||
data: {
|
data: {
|
||||||
missionId: mission.id,
|
missionId: mission.id,
|
||||||
filename: attachment.name || 'attachment',
|
filename,
|
||||||
filePath: filePath,
|
filePath,
|
||||||
fileType: attachment.type || 'application/octet-stream',
|
fileType,
|
||||||
fileSize: buffer.length,
|
fileSize,
|
||||||
uploaderId: userId
|
uploaderId: userId
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -287,29 +293,7 @@ export async function POST(request: Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move uploaded files to final location
|
// Step 4: Trigger n8n workflow after all file operations are complete
|
||||||
try {
|
|
||||||
const movePromises = uploadedFiles.map(async (file) => {
|
|
||||||
const finalPath = file.path.replace('temp', mission.id);
|
|
||||||
await s3Client.send(new CopyObjectCommand({
|
|
||||||
Bucket: 'missions',
|
|
||||||
CopySource: `missions/${file.path}`,
|
|
||||||
Key: finalPath.replace('missions/', '')
|
|
||||||
}));
|
|
||||||
await s3Client.send(new DeleteObjectCommand({
|
|
||||||
Bucket: 'missions',
|
|
||||||
Key: file.path.replace('missions/', '')
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
await Promise.all(movePromises);
|
|
||||||
console.log('All files moved to final location successfully');
|
|
||||||
} catch (moveError) {
|
|
||||||
console.error('Error moving files to final location:', moveError);
|
|
||||||
throw new Error('Failed to move files to final location');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only trigger n8n workflow after all Minio operations are complete
|
|
||||||
try {
|
try {
|
||||||
console.log('=== Starting N8N Workflow ===');
|
console.log('=== Starting N8N Workflow ===');
|
||||||
const n8nService = new N8nService();
|
const n8nService = new N8nService();
|
||||||
@ -318,7 +302,7 @@ export async function POST(request: Request) {
|
|||||||
const n8nData = {
|
const n8nData = {
|
||||||
...body,
|
...body,
|
||||||
creatorId: userId,
|
creatorId: userId,
|
||||||
logoPath: logoPath ? logoPath.replace('temp', mission.id) : null,
|
logoPath: logoPath,
|
||||||
config: {
|
config: {
|
||||||
N8N_API_KEY: process.env.N8N_API_KEY,
|
N8N_API_KEY: process.env.N8N_API_KEY,
|
||||||
MISSION_API_URL: process.env.NEXT_PUBLIC_API_URL
|
MISSION_API_URL: process.env.NEXT_PUBLIC_API_URL
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user