34 lines
959 B
JavaScript
34 lines
959 B
JavaScript
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,
|
|
};
|
|
}
|