-
Notifications
You must be signed in to change notification settings - Fork 15
/
deleteUser.js
83 lines (75 loc) · 2.06 KB
/
deleteUser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const { CustomError, errorLogger } = require('../../../helpers');
const { deleteCognitoUser } = require('../../../middlewares/awsConfig');
const {
deletedUserImage,
deleteUserError,
deleteUserSuccess,
remainingBalanceError,
} = require('./constants');
const {
deleteRepoMembers,
deleteUserCompanies,
deleteUserPullRequests,
deleteUserResponse,
deleteUserTechStack,
getUserSettings,
removeAttempting,
removeWatching,
transformUser,
} = require('../../../db');
const deleteUser = async (_, { authError, email, provider, userId }) => {
try {
if (authError || !userId) throw new CustomError(authError);
const data = {
attempting: [],
balance: 0,
comments: [],
dollars_earned: 0,
email_verified: false,
email: '',
first_name: 'Deleted',
github_id: null,
github_link: '',
github_username: null,
is_deleted: true,
issues: [],
last_name: 'User',
modified_date: new Date(), // update modified date
personal_link: '',
profile_pic_blur: deletedUserImage,
profile_pic: deletedUserImage,
provider: null,
pull_requests: [],
rep: 0,
repos: [],
stackoverflow_link: '',
upvotes: [],
username: '[deleted]',
};
const { balance } = await getUserSettings({ userId });
if (balance > 0) throw new CustomError(remainingBalanceError);
if (provider === 'cognito') {
await deleteCognitoUser({ email });
}
await deleteRepoMembers({ userId });
await deleteUserCompanies({ userId });
await deleteUserPullRequests({ userId });
await deleteUserResponse({ userId });
await deleteUserTechStack({ userId });
await removeAttempting({ userId });
await removeWatching({ userId });
await transformUser({ data, userId });
return {
__typename: 'Success',
message: deleteUserSuccess,
};
} catch (error) {
const { alert } = error;
errorLogger(error);
return {
__typename: 'Error',
message: alert || deleteUserError,
};
}
};
module.exports = deleteUser;