Spaces:
Sleeping
Sleeping
File size: 3,485 Bytes
61e6fe7 de9ae20 61e6fe7 de9ae20 61e6fe7 de9ae20 61e6fe7 de9ae20 61e6fe7 de9ae20 61e6fe7 de9ae20 61e6fe7 de9ae20 61e6fe7 de9ae20 |
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
import os
from dotenv import load_dotenv
load_dotenv()
from sqlalchemy import create_engine, text
from fastapi import FastAPI, Depends
DATABASE_URL = os.getenv('DATABASE_URL')
def get_engine():
if not DATABASE_URL:
raise ValueError("L'URL de la base de données (DATABASE_URL) n'est pas définie dans l'environnement.")
engine = create_engine(DATABASE_URL)
return engine
def get_db_connection(engine=Depends(get_engine)):
with engine.connect() as connection:
yield connection
def load_job_offer(connection):
# MISE À JOUR : Requête avec toutes les nouvelles colonnes
query_offre = text('''
SELECT entreprise, ville, poste, contrat, description_poste, publication, lien, id,
description_nettoyee, mission, profil_recherche, competences, pole
FROM "job_offers"
''')
resultats = connection.execute(query_offre).fetchall()
offres = []
for row in resultats:
entreprise, ville, poste, contrat, description_poste, publication, lien, id, description_nettoyee, mission, profil_recherche, competences, pole = row
offres.append({
"entreprise": entreprise,
"ville": ville,
"poste": poste,
"contrat": contrat,
"description_poste": description_poste,
"publication": publication,
"lien": lien,
"id": id,
"description_nettoyee": description_nettoyee,
"mission": mission,
"profil_recherche": profil_recherche,
"competences": competences,
"pole": pole
})
return offres
def get_job_offer_by_id(connection, offre_id: str):
query = text('''
SELECT entreprise, ville, poste, contrat, description_poste, publication, lien, id,
description_nettoyee, mission, profil_recherche, competences, pole
FROM "job_offers"
WHERE id = :id
''')
result = connection.execute(query, {"id": offre_id}).fetchone()
if result:
entreprise, ville, poste, contrat, description_poste, publication, lien, id, description_nettoyee, mission, profil_recherche, competences, pole = result
return {
"entreprise": entreprise,
"ville": ville,
"poste": poste,
"contrat": contrat,
"description_poste": description_poste,
"publication": publication,
"lien": lien,
"id": id,
"description_nettoyee": description_nettoyee,
"mission": mission,
"profil_recherche": profil_recherche,
"competences": competences,
"pole": pole
}
return None
app = FastAPI()
@app.get("/")
def root():
return {"status": "API en marche", "message": "Bienvenue sur l'API d'offres d'emploi !"}
@app.get("/offre-emploi")
async def read_job_offer(connection = Depends(get_db_connection)):
offres = load_job_offer(connection)
if offres:
return offres
return {"message": "Aucune offre d'emploi trouvée."}
@app.get("/offre-emploi/{offre_id}")
async def read_job_offer_by_id(offre_id: str, connection = Depends(get_db_connection)):
offre = get_job_offer_by_id(connection, offre_id)
if offre:
return offre
return {"message": f"Aucune offre trouvée avec l'id {offre_id}"}
if __name__ == "__main__":
import uvicorn
port = int(os.environ.get("PORT", 7860))
uvicorn.run(app, host="0.0.0.0", port=port) |