100 lines
2.4 KiB
Python
100 lines
2.4 KiB
Python
"""
|
|
Resume management service
|
|
"""
|
|
from typing import List, Optional
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ..models import Resume, User
|
|
from ..config.settings import settings
|
|
|
|
|
|
def create_resume(db: Session, user_id: int, title: str, content: str, tenant_id: int) -> Resume:
|
|
"""
|
|
Create a new resume for a user
|
|
"""
|
|
db_resume = Resume(
|
|
user_id=user_id,
|
|
title=title,
|
|
content=content,
|
|
tenant_id=tenant_id
|
|
)
|
|
db.add(db_resume)
|
|
db.commit()
|
|
db.refresh(db_resume)
|
|
return db_resume
|
|
|
|
|
|
def get_user_resumes(db: Session, user_id: int, tenant_id: int = None) -> List[Resume]:
|
|
"""
|
|
Get all resumes for a specific user
|
|
"""
|
|
query = db.query(Resume).filter(Resume.user_id == user_id)
|
|
|
|
if settings.MULTI_TENANT_ENABLED and tenant_id:
|
|
query = query.filter(Resume.tenant_id == tenant_id)
|
|
|
|
return query.all()
|
|
|
|
|
|
def get_resume_by_id(db: Session, resume_id: int, user_id: int, tenant_id: int = None) -> Optional[Resume]:
|
|
"""
|
|
Get a specific resume by ID for a user
|
|
"""
|
|
query = db.query(Resume).filter(
|
|
Resume.id == resume_id,
|
|
Resume.user_id == user_id
|
|
)
|
|
|
|
if settings.MULTI_TENANT_ENABLED and tenant_id:
|
|
query = query.filter(Resume.tenant_id == tenant_id)
|
|
|
|
return query.first()
|
|
|
|
|
|
def update_resume(db: Session, resume_id: int, user_id: int, tenant_id: int = None, title: str = None, content: str = None) -> Optional[Resume]:
|
|
"""
|
|
Update a resume
|
|
"""
|
|
query = db.query(Resume).filter(
|
|
Resume.id == resume_id,
|
|
Resume.user_id == user_id
|
|
)
|
|
|
|
if settings.MULTI_TENANT_ENABLED and tenant_id:
|
|
query = query.filter(Resume.tenant_id == tenant_id)
|
|
|
|
db_resume = query.first()
|
|
|
|
if not db_resume:
|
|
return None
|
|
|
|
if title is not None:
|
|
db_resume.title = title
|
|
if content is not None:
|
|
db_resume.content = content
|
|
|
|
db.commit()
|
|
db.refresh(db_resume)
|
|
return db_resume
|
|
|
|
|
|
def delete_resume(db: Session, resume_id: int, user_id: int, tenant_id: int = None) -> bool:
|
|
"""
|
|
Delete a resume
|
|
"""
|
|
query = db.query(Resume).filter(
|
|
Resume.id == resume_id,
|
|
Resume.user_id == user_id
|
|
)
|
|
|
|
if settings.MULTI_TENANT_ENABLED and tenant_id:
|
|
query = query.filter(Resume.tenant_id == tenant_id)
|
|
|
|
db_resume = query.first()
|
|
|
|
if not db_resume:
|
|
return False
|
|
|
|
db.delete(db_resume)
|
|
db.commit()
|
|
return True |