This commit is contained in:
2025-10-24 17:06:14 -05:00
parent 12d0690b91
commit df8c75603f
11289 changed files with 1209053 additions and 318 deletions

View File

@@ -64,28 +64,19 @@ class JobResponse(BaseModel):
}
@router.get("/", response_model=List[JobResponse])
async def get_jobs(skip: int = 0, limit: int = 100, is_active: bool = True, db: Session = Depends(SessionLocal), request: Request = None):
"""Get all jobs for the current tenant"""
tenant_id = getattr(request.state, 'tenant_id', None)
if not tenant_id and settings.MULTI_TENANT_ENABLED:
raise HTTPException(status_code=400, detail="Tenant ID is required")
query = db.query(JobPosting).filter(JobPosting.tenant_id == tenant_id)
async def get_jobs(skip: int = 0, limit: int = 100, is_active: bool = True, db: Session = Depends(SessionLocal)):
"""Get all jobs"""
query = db.query(JobPosting)
if is_active is not None:
query = query.filter(JobPosting.is_active == is_active)
jobs = query.offset(skip).limit(limit).all()
return jobs
@router.get("/{job_id}", response_model=JobResponse)
async def get_job(job_id: int, db: Session = Depends(SessionLocal), request: Request = None):
async def get_job(job_id: int, db: Session = Depends(SessionLocal)):
"""Get a specific job"""
tenant_id = getattr(request.state, 'tenant_id', None)
if not tenant_id and settings.MULTI_TENANT_ENABLED:
raise HTTPException(status_code=400, detail="Tenant ID is required")
job = db.query(JobPosting).filter(
JobPosting.id == job_id,
JobPosting.tenant_id == tenant_id # Ensure job belongs to current tenant
).first()
if not job:
raise HTTPException(status_code=404, detail="Job not found")
@@ -94,16 +85,14 @@ async def get_job(job_id: int, db: Session = Depends(SessionLocal), request: Req
return job
@router.post("/", response_model=JobResponse)
async def create_job(job: JobCreate, db: Session = Depends(SessionLocal), request: Request = None, user_id: int = 1): # In real app, get from auth context
async def create_job(job: JobCreate, db: Session = Depends(SessionLocal), user_id: int = 1): # Default for testing
"""Create a new job posting"""
tenant_id = getattr(request.state, 'tenant_id', None)
if not tenant_id and settings.MULTI_TENANT_ENABLED:
raise HTTPException(status_code=400, detail="Tenant ID is required")
# For testing, use default tenant
tenant_id = 1 # Default tenant for testing
# Verify user exists and has permission to create job postings
user = db.query(User).filter(
User.id == user_id,
User.tenant_id == tenant_id # Ensure user belongs to current tenant
User.id == user_id
).first()
if not user or user.role not in ["job_provider", "admin"]:
raise HTTPException(
@@ -119,7 +108,7 @@ async def create_job(job: JobCreate, db: Session = Depends(SessionLocal), reques
salary_min=job.salary_min,
salary_max=job.salary_max,
is_remote=job.is_remote,
tenant_id=tenant_id, # Use current tenant
tenant_id=tenant_id, # Use default tenant
created_by_user_id=user_id
)
db.add(db_job)
@@ -128,15 +117,10 @@ async def create_job(job: JobCreate, db: Session = Depends(SessionLocal), reques
return db_job
@router.put("/{job_id}", response_model=JobResponse)
async def update_job(job_id: int, job_update: JobUpdate, db: Session = Depends(SessionLocal), request: Request = None):
async def update_job(job_id: int, job_update: JobUpdate, db: Session = Depends(SessionLocal)):
"""Update a job posting"""
tenant_id = getattr(request.state, 'tenant_id', None)
if not tenant_id and settings.MULTI_TENANT_ENABLED:
raise HTTPException(status_code=400, detail="Tenant ID is required")
db_job = db.query(JobPosting).filter(
JobPosting.id == job_id,
JobPosting.tenant_id == tenant_id # Ensure job belongs to current tenant
).first()
if not db_job:
raise HTTPException(status_code=404, detail="Job not found")
@@ -150,15 +134,10 @@ async def update_job(job_id: int, job_update: JobUpdate, db: Session = Depends(S
return db_job
@router.delete("/{job_id}")
async def delete_job(job_id: int, db: Session = Depends(SessionLocal), request: Request = None):
async def delete_job(job_id: int, db: Session = Depends(SessionLocal)):
"""Delete a job posting (soft delete by setting is_active to False)"""
tenant_id = getattr(request.state, 'tenant_id', None)
if not tenant_id and settings.MULTI_TENANT_ENABLED:
raise HTTPException(status_code=400, detail="Tenant ID is required")
db_job = db.query(JobPosting).filter(
JobPosting.id == job_id,
JobPosting.tenant_id == tenant_id # Ensure job belongs to current tenant
).first()
if not db_job:
raise HTTPException(status_code=404, detail="Job not found")