NeahNew/.next/server/chunks/7099.js
2025-05-06 23:01:34 +02:00

1 line
5.3 KiB
JavaScript

"use strict";exports.id=7099,exports.ids=[7099],exports.modules={14182:(e,t,o)=>{o.d(t,{$R:()=>l,Ui:()=>c,XB:()=>a,XR:()=>u,YE:()=>n,ZT:()=>d,b4:()=>S,oD:()=>i});var r=o(91043);o(11046);let n={endpoint:process.env.MINIO_S3_UPLOAD_BUCKET_URL,region:process.env.MINIO_AWS_REGION,bucket:process.env.MINIO_AWS_S3_UPLOAD_BUCKET_NAME,missionsBucket:process.env.MINIO_MISSIONS_BUCKET||"missions",accessKey:process.env.MINIO_ACCESS_KEY||process.env.AWS_ACCESS_KEY_ID,secretKey:process.env.MINIO_SECRET_KEY||process.env.AWS_SECRET_ACCESS_KEY},s={region:n.region,endpoint:n.endpoint,forcePathStyle:!0};n.accessKey&&n.secretKey&&Object.assign(s,{credentials:{accessKeyId:n.accessKey,secretAccessKey:n.secretKey}});let i=new r.S3Client(s);async function c(e,t){try{let o=`user-${e}/${t}/`;console.log(`Listing objects with prefix: ${o}`);let s=new r.ListObjectsV2Command({Bucket:n.bucket,Prefix:o,Delimiter:"/"}),c=await i.send(s);return c.Contents?.map(e=>({id:e.Key,title:e.Key?.split("/").pop()?.replace(".md","")||"",lastModified:e.LastModified?.toISOString(),size:e.Size,type:"file",mime:e.Key?.endsWith(".md")?"text/markdown":"application/octet-stream",etag:e.ETag})).filter(e=>!e.title.startsWith(".placeholder")&&""!==e.title)||[]}catch(e){throw console.error("Error listing objects:",e),e}}async function a(e){try{let t=new r.GetObjectCommand({Bucket:n.bucket,Key:e}),o=await i.send(t);return await o.Body?.transformToString()}catch(e){throw console.error("Error getting object content:",e),e}}async function l(e,t,o){try{if(console.log(`Attempting to upload to S3/Minio: ${e}`),!n.bucket)throw Error("S3 bucket name is not configured");let s=new r.PutObjectCommand({Bucket:n.bucket,Key:e,Body:t,ContentType:o||(e.endsWith(".md")?"text/markdown":"text/plain")});console.log(`S3 PutObject request prepared for ${e}`);let c=await i.send(s);return console.log(`S3 PutObject successful for ${e}, ETag: ${c.ETag}`),{id:e,title:e.split("/").pop()?.replace(".md","")||"",lastModified:new Date().toISOString(),size:t.length,type:"file",mime:o||(e.endsWith(".md")?"text/markdown":"text/plain"),etag:c.ETag}}catch(t){throw console.error(`Error putting object to S3/Minio (${e}):`,t),t?.name==="NoSuchBucket"&&console.error(`Bucket "${n.bucket}" does not exist. Please create it first.`),t}}async function u(e){try{let t=new r.DeleteObjectCommand({Bucket:n.bucket,Key:e});return await i.send(t),!0}catch(e){throw console.error("Error deleting object:",e),e}}async function d(e){try{console.log(`Creating folder structure for user: ${e}`);let t=[];for(let o of["notes","diary","health","contacts"])try{let r=`user-${e}/${o}/`;console.log(`Creating folder: ${r}`),await l(r,"","application/x-directory");let n=`user-${e}/${o}/.placeholder`;await l(n,"Folder placeholder","text/plain"),t.push(o)}catch(e){console.error(`Error creating folder ${o}:`,e)}return console.log(`Successfully created ${t.length} folders for user ${e}: ${t.join(", ")}`),!0}catch(e){throw console.error("Error creating folder structure:",e),e}}function S(e,t){if(!e)return"";if(e.startsWith("http"))return e;console.log("Generating public URL for:",e);let o=e.startsWith("/")?e.substring(1):e;if(o.startsWith("pages/")){let e=process.env.NEXT_PUBLIC_MINIO_BASE_URL||process.env.MINIO_PUBLIC_URL;if(e){let t=e.replace(/\/$/,""),r=`${t}/${o}`;return console.log("Generated special public URL for pages path:",r),r}}let r=t||n.bucket,s=n.endpoint?.replace(/\/$/,"");if(console.log("S3 Config for URL generation:",{endpoint:s,bucket:r,cleanPath:o}),!s)return console.warn("No S3/Minio endpoint configured, returning original path"),o;let i=`${s}/${r}/${o}`;return console.log("Generated public URL:",i),i}(async()=>{try{console.log("Testing Minio/S3 connection...");let e=new r.ListObjectsV2Command({Bucket:n.bucket,MaxKeys:1}),t=await i.send(e);console.log("Minio/S3 connection successful! Bucket exists and is accessible."),console.log(`Bucket details: ${n.bucket}, contains ${t.KeyCount||0} objects`)}catch(e){console.error("CRITICAL ERROR: Failed to connect to Minio/S3 server!"),console.error("File uploads will fail until this is resolved."),console.error("Error details:",e),console.error("Please check your S3/Minio configuration and server status.")}})(),n.endpoint&&n.bucket||(console.error("ERROR: Missing required S3 environment variables!"),console.error("Please make sure your .env file contains:"),console.error("- MINIO_S3_UPLOAD_BUCKET_URL"),console.error("- MINIO_AWS_S3_UPLOAD_BUCKET_NAME"),console.error("- MINIO_ACCESS_KEY or AWS_ACCESS_KEY_ID"),console.error("- MINIO_SECRET_KEY or AWS_SECRET_ACCESS_KEY")),console.log("S3 Configuration:",{endpoint:n.endpoint||"MISSING!",region:n.region||"MISSING!",bucket:n.bucket||"MISSING!",hasAccessKey:!!n.accessKey||"MISSING!",hasSecretKey:!!n.secretKey||"MISSING!"})},27099:(e,t,o)=>{o.r(t),o.d(t,{POST:()=>c});var r=o(32190),n=o(19854),s=o(26690),i=o(14182);async function c(e){try{let e=await (0,n.getServerSession)(s.N);if(!e?.user?.id)return r.NextResponse.json({error:"Unauthorized"},{status:401});return console.log(`Initializing storage for user: ${e.user.id}`),await (0,i.ZT)(e.user.id),r.NextResponse.json({success:!0,message:"Storage initialized successfully"})}catch(e){return console.error("Storage initialization failed:",e),r.NextResponse.json({error:"Failed to initialize storage",details:e instanceof Error?e.message:"Unknown error"},{status:500})}}}};