Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions backend/.env.example

This file was deleted.

62 changes: 62 additions & 0 deletions backend/controllers/photoController.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,3 +156,65 @@ export const testUploadPhoto = async (req, res) => {
});
}
};


// multiple uploads added here//

export const uploadPhotos = async(req,res)=>{
try{
const{lat,lon} = req.body || {};
const latitude = parseFloat(lat);
const longitude = parseFloat(lon);

if(!req.userId){
return res.status(401).json({ message: "Unauthorized"});
}
if (!req.files || req.files.length === 0) {
return res.status(400).json({ message: "No photos provided" });
}

if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {
return res.status(400).json({ message: "Invalid or missing lat/lon" });
}
const user = await User.findOne({ clerkUserId: req.userId });
if (!user) {
return res.status(404).json({ message: "User not registered" });
}

const uploadedPhotos = [];

for (const file of req.files) {
const fileName = buildFileName(file.originalname, req.userId);
const imageUrl = await uploadToAzure(file.buffer, fileName);

const photo = await Photo.create({
userId: user._id,
clerkUserId: req.userId,
imageUrl,
location: {
type: "Point",
coordinates: [longitude, latitude],
},
timestamp: new Date(),
eventId: null,
});

uploadedPhotos.push({
photoId: photo._id,
imageUrl,
});
}

return res.status(201).json({
status: "success",
count: uploadedPhotos.length,
photos: uploadedPhotos,
});
} catch (error) {
console.error("Upload multiple photos error:", error);
return res.status(500).json({
message: "Internal server error: " + error.message,
});

}
};
32 changes: 29 additions & 3 deletions backend/routes/photo.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import express from "express";
import multer from "multer";
import authMiddleware from "../middleware/authentication.js";
import { uploadPhoto, getAllPhotos, testUploadPhoto } from "../controllers/photoController.js";
import { uploadPhoto, uploadPhotos, getAllPhotos, testUploadPhoto } from "../controllers/photoController.js";


const router = express.Router();
router.get("/ping", (req, res) => {
res.json({ pong: true });
});


const upload = multer({
storage: multer.memoryStorage(),
Expand All @@ -16,8 +21,29 @@ const upload = multer({
},
});

router.post("/upload-photo", authMiddleware, upload.single("photo"), uploadPhoto);
router.post("/test-upload", upload.single("photo"), testUploadPhoto); // Test route without auth
router.post(
"/upload-photo",
authMiddleware,
upload.single("photo"),
uploadPhoto
);

router.post(
"/upload-photos",
authMiddleware,
upload.array("photos[]", 10),
uploadPhotos
);

router.post(
"/test-upload",
upload.single("photo"),
testUploadPhoto
);

router.get("/all-photos", getAllPhotos);




export default router
4 changes: 2 additions & 2 deletions backend/utils/azure.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ async function uploadToAzure(buffer, fileName) {

try {
await blobServiceClient.getAccountInfo();
console.log(" Azure Blob Storage Connected");
console.log(" Azure Blob Storage Connected");
} catch (err) {
console.error(" Azure Blob Connection Failed:", err.message);
console.error(" Azure Blob Connection Failed:", err.message);
throw err;
}

Expand Down
8 changes: 4 additions & 4 deletions backend/v1.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import express from "express"
import healthRoute from "../backend/routes/health.js";
import authRoute from "../backend/routes/auth.js";
import photoRoute from "../backend/routes/photo.js";
import express from "express";
import healthRoute from "./routes/health.js";
import authRoute from "./routes/auth.js";
import photoRoute from "./routes/photo.js";


const router = express.Router();
Expand Down