Skip to content

Commit 8fd7029

Browse files
fix: teacher and student types fix
1 parent 15208f6 commit 8fd7029

10 files changed

Lines changed: 106 additions & 44 deletions

File tree

‎server/src/repositories/commandRepositories/student.command.ts‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@ import { StudentTypeDB } from "../../db/schemes/types/student.types.js";
33
import { StudentModel } from "../../db/schemes/studentSchema.js";
44
import { HttpError } from "../../utils/error.util.js";
55
import { isMongoDuplicateKeyError } from "../../utils/duplicateType.guard.js";
6-
import {
7-
CreateGoogleStudent,
8-
CreateLocalStudent,
9-
} from "../../types/student/student.types.js";
106

117
@injectable()
128
export class StudentCommand {
13-
async createStudent(newStudent: CreateLocalStudent | CreateGoogleStudent) {
9+
async createStudent(newStudent: StudentTypeDB) {
1410
try {
1511
const created = await StudentModel.create(newStudent);
1612
return created.toObject();

‎server/src/repositories/commandRepositories/teacher.command.ts‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
import { injectable } from "inversify";
22
import { TeacherModel } from "../../db/schemes/teacherSchema.js";
33
import { HttpError } from "../../utils/error.util.js";
4-
import {
5-
CreateGoogleTeacher,
6-
CreateLocalTeacher,
7-
} from "../../types/teacher/teacher.types.js";
4+
import { TeacherTypeDB } from "../../db/schemes/types/teacher.types.js";
85

96
@injectable()
107
export class TeacherCommand {
11-
async createTeacher(newTeacher: CreateLocalTeacher | CreateGoogleTeacher) {
8+
async createTeacher(newTeacher: TeacherTypeDB) {
129
try {
1310
const created = await TeacherModel.create(newTeacher);
1411
return created.toObject();

‎server/src/services/auth/auth.service.ts‎

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ import { StudentCommand } from "../../repositories/commandRepositories/student.c
2020
import { TeacherCommand } from "../../repositories/commandRepositories/teacher.command.js";
2121
import { sendPasswordResetEmail } from "../email/mailSender.js";
2222
import { logError, logWarning } from "../../utils/logging.js";
23+
import {
24+
buildGoogleStudent,
25+
buildGoogleTeacher,
26+
} from "../../utils/builders/user.builders.js";
2327

2428
@injectable()
2529
export class AuthService {
@@ -411,36 +415,24 @@ export class AuthService {
411415
}
412416

413417
if (role === "student") {
414-
return await this.studentCommand.createStudent({
415-
id: randomUUID(),
416-
role,
418+
const student = buildGoogleStudent({
417419
email: goggle.email,
418420
firstName: goggle.firstName,
419421
lastName: goggle.lastName,
420-
profileImageUrl: goggle.picture ?? null,
421-
address: null,
422-
mainLanguage: null,
423-
authProvider: "google",
422+
picture: goggle.picture,
424423
googleSub: goggle.googleSub,
425-
passwordReset: { tokenHash: null, expiresAt: null },
426-
createdAt: new Date(),
427-
});
428-
} else {
429-
return await this.teacherCommand.createTeacher({
430-
id: randomUUID(),
431-
role,
432-
email: goggle.email,
433-
firstName: goggle.firstName,
434-
lastName: goggle.lastName,
435-
profileImageUrl: goggle.picture ?? null,
436-
address: null,
437-
mainLanguage: null,
438-
authProvider: "google",
439-
googleSub: goggle.googleSub,
440-
passwordReset: { tokenHash: null, expiresAt: null },
441-
createdAt: new Date(),
442424
});
425+
return await this.studentCommand.createStudent(student);
443426
}
427+
428+
const teacher = buildGoogleTeacher({
429+
email: goggle.email,
430+
firstName: goggle.firstName,
431+
lastName: goggle.lastName,
432+
picture: goggle.picture,
433+
googleSub: goggle.googleSub,
434+
});
435+
return await this.teacherCommand.createTeacher(teacher);
444436
}
445437

446438
async googleLogin(args: GoogleAuthRequest) {

‎server/src/services/student/student.service.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ export class StudentService {
5252
createdAt: new Date(),
5353
profileImageUrl: null,
5454
mainLanguage: null,
55+
authProvider: "local",
56+
googleSub: null,
5557
role,
5658
};
5759
try {

‎server/src/services/teacher/teacher.service.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ export class TeacherService {
7878
zipCode: null,
7979
country: null,
8080
},
81-
81+
authProvider: "local",
82+
googleSub: null,
8283
createdAt: new Date(),
8384

8485
role,

‎server/src/types/common.types.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export type RequestWithBody<B> = Request<object, object, B, object>;
66
export type ResponseWithData<D> = Response<D>;
77
export type RequestWithParams<P> = Request<P, object, object, object>;
88
export type RequestWithQuery<Q> = Request<object, object, object, Q>;
9-
export type Role = "student" | "teacher" | "admin";
9+
export type Role = "student" | "teacher";

‎server/src/types/student/student.types.ts‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ export type StudentViewType = {
1010
mainLanguage: string | null;
1111
createdAt: Date;
1212
role: string;
13-
authProvider: "local" | "google";
14-
googleSub: string | null;
1513
};
1614

1715
export type UpdateStudentProfileType = {

‎server/src/types/teacher/teacher.types.ts‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { Role } from "../../../index.js";
1+
import { AddressItem } from "../../db/schemes/types/teacher.types.js";
2+
import { Role } from "../common.types.js";
23

34
export type EducationViewItem = {
45
degree: string;
@@ -64,8 +65,6 @@ export type TeacherViewType = {
6465
address: AddressView;
6566
createdAt: Date;
6667
role: string;
67-
authProvider: "local" | "google";
68-
googleSub: string | null;
6968
};
7069

7170
type SortDirection = "asc" | "desc";
@@ -116,7 +115,7 @@ export type TeacherCreateBase = {
116115
lastName: string;
117116

118117
profileImageUrl?: string | null;
119-
address?: string | null;
118+
address?: AddressItem;
120119
mainLanguage?: string | null;
121120

122121
authProvider: "local" | "google";
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { randomUUID } from "node:crypto";
2+
import { StudentTypeDB } from "../../db/schemes/types/student.types.js";
3+
import { TeacherTypeDB } from "../../db/schemes/types/teacher.types.js";
4+
5+
export function buildGoogleStudent(args: {
6+
email: string;
7+
firstName: string;
8+
lastName: string;
9+
picture: string | null;
10+
googleSub: string | null;
11+
}): StudentTypeDB {
12+
return {
13+
id: randomUUID(),
14+
role: "student",
15+
email: args.email,
16+
firstName: args.firstName,
17+
lastName: args.lastName,
18+
profileImageUrl: args.picture,
19+
address: null,
20+
mainLanguage: null,
21+
passwordHash: null,
22+
passwordSalt: null,
23+
passwordReset: { tokenHash: null, expiresAt: null },
24+
authProvider: "google",
25+
googleSub: args.googleSub,
26+
createdAt: new Date(),
27+
};
28+
}
29+
30+
export function buildGoogleTeacher(args: {
31+
email: string;
32+
firstName: string;
33+
lastName: string;
34+
picture: string | null;
35+
googleSub: string | null;
36+
}): TeacherTypeDB {
37+
return {
38+
id: randomUUID(),
39+
role: "teacher",
40+
email: args.email,
41+
firstName: args.firstName,
42+
lastName: args.lastName,
43+
profileImageUrl: args.picture,
44+
passwordHash: null,
45+
passwordSalt: null,
46+
passwordReset: { tokenHash: null, expiresAt: null },
47+
priceFrom: 0,
48+
rating: 0,
49+
experience: 0,
50+
bio: null,
51+
headline: null,
52+
phoneNumber: null,
53+
dateOfBirth: null,
54+
gender: null,
55+
mainLanguage: null,
56+
education: [],
57+
subjects: [],
58+
timezone: "Europe/Amsterdam",
59+
availability: {
60+
monday: [],
61+
tuesday: [],
62+
wednesday: [],
63+
thursday: [],
64+
friday: [],
65+
saturday: [],
66+
sunday: [],
67+
},
68+
address: {
69+
street: null,
70+
city: null,
71+
state: null,
72+
zipCode: null,
73+
country: null,
74+
},
75+
createdAt: new Date(),
76+
authProvider: "google",
77+
googleSub: args.googleSub,
78+
};
79+
}

‎server/src/utils/mappers/student.mapper.ts‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,5 @@ export const studentMapper = (
1515
mainLanguage: student.mainLanguage,
1616
createdAt: student.createdAt,
1717
role: student.role,
18-
authProvider: student.authProvider,
19-
googleSub: student.googleSub,
2018
};
2119
};

0 commit comments

Comments
 (0)