navpan2 commited on
Commit
b6ccbb2
·
verified ·
1 Parent(s): 4686d63

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +31 -5
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, Optional
5
  from fastapi.middleware.cors import CORSMiddleware
6
  import os
7
 
8
  # MongoDB connection URI
9
- MONGO_URI = os.getenv("MONGO_URI") # Replace with your MongoDB URI if not using environment variables
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)