Spaces:
Running
Running
Update main.py
Browse files
main.py
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
from fastapi import FastAPI, HTTPException
|
2 |
from pydantic import BaseModel
|
3 |
from motor.motor_asyncio import AsyncIOMotorClient
|
4 |
-
from typing import List
|
5 |
from fastapi.middleware.cors import CORSMiddleware
|
6 |
import os
|
7 |
|
8 |
# MongoDB connection URI
|
9 |
-
MONGO_URI = os.getenv("MONGO_URI")
|
10 |
|
11 |
# Initialize FastAPI app
|
12 |
app = FastAPI()
|
@@ -37,6 +37,7 @@ class DiseaseRemedy(BaseModel):
|
|
37 |
diseaseRemedy: str
|
38 |
|
39 |
class Disease(BaseModel):
|
|
|
40 |
plantName: str
|
41 |
botanicalName: str
|
42 |
diseaseDesc: DiseaseDesc
|
@@ -50,14 +51,39 @@ def welcome():
|
|
50 |
# API endpoint to fetch disease details by plant name
|
51 |
@app.get("/disease/{plant_name}", response_model=Disease)
|
52 |
async def get_disease(plant_name: str):
|
53 |
-
# Fetch the disease from MongoDB
|
54 |
disease = await disease_collection.find_one({"plantName": plant_name})
|
55 |
|
56 |
if disease is None:
|
57 |
raise HTTPException(status_code=404, detail="Disease not found")
|
58 |
|
59 |
-
# Convert MongoDB document to Pydantic model
|
60 |
disease_data = Disease(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
plantName=disease["plantName"],
|
62 |
botanicalName=disease["botanicalName"],
|
63 |
diseaseDesc=DiseaseDesc(
|
@@ -77,4 +103,4 @@ async def get_disease(plant_name: str):
|
|
77 |
# Run the FastAPI server using Uvicorn
|
78 |
if __name__ == "__main__":
|
79 |
import uvicorn
|
80 |
-
uvicorn.run(app, host="0.0.0.0", port=5000)
|
|
|
1 |
from fastapi import FastAPI, HTTPException
|
2 |
from pydantic import BaseModel
|
3 |
from motor.motor_asyncio import AsyncIOMotorClient
|
4 |
+
from typing import List
|
5 |
from fastapi.middleware.cors import CORSMiddleware
|
6 |
import os
|
7 |
|
8 |
# MongoDB connection URI
|
9 |
+
MONGO_URI = os.getenv("MONGO_URI")
|
10 |
|
11 |
# Initialize FastAPI app
|
12 |
app = FastAPI()
|
|
|
37 |
diseaseRemedy: str
|
38 |
|
39 |
class Disease(BaseModel):
|
40 |
+
key: str
|
41 |
plantName: str
|
42 |
botanicalName: str
|
43 |
diseaseDesc: DiseaseDesc
|
|
|
51 |
# API endpoint to fetch disease details by plant name
|
52 |
@app.get("/disease/{plant_name}", response_model=Disease)
|
53 |
async def get_disease(plant_name: str):
|
|
|
54 |
disease = await disease_collection.find_one({"plantName": plant_name})
|
55 |
|
56 |
if disease is None:
|
57 |
raise HTTPException(status_code=404, detail="Disease not found")
|
58 |
|
|
|
59 |
disease_data = Disease(
|
60 |
+
key=disease["key"],
|
61 |
+
plantName=disease["plantName"],
|
62 |
+
botanicalName=disease["botanicalName"],
|
63 |
+
diseaseDesc=DiseaseDesc(
|
64 |
+
diseaseName=disease["diseaseDesc"]["diseaseName"],
|
65 |
+
symptoms=disease["diseaseDesc"]["symptoms"],
|
66 |
+
diseaseCauses=disease["diseaseDesc"]["diseaseCauses"]
|
67 |
+
),
|
68 |
+
diseaseRemedyList=[DiseaseRemedy(
|
69 |
+
title=remedy["title"],
|
70 |
+
diseaseRemedyShortDesc=remedy["diseaseRemedyShortDesc"],
|
71 |
+
diseaseRemedy=remedy["diseaseRemedy"]
|
72 |
+
) for remedy in disease["diseaseRemedyList"]]
|
73 |
+
)
|
74 |
+
|
75 |
+
return disease_data
|
76 |
+
|
77 |
+
# New endpoint to fetch disease details by key
|
78 |
+
@app.get("/kotlinback/{key}", response_model=Disease)
|
79 |
+
async def get_disease_by_key(key: str):
|
80 |
+
disease = await disease_collection.find_one({"key": key})
|
81 |
+
|
82 |
+
if disease is None:
|
83 |
+
raise HTTPException(status_code=404, detail="Disease not found")
|
84 |
+
|
85 |
+
disease_data = Disease(
|
86 |
+
key=disease["key"],
|
87 |
plantName=disease["plantName"],
|
88 |
botanicalName=disease["botanicalName"],
|
89 |
diseaseDesc=DiseaseDesc(
|
|
|
103 |
# Run the FastAPI server using Uvicorn
|
104 |
if __name__ == "__main__":
|
105 |
import uvicorn
|
106 |
+
uvicorn.run(app, host="0.0.0.0", port=5000)
|