diff --git a/code/app.py b/code/app.py index 1c06826..2164a11 100644 --- a/code/app.py +++ b/code/app.py @@ -1,83 +1,13 @@ from flask import Flask -from flask_restful import Resource, Api, reqparse +from flask_restful import Api + +from job import Job +from jobslist import JobsList app = Flask(__name__) api = Api(app) -jobs = [] - -class Job(Resource): - parser = reqparse.RequestParser() - parser.add_argument( - 'company', - type=str, - required=True, - help="This field cannot be left blank" - ) - parser.add_argument('salary') - parser.add_argument('status') - - def post(self, title): - - if self.check_for_job(title) is not None: - return{'message': "A job with name '{}' already exists".format(title)}, 400 - - data = Job.parser.parse_args() - - job = { - 'title': title, - 'company': data['company'], - 'salary': data['salary'], - 'status': data['status'] - } - jobs.append(job) - - return job, 201 - - def check_for_job(self, title): - for job in jobs: - if job['title'] == title: - return job - return None - - def get(self, title): - job = self.check_for_job(title) - if job: - return {'job': job}, 200 - else: - return{"message": "Job does not exist"}, 404 - - def put(self, title): - - data = Job.parser.parse_args() - - job = self.check_for_job(title) - if job is None: - job = { - 'title': title, - 'company': data['company'], - 'salary': data['salary'], - 'status': data['status'] - } - jobs.append(job), 201 - else: - job.update(data), 200 - return job - - def delete(self, title): - if self.check_for_job(title) is None: - return{'message': "A job with name '{}' does not exist".format(title)}, 400 - global jobs - jobs = list([job for job in jobs if job['title'] != title]) - return {'message': 'Item deleted'}, 200 - - -class JobsList(Resource): - - def get(self): - return {"jobs": jobs}, 200 - api.add_resource(Job, '/job/') api.add_resource(JobsList, '/jobs') diff --git a/code/job.py b/code/job.py new file mode 100644 index 0000000..35c3b2f --- /dev/null +++ b/code/job.py @@ -0,0 +1,53 @@ +from flask_restful import Resource, reqparse + +jobs = {} + +class Job(Resource): + parser = reqparse.RequestParser() + parser.add_argument( + 'company', + type=str, + required=True, + help="This field cannot be left blank" + ) + parser.add_argument('salary') + parser.add_argument('status') + + def post(self, title): + + if jobs.get(title): + return{'message': f"A job with name '{title}' already exists"}, 400 + + data = Job.parser.parse_args() + + jobs.update( + {title : { + 'company': data['company'], + 'salary': data['salary'], + 'status': data['status'] + } + } + ) + return jobs[title], 201 + + def get(self, title): + if jobs.get(title): + return jobs[title], 200 + else: + return{"message": f"A job with neme {title} does not exist"}, 404 + + def put(self, title): + + data = Job.parser.parse_args() + + if jobs.get(title): + jobs[title].update(data), 200 + return jobs[title] + else: + return self.post(title) + + def delete(self, title): + if jobs.get(title) == None: + return {'message': f"A job with name '{title}' does not exist"}, 400 + jobs.pop(title) + return {'message' : f"{title} deleted"}, 200 diff --git a/code/jobslist.py b/code/jobslist.py new file mode 100644 index 0000000..ae341a3 --- /dev/null +++ b/code/jobslist.py @@ -0,0 +1,8 @@ +from flask_restful import Resource + +import job + +class JobsList(Resource): + + def get(self): + return {"jobs": job.jobs}, 200 \ No newline at end of file