chat-app/backend/dist/services/userService.js
Gal Podlipnik 365aea2997
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 58s
cicd 3
2025-06-12 16:22:33 +02:00

75 lines
2.5 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserService = void 0;
const database_js_1 = require("../config/database.js");
const bcryptjs_1 = __importDefault(require("bcryptjs"));
class UserService {
static async updateProfile(userId, data) {
try {
if (data.username) {
const existingUser = await database_js_1.prisma.user.findFirst({
where: {
username: data.username,
id: { not: userId },
},
});
if (existingUser) {
return {
success: false,
error: "Username already taken",
};
}
}
if (data.email) {
const existingUser = await database_js_1.prisma.user.findFirst({
where: {
email: data.email,
id: { not: userId },
},
});
if (existingUser) {
return {
success: false,
error: "Email already taken",
};
}
}
const updateData = {};
if (data.username)
updateData.username = data.username;
if (data.email)
updateData.email = data.email;
if (data.avatar !== undefined)
updateData.avatar = data.avatar;
if (data.password) {
updateData.password = await bcryptjs_1.default.hash(data.password, 12);
}
const updatedUser = await database_js_1.prisma.user.update({
where: { id: userId },
data: updateData,
select: {
id: true,
username: true,
email: true,
avatar: true,
},
});
return {
success: true,
data: updatedUser,
};
}
catch (error) {
console.error("Update profile error:", error);
return {
success: false,
error: "Failed to update profile",
};
}
}
}
exports.UserService = UserService;