Spaces:
Runtime error
Runtime error
def add_job_nodes(response, job_name): | |
job = response.job | |
# Create job nodes | |
cypher = f''' | |
CREATE (job:Job {{name: "{job_name}"}}) | |
''' | |
# Job description | |
if job.description: | |
cypher += f'SET job.description = "{job.description}"' | |
# Work mode | |
if job.work_mode: | |
cypher += f''' | |
SET job.work_mode = "{job.work_mode}" | |
''' | |
# Benefits & Compensations | |
if job.benefit_compensation: | |
cypher += f''' | |
SET job.benefit_compensation = "{job.benefit_compensation}" | |
''' | |
# Locations | |
if job.work_at: | |
cypher += f''' | |
MERGE (loc: Location {{name: "{job.work_at.name}", location_type: "{job.work_at.location_type}"}}) | |
MERGE (job)-[:WORK_AT]->(loc) | |
''' | |
# Work Levels | |
if job.work_level: | |
cypher += f''' | |
MERGE (level: Work_LV {{name: "{job.work_level.name}"}}) | |
MERGE (job)-[:AT_LEVEL]->(level) | |
''' | |
# Required educations | |
if job.education_requirements: | |
for i, edu in enumerate(job.education_requirements): | |
cypher += f''' | |
CREATE (edu_{i}:Education {{name: "{edu.name}"}}) | |
MERGE (job)-[:REQUIRES]->(edu_{i}) | |
''' | |
if edu.fields: | |
cypher += f'SET edu_{i}.fields = "{edu.fields}"' | |
if edu.status: | |
cypher += f'SET edu_{i}.status = "{edu.status}"' | |
# Required skills | |
if job.skill_requirements: | |
for i, skill in enumerate(job.skill_requirements): | |
cypher += f''' | |
MERGE (skill_{i}:Skill {{name: "{skill.name}"}}) | |
MERGE (job)-[:REQUIRES]->(skill_{i}) | |
''' | |
if skill.hypernym: | |
cypher += f''' | |
MERGE (hypernym_{i}:Skill {{name: "{skill.hypernym}"}}) | |
MERGE (skill_{i})-[:HYPERNYM]->(hypernym_{i}) | |
''' | |
# Required work experiences | |
if job.work_exper_requirements: | |
for i, exper in enumerate(job.work_exper_requirements): | |
cypher += f''' | |
MERGE (exper_{i}:Work_Exper {{name: "{exper.name}"}}) | |
MERGE (job)-[:REQUIRES]->(exper_{i}) | |
''' | |
if exper.duration: | |
cypher += f'SET exper_{i}.duration = "{exper.duration}"' | |
return cypher | |
def add_company_nodes(response, company_name): | |
company = response.job.from_company | |
cypher = f''' | |
MERGE (company:Company {{name: "{company_name}"}}) | |
MERGE (job)-[:FROM]->(company) | |
MERGE (company)-[:RECRUITES]->(job) | |
''' | |
if company: | |
if company.subdiaries: | |
for i, sub in enumerate(company.subdiaries): | |
cypher += f''' | |
MERGE (sub_{i}:Company {{name: "{sub}"}}) | |
MERGE (company)-[:SUBDIARY]->(sub_{i}) | |
''' | |
if company.locations: | |
for i, loc in enumerate(company.locations): | |
cypher += f''' | |
MERGE (loc_{i}:Location {{name: "{loc.name}"}}) | |
MERGE (company)-[:LOCATES_IN]->(loc_{i}) | |
''' | |
if loc.location_type: | |
cypher += f'SET loc_{i}.location_type = "{loc.location_type}"' | |
if company.industry: | |
for i, industry in enumerate(company.industry): | |
cypher += f''' | |
MERGE (industry_{i}:Industry {{name: "{industry}"}}) | |
MERGE (company)-[:OPERATES_IN]->(industry_{i}) | |
''' | |
return cypher | |
def make_cypher_query(response, job_title, company_name): | |
job_cypher = add_job_nodes(response, job_title) | |
company_cypher = add_company_nodes(response, company_name) | |
return job_cypher + company_cypher |