forked from lukazdoehne/backend-coding-challenge
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
59 lines (50 loc) · 1.93 KB
/
Copy pathapp.py
File metadata and controls
59 lines (50 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models import Base, Planner
engine = create_engine('sqlite:///planning.db')
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base.metadata.create_all(bind=engine)
session = SessionLocal()
app = FastAPI()
@app.get("/planner")
def get_info(id: int):
item = session.query(Planner).filter_by(id=id).first()
data = {
"id": item.id,
"originalId": item.original_id,
"talentId": item.talent.id,
"talentName": item.talent.talent_name,
"talentGrade": item.talent.talent_grade,
"bookingGrade": item.talent.booking_grade,
"operatingUnit": item.talent.operating_unit,
"officeCity": item.talent.office_city,
"officePostalCode": item.talent.office_postal_code,
"jobManagerName": item.job_manager.job_manager_name,
"jobManagerId": item.job_manager.id,
"totalHours": item.total_hours,
"startDate": item.start_date.strftime("%m/%d/%Y %I:%M %p"),
"endDate": item.end_date.strftime("%m/%d/%Y %I:%M %p"),
"clientName": item.client.client_name,
"clientId": item.client.id,
"industry": item.client.industry,
"isUnassigned": item.client.is_unassigned,
"requiredSkills": [],
"optionalSkills": []
}
for association in item.planner_associations:
skill_name = association.skill.skill_name
skill_category = association.skill.skill_category
skill = {
"name": skill_name,
"category": skill_category
}
if association.mandatory:
data['requiredSkills'].append(skill)
else:
data['optionalSkills'].append(skill)
return JSONResponse(content=data)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)