Skip to content

Commit 802f8f4

Browse files
Merge pull request #59 from uwblueprint/INTS25-refactor-user-resolvers-and-services
[INTS25] - Refactor Current User Resolvers and Services
2 parents 5619d28 + 45b6988 commit 802f8f4

File tree

5 files changed

+38
-3
lines changed

5 files changed

+38
-3
lines changed

backend/typescript/graphql/types/userType.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const userType = gql`
1212
lastName: String!
1313
email: String!
1414
role: Role!
15+
position: String
1516
}
1617
1718
input CreateUserDTO {
@@ -20,13 +21,15 @@ const userType = gql`
2021
email: String!
2122
role: Role!
2223
password: String!
24+
position: String
2325
}
2426
2527
input UpdateUserDTO {
2628
firstName: String!
2729
lastName: String!
2830
email: String!
2931
role: Role!
32+
position: String
3033
}
3134
3235
extend type Query {

backend/typescript/migrations/20250705172630-delete-bad-seeded-user-data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const USER_SEED_DATA = [
55
first_name: "Carolyn",
66
last_name: "Zhang",
77
email: "carolynzhang@uwblueprint.org",
8-
auth_id: "ATd5GMzp8IPJzQzuQYkaavcelb32",
8+
auth_id: "ATd5GMzp8IPJzQzuQYkaavcelb32", // NOTE: this id is wrong, it is corrected in the next migration
99
role: "Admin",
1010
position: "VP Engineering",
1111
},
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Migration } from "../umzug";
2+
3+
const TABLE_NAME = "users";
4+
5+
export const up: Migration = async ({ context: sequelize }) => {
6+
await sequelize.getQueryInterface().bulkUpdate(
7+
TABLE_NAME,
8+
{ auth_id: "fx49Ei9zxbQf4rWrXp7ZqEk8cLi2" }, // Replace with the correct auth_id value
9+
{ id: 1 },
10+
);
11+
};
12+
13+
export const down: Migration = async ({ context: sequelize }) => {
14+
await sequelize.getQueryInterface().bulkUpdate(
15+
TABLE_NAME,
16+
{ auth_id: "ATd5GMzp8IPJzQzuQYkaavcelb32" }, // this is the previous auth_id for user with id 1
17+
{ id: 1 },
18+
);
19+
};

backend/typescript/services/implementations/userService.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ class UserService implements IUserService {
1515
// let firebaseUser: firebaseAdmin.auth.UserRecord;
1616

1717
try {
18-
user = await User.findByPk(Number(userId));
18+
user = await User.findOne({
19+
where: { id: userId },
20+
});
1921

2022
if (!user) {
2123
throw new Error(`userId ${userId} not found.`);
@@ -31,6 +33,7 @@ class UserService implements IUserService {
3133
firstName: user.first_name,
3234
lastName: user.last_name,
3335
email: "firebaseUser.email ?? ",
36+
position: user.position ?? undefined,
3437
role: user.role,
3538
};
3639
}
@@ -58,6 +61,7 @@ class UserService implements IUserService {
5861
firstName: user.first_name,
5962
lastName: user.last_name,
6063
email: email ?? "",
64+
position: user.position ?? undefined,
6165
role: user.role,
6266
};
6367
}
@@ -130,6 +134,7 @@ class UserService implements IUserService {
130134
firstName: user.first_name,
131135
lastName: user.last_name,
132136
email: firebaseUser.email ?? "",
137+
position: user.position ?? undefined,
133138
role: user.role,
134139
};
135140
}),
@@ -160,6 +165,7 @@ class UserService implements IUserService {
160165
auth_id: firebaseUser.uid,
161166
email: firebaseUser.email,
162167
role: user.role,
168+
position: user.position ?? undefined,
163169
});
164170
} catch (postgresError) {
165171
try {
@@ -186,6 +192,7 @@ class UserService implements IUserService {
186192
firstName: newUser.first_name,
187193
lastName: newUser.last_name,
188194
email: firebaseUser.email ?? "",
195+
position: user.position ?? undefined,
189196
role: newUser.role,
190197
};
191198
}
@@ -198,6 +205,7 @@ class UserService implements IUserService {
198205
{
199206
first_name: user.firstName,
200207
last_name: user.lastName,
208+
position: user.position ?? undefined,
201209
role: user.role,
202210
},
203211
{
@@ -227,6 +235,7 @@ class UserService implements IUserService {
227235
{
228236
first_name: oldUser.first_name,
229237
last_name: oldUser.last_name,
238+
position: user.position ?? undefined,
230239
role: oldUser.role,
231240
},
232241
{
@@ -255,6 +264,7 @@ class UserService implements IUserService {
255264
firstName: user.firstName,
256265
lastName: user.lastName,
257266
email: updatedFirebaseUser.email ?? "",
267+
position: user.position ?? undefined,
258268
role: user.role,
259269
};
260270
}
@@ -285,6 +295,7 @@ class UserService implements IUserService {
285295
first_name: deletedUser.first_name,
286296
last_name: deletedUser.last_name,
287297
auth_id: deletedUser.auth_id,
298+
position: deletedUser.position ?? undefined,
288299
role: deletedUser.role,
289300
});
290301
} catch (postgresError: unknown) {
@@ -337,6 +348,7 @@ class UserService implements IUserService {
337348
first_name: deletedUser.first_name,
338349
last_name: deletedUser.last_name,
339350
auth_id: deletedUser.auth_id,
351+
position: deletedUser.position ?? undefined,
340352
role: deletedUser.role,
341353
});
342354
} catch (postgresError: unknown) {

backend/typescript/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export type UserDTO = {
2929
firstName: string;
3030
lastName: string;
3131
email: string;
32+
position?: PositionTitle;
3233
role: Role;
3334
};
3435

@@ -98,7 +99,7 @@ export type ApplicantDTO = {
9899
export type ApplicantRecordDTO = {
99100
id: number;
100101
applicantId: string;
101-
position: string; // EDIT LATER
102+
position: PositionTitle; // EDIT LATER
102103
roleSpecificQuestions: string[];
103104
choice: number;
104105
status: ApplicationStatus;

0 commit comments

Comments
 (0)