64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
// routes/profileRoutes.js
|
||
const express = require("express")
|
||
const { PrismaClient } = require("@prisma/client")
|
||
const prisma = new PrismaClient()
|
||
const router = express.Router()
|
||
|
||
// Belirli bir kullanıcının profil detayları
|
||
router.get("/:userName", async (req, res) => {
|
||
console.log("İstek geldi:", req.params.userName)
|
||
try {
|
||
const username = req.params.userName
|
||
const user = await prisma.user.findUnique({
|
||
where: { username: username },
|
||
select: {
|
||
id: true,
|
||
username: true,
|
||
avatarUrl: true,
|
||
createdAt: true,
|
||
},
|
||
})
|
||
|
||
if (!user) return res.status(404).json({ message: "Kullanıcı bulunamadı." })
|
||
|
||
// Kullanıcının paylaştığı fırsatlar
|
||
const deals = await prisma.deal.findMany({
|
||
where: { userId: user.id },
|
||
orderBy: { createdAt: "desc" },
|
||
select: {
|
||
id: true,
|
||
title: true,
|
||
price: true,
|
||
createdAt: true,
|
||
score: true,
|
||
images: {
|
||
orderBy: { order: "asc" }, // küçük order en önde
|
||
take: 1, // sadece ilk görsel
|
||
select: { imageUrl: true },
|
||
},
|
||
},
|
||
})
|
||
|
||
|
||
// Kullanıcının yaptığı yorumlar
|
||
const comments = await prisma.comment.findMany({
|
||
where: { userId:user.id },
|
||
orderBy: { createdAt: "desc" },
|
||
select: {
|
||
id: true,
|
||
text: true,
|
||
dealId: true,
|
||
createdAt: true,
|
||
deal: { select: { title: true } },
|
||
},
|
||
})
|
||
|
||
res.json({ user, deals, comments })
|
||
} catch (err) {
|
||
console.error(err)
|
||
res.status(500).json({ message: "Profil bilgileri alınamadı.", error: err.message })
|
||
}
|
||
})
|
||
|
||
module.exports = router
|