add edit resume

This commit is contained in:
ivankirpichnikov
2025-11-22 03:31:17 +03:00
parent d9a3c39980
commit a2a9b8f8c1
9 changed files with 288 additions and 15 deletions
@@ -0,0 +1,56 @@
from template_project.application.common.data_structure import to_data_structure
from template_project.application.common.enums import ExperienceType
from template_project.application.common.identity_provider import IdentityProvider
from template_project.application.common.interactor import to_interactor
from template_project.application.common.unit_of_work import UnitOfWork
from template_project.application.resume.data_gateway import ResumeDataGateway
from template_project.application.resume.entity import ResumeId
from template_project.application.resume.errors import ResumeDoesBelongUserError
@to_data_structure
class _Response:
id: ResumeId
position: str
about_me: str
key_skills: list[str]
experience_type: ExperienceType
@to_interactor
class EditResumeInteractor:
unit_of_work: UnitOfWork
identity_provider: IdentityProvider
resume_data_gateway: ResumeDataGateway
async def execute(
self,
resume_id: ResumeId,
position: str | None,
about_me: str | None,
key_skills: list[str] | None,
experience_type: ExperienceType | None,
) -> _Response:
user = await self.identity_provider.get_current_user()
resume = await self.resume_data_gateway.load(resume_id)
if resume.user_id != user.id:
raise ResumeDoesBelongUserError
if position is not None:
resume.position = position
if about_me is not None:
resume.about_me = about_me
if key_skills is not None:
resume.key_skills = key_skills
if experience_type is not None:
resume.experience_type = experience_type
await self.unit_of_work.commit()
return _Response(
id=resume.id,
position=resume.position,
about_me=resume.about_me,
key_skills=resume.key_skills,
experience_type=resume.experience_type,
)