You've already forked RekomenciBackend
feat(): update resume contracts
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
from decimal import Decimal
|
||||
|
||||
from template_project.application.common.data_structure import to_data_structure
|
||||
from template_project.application.common.enums import ExperienceType
|
||||
from template_project.application.common.enums import EducationGrade, ExperienceType
|
||||
from template_project.application.common.identity_provider import IdentityProvider
|
||||
from template_project.application.common.interactor import to_interactor
|
||||
from template_project.application.resume.data_gateway import ResumeDataGateway, ResumePredictionDataGateway
|
||||
from template_project.application.resume.data_gateway import (
|
||||
ResumeDataGateway,
|
||||
ResumeEducationDataGateway,
|
||||
ResumeExperienceDataGateway,
|
||||
ResumePredictionDataGateway,
|
||||
ResumeProjectDataGateway,
|
||||
)
|
||||
from template_project.application.resume.entity import ResumeId
|
||||
from template_project.application.resume.errors import ResumeDoesBelongUserError
|
||||
|
||||
@@ -17,12 +23,37 @@ class ResumePredictionResponse:
|
||||
|
||||
|
||||
@to_data_structure
|
||||
class _Response:
|
||||
class ExperienceItemResponse:
|
||||
place: str
|
||||
description: str
|
||||
months_duration: int
|
||||
|
||||
|
||||
@to_data_structure
|
||||
class EducationItemResponse:
|
||||
place: str
|
||||
grade: EducationGrade
|
||||
specialization: str
|
||||
description: str | None
|
||||
|
||||
|
||||
@to_data_structure
|
||||
class ProjectItemResponse:
|
||||
name: str
|
||||
description: str
|
||||
|
||||
|
||||
@to_data_structure
|
||||
class GetResumeResponse:
|
||||
id: ResumeId
|
||||
position: str
|
||||
location: str
|
||||
about_me: str
|
||||
key_skills: list[str]
|
||||
experience_type: ExperienceType
|
||||
experience: list[ExperienceItemResponse]
|
||||
education: list[EducationItemResponse]
|
||||
projects: list[ProjectItemResponse]
|
||||
prediction: ResumePredictionResponse | None
|
||||
|
||||
|
||||
@@ -31,11 +62,14 @@ class GetResumeInteractor:
|
||||
identity_provider: IdentityProvider
|
||||
resume_data_gateway: ResumeDataGateway
|
||||
resume_prediction_data_gateway: ResumePredictionDataGateway
|
||||
resume_experience_data_gateway: ResumeExperienceDataGateway
|
||||
resume_education_data_gateway: ResumeEducationDataGateway
|
||||
resume_project_data_gateway: ResumeProjectDataGateway
|
||||
|
||||
async def execute(
|
||||
self,
|
||||
resume_id: ResumeId,
|
||||
) -> _Response:
|
||||
) -> GetResumeResponse:
|
||||
user = await self.identity_provider.get_current_user()
|
||||
|
||||
resume = await self.resume_data_gateway.load(resume_id)
|
||||
@@ -53,12 +87,41 @@ class GetResumeInteractor:
|
||||
else:
|
||||
prediction = None
|
||||
|
||||
return _Response(
|
||||
experiences = await self.resume_experience_data_gateway.load_by_resume_id(resume.id)
|
||||
educations = await self.resume_education_data_gateway.load_by_resume_id(resume.id)
|
||||
projects = await self.resume_project_data_gateway.load_by_resume_id(resume.id)
|
||||
|
||||
return GetResumeResponse(
|
||||
id=resume.id,
|
||||
position=resume.position,
|
||||
location=resume.location,
|
||||
about_me=resume.about_me,
|
||||
key_skills=resume.key_skills,
|
||||
experience_type=resume.experience_type,
|
||||
experience=[
|
||||
ExperienceItemResponse(
|
||||
place=exp.place,
|
||||
description=exp.description,
|
||||
months_duration=exp.months_duration,
|
||||
)
|
||||
for exp in experiences
|
||||
],
|
||||
education=[
|
||||
EducationItemResponse(
|
||||
place=edu.place,
|
||||
grade=edu.grade,
|
||||
specialization=edu.specialization,
|
||||
description=edu.description,
|
||||
)
|
||||
for edu in educations
|
||||
],
|
||||
projects=[
|
||||
ProjectItemResponse(
|
||||
name=proj.name,
|
||||
description=proj.description,
|
||||
)
|
||||
for proj in projects
|
||||
],
|
||||
prediction=prediction,
|
||||
)
|
||||
|
||||
@@ -67,6 +130,7 @@ class GetResumeInteractor:
|
||||
class ResumeListItemResponse:
|
||||
id: ResumeId
|
||||
position: str
|
||||
location: str
|
||||
about_me: str
|
||||
key_skills: list[str]
|
||||
experience_type: ExperienceType
|
||||
@@ -86,6 +150,7 @@ class GetResumeListInteractor:
|
||||
ResumeListItemResponse(
|
||||
id=r.id,
|
||||
position=r.position,
|
||||
location=r.location,
|
||||
about_me=r.about_me,
|
||||
key_skills=r.key_skills,
|
||||
experience_type=r.experience_type,
|
||||
@@ -112,6 +177,7 @@ class GetResumeHistoryInteractor:
|
||||
ResumeListItemResponse(
|
||||
id=r.id,
|
||||
position=r.position,
|
||||
location=r.location,
|
||||
about_me=r.about_me,
|
||||
key_skills=r.key_skills,
|
||||
experience_type=r.experience_type,
|
||||
|
||||
Reference in New Issue
Block a user