회원 탈퇴와 덱 일괄 삭제 추가
This commit is contained in:
33
api/src/services/accountDeletion.js
Normal file
33
api/src/services/accountDeletion.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import { deleteAvatarImage } from './avatarImage.js';
|
||||
|
||||
/**
|
||||
* 사용자 계정과 개인 데이터를 영구 삭제하고 저장 덱은 익명으로 보존한다.
|
||||
* @param {import('better-sqlite3').Database} db
|
||||
* @param {number} userId
|
||||
* @returns {{deleted: boolean, retainedDeckCount: number, avatarDeleted: boolean}}
|
||||
*/
|
||||
export function deleteUserAccount(db, userId) {
|
||||
const user = db.prepare('SELECT id FROM users WHERE id = ?').get(userId);
|
||||
if (!user) {
|
||||
return {
|
||||
deleted: false,
|
||||
retainedDeckCount: 0,
|
||||
avatarDeleted: false,
|
||||
};
|
||||
}
|
||||
|
||||
const retainedDeckCount = db.prepare(`
|
||||
SELECT COUNT(*) AS count
|
||||
FROM decks
|
||||
WHERE user_id = ?
|
||||
`).get(userId).count;
|
||||
|
||||
db.prepare('DELETE FROM users WHERE id = ?').run(userId);
|
||||
const avatarDeleted = deleteAvatarImage(userId);
|
||||
|
||||
return {
|
||||
deleted: true,
|
||||
retainedDeckCount,
|
||||
avatarDeleted,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user