HotTRDealsBackend/services/avatar.service.js
2026-01-23 17:28:21 +00:00

46 lines
927 B
JavaScript

const fs = require("fs")
const { uploadImage } = require("./uploadImage.service")
const { validateImage } = require("../utils/validateImage")
const userDB = require("../db/user.db")
async function updateUserAvatar(userId, file) {
if (!file) {
throw new Error("No file uploaded")
}
validateImage({
mimetype: file.mimetype,
size: file.size,
})
const buffer = fs.readFileSync(file.path)
const imageUrl = await uploadImage({
bucket: "avatars",
path: `${userId}_${Date.now()}.jpg`,
fileBuffer: buffer,
contentType: file.mimetype,
})
fs.unlinkSync(file.path)
return updateAvatarUrl(userId, imageUrl)
}
async function updateAvatarUrl(userId, imageUrl) {
return userDB.updateUser(
{ id: userId },
{ avatarUrl: imageUrl },
{
select: {
id: true,
username: true,
avatarUrl: true,
},
}
)
}
module.exports = { updateUserAvatar }