from fastapi import FastAPI import psycopg2 import json from psycopg2 import sql import pandas as pd import numpy as np from pydantic import BaseModel import spacy from spacy.matcher import PhraseMatcher from skillNer.general_params import SKILL_DB from skillNer.skill_extractor_class import SkillExtractor from psycopg2.extensions import register_adapter, AsIs register_adapter(np.int64, AsIs) import warnings warnings.filterwarnings('ignore') #Custom Classes for endpoints from DbConnection import DbConnection from UploadFile import UploadOpenFile from SkillExtract import SkillExtractor app = FastAPI() class FileDetails(BaseModel): filecontents: str filename: str class SkillDetails(BaseModel): skillid: int nlp = spacy.load("en_core_web_lg") # init skill extractor skill_extractor = SkillExtractor(nlp, SKILL_DB, PhraseMatcher) @app.get("/") async def root(): return {"greeting":"Hello world"} #https://vaibhav84-resumeapi.hf.space/docs db_params = DbConnection.GetDbConnection() def parse_csv(df): res = df.to_json(orient="records") parsed = json.loads(res) return parsed @app.get("/ProfileMatch") def ProfileMatchResults(): dbQuery = "select * from profilematch" conn = psycopg2.connect(**db_params) df = pd.read_sql_query(dbQuery, conn) return parse_csv(df) @app.post("/UploadFile/") def UploadFileDetails(file_data: FileDetails): return UploadOpenFile.uploadFile(file_data.filecontents,file_data.filename,db_params) @app.post("/ExtractSkills/") def ExtractSkills(skill_data: SkillDetails): return SkillExtractor.SkillExtract(db_params,skill_extractor,skill_data.skillid)