Files
uniare.sori.studio/api/src/services/accountDeletion.js

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,
};
}