diff --git a/prisma/migrations/20230629234215_adding_zipcode_to_user/migration.sql b/prisma/migrations/20230629234215_adding_zipcode_to_user/migration.sql new file mode 100644 index 0000000..2714a19 --- /dev/null +++ b/prisma/migrations/20230629234215_adding_zipcode_to_user/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "users" ADD COLUMN "zip_code" TEXT; diff --git a/prisma/migrations/20230712011055_transform_years_of_experience_into_string/migration.sql b/prisma/migrations/20230712011055_transform_years_of_experience_into_string/migration.sql new file mode 100644 index 0000000..564f6cc --- /dev/null +++ b/prisma/migrations/20230712011055_transform_years_of_experience_into_string/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "users" ALTER COLUMN "years_of_experience" SET DATA TYPE TEXT; diff --git a/prisma/migrations/20230712011520_rename_years_of_experience/migration.sql b/prisma/migrations/20230712011520_rename_years_of_experience/migration.sql new file mode 100644 index 0000000..30a80fa --- /dev/null +++ b/prisma/migrations/20230712011520_rename_years_of_experience/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - You are about to drop the column `years_of_experience` on the `users` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "users" DROP COLUMN "years_of_experience", +ADD COLUMN "experience" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 659c1e2..43fe3fa 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -25,6 +25,7 @@ model User { facebookId String? @map("facebook_id") githubId String? @map("github_id") birthDate DateTime? @map("birth_date") + zipCode String? @map("zip_code") country String? state String? city String? @@ -32,7 +33,7 @@ model User { linkedin String? github String? website String? - yearsOfExperience Float? @map("years_of_experience") + experience String? @map("experience") description String? jobTitle String? @map("job_title") jobCompany String? @map("job_company") diff --git a/schema.gql b/schema.gql index 16f414e..313da51 100644 --- a/schema.gql +++ b/schema.gql @@ -45,7 +45,7 @@ type User { firstName: String! lastName: String photoUrl: String - yearsOfExperience: Float + experience: String isEmailVerified: Boolean! isTermsAccepted: Boolean! onBoardingCompleted: Boolean! @@ -54,6 +54,7 @@ type User { googleId: String facebookId: String birthDate: DateTime + zipCode: String country: String state: String city: String @@ -140,7 +141,10 @@ type Query { skill(id: Int!): Skill! findNotifications(userId: String): [Notification!]! findOneNotification(id: String!): Notification - findTestimonies(learnerId: String, mentorId: String): [CreateTestimonyOutput!]! + findTestimonies( + learnerId: String + mentorId: String + ): [CreateTestimonyOutput!]! findOneTestimony(id: String!): [CreateTestimonyOutput!]! } @@ -182,7 +186,9 @@ type Mutation { resetUserPassword(userInput: ResetPasswordInput!): Boolean! sendResetPassword(email: String!): Boolean! createAvailability(createAvailabilityInput: CreateAvailabilityInput!): User! - updateAvailability(updateAvailabilityInput: UpdateAvailabilityInput!): Availability! + updateAvailability( + updateAvailabilityInput: UpdateAvailabilityInput! + ): Availability! removeAvailability(id: Int!): Availability! createEvent(createEventInput: CreateEventInput!): Event! updateEvent(updateEventInput: UpdateEventInput!): Event! @@ -190,14 +196,20 @@ type Mutation { createSkill(createSkillInput: CreateSkillInput!): Skill! updateSkill(updateSkillInput: UpdateSkillInput!): Skill! removeSkill(id: Int!): Skill! - createNotification(createNotificationInput: CreateNotificationInput!): NotificationData! - updateNotification(updateNotificationInput: UpdateNotificationInput!): NotificationData! + createNotification( + createNotificationInput: CreateNotificationInput! + ): NotificationData! + updateNotification( + updateNotificationInput: UpdateNotificationInput! + ): NotificationData! markRead(id: String!): Notification! removeNotification(id: ID!): Boolean! createTestimony(createTestimonyInput: CreateTestimonyInput!): Testimony! updateTestimony(UpdateTestimonyInput: UpdateTestimonyInput!): Testimony! deleteTestimony(id: Int!): Testimony! - createRecommendation(createRecommendationInput: CreateRecommendationInput!): Recommendation! + createRecommendation( + createRecommendationInput: CreateRecommendationInput! + ): Recommendation! updateApproved(updateApprovedInput: UpdateApprovedInput!): Recommendation! } @@ -207,9 +219,10 @@ input CreateUserInput { email: String! password: String! photoUrl: String - yearsOfExperience: Float + experience: String skills: [String!]! birthDate: DateTime + zipCode: String! country: String! state: String! city: String! @@ -232,9 +245,10 @@ input UpdateUserDto { email: String password: String photoUrl: String - yearsOfExperience: Float + experience: String skills: [String!] birthDate: DateTime + zipCode: String country: String state: String city: String @@ -263,7 +277,9 @@ input SignInUserInput { rememberMe: Boolean } -"""The `Upload` scalar type represents a file upload.""" +""" +The `Upload` scalar type represents a file upload. +""" scalar Upload input ResetPasswordInput { @@ -311,12 +327,16 @@ input UpdateEventInput { } input CreateSkillInput { - """Example field (placeholder)""" + """ + Example field (placeholder) + """ exampleField: Int! } input UpdateSkillInput { - """Example field (placeholder)""" + """ + Example field (placeholder) + """ exampleField: Int id: Int! } @@ -361,4 +381,4 @@ input CreateRecommendationInput { input UpdateApprovedInput { id: String! approved: Boolean! -} \ No newline at end of file +} diff --git a/src/modules/user/dto/create-user.input.ts b/src/modules/user/dto/create-user.input.ts index 7703dd0..d468f1d 100644 --- a/src/modules/user/dto/create-user.input.ts +++ b/src/modules/user/dto/create-user.input.ts @@ -51,7 +51,12 @@ export class CreateUserInput { @Field({ nullable: true }) @IsOptional() - yearsOfExperience?: number; + @IsString() + @Length(3, 5) + @Matches(/^[0-9]{1,2}-(10|11|[0-9]{1})$/, { + message: 'experience should be on format "99-99" (years-months)', + }) + experience?: string; @Field(() => [String], { nullable: false }) @IsEnum(Skill, { each: true }) @@ -63,6 +68,15 @@ export class CreateUserInput { @IsOptional() birthDate?: Date; + @Field() + @IsOptional() + @IsString() + @Length(9, 9) + @Matches(/^[0-9]{5}-[0-9]{3}/, { + message: 'zipCode should be on format "99999-999"', + }) + zipCode?: string; + @Field() @IsOptional() @IsString() diff --git a/src/modules/user/entities/user.entity.ts b/src/modules/user/entities/user.entity.ts index 78b15c0..1386040 100644 --- a/src/modules/user/entities/user.entity.ts +++ b/src/modules/user/entities/user.entity.ts @@ -20,8 +20,8 @@ export class User { lastName?: string | null; @Field(() => String, { nullable: true }) photoUrl?: string | null; - @Field(() => Float, { nullable: true }) - yearsOfExperience?: number | null; + @Field(() => String, { nullable: true }) + experience?: string | null; @Field() isEmailVerified: boolean; @Field() @@ -39,6 +39,8 @@ export class User { @Field({ nullable: true }) birthDate?: Date; @Field({ nullable: true }) + zipCode?: string; + @Field({ nullable: true }) country?: string; @Field({ nullable: true }) state?: string; diff --git a/src/modules/user/user.service.ts b/src/modules/user/user.service.ts index 75041fa..5ca6141 100644 --- a/src/modules/user/user.service.ts +++ b/src/modules/user/user.service.ts @@ -195,7 +195,7 @@ export class UserService { user.city, user.linkedin, user.github, - user.yearsOfExperience, + user.experience, user.description, user.jobTitle, user.jobCompany,