Commit 247ccd0e by ajil.k

added

parents
MONGO_URI = mongodb://localhost:27017/
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (fast_api_task)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/fast_api_task.iml" filepath="$PROJECT_DIR$/.idea/fast_api_task.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
# importing libraries
import uvicorn
if __name__ == "__main__":
try:
uvicorn.run("scripts.services.main:app", port=8000, reload=True)
except Exception as e:
print("Error-", e)
[MongoDB]
mongo_uri = $MONGO_URI
\ No newline at end of file
import sys
from configparser import ConfigParser
try:
config = ConfigParser()
config.read(f"conf/application.conf")
except Exception as e:
print(f"Error while loading the config: {e}")
print("Failed to Load Configuration. Exiting!!!")
sys.stdout.flush()
sys.exit()
class Mongo:
uri = config.get("MONGO_DB", "uri")
# create a connection
from pymongo import MongoClient
from mongoengine import connect
def db_connect():
try:
# Connect to MongoDB
connection = MongoClient("mongodb://localhost:27017/")
if connection:
print(" Database Connected Successfully !")
# Create a database
db_name = 'db_person'
db = connection[db_name]
return db
except Exception as e:
print("Error ", e)
from mongoengine import Document, StringField, ObjectIdField, IntField
class personal_details(Document):
_id: ObjectIdField()
id = IntField()
first_name = StringField()
last_name = StringField()
email = StringField()
phone_no = IntField()
def insert_into_db(collection, data):
status = collection.insert_many(data.to_dict('records'))
if status:
return True
else:
return False
# importing libraries
from typing import Optional
from mongoengine import connect
from pydantic import BaseModel
from scripts.core.engine.model import personal_details
employees = {
1: {
"name": "Varun",
"gender": "Male",
"dob": "01-01-1999",
"mobile": 9876543210
}
}
class Employee(BaseModel):
name: str
gender: str
dob: str
mobile: int
class UpdateEmployee(BaseModel):
name: Optional[str] = None
gender: Optional[str] = None
dob: Optional[str] = None
mobile: Optional[int] = None
connect(
db='db_person',
host='localhost',
port=27017
)
def start_operations(app_api):
@app_api.post("/add-employee/{employee_id}")
def add_employee(employee_id: int, employee: Employee):
if employee_id in employees:
return {"Error": "Employee already Exists"}
employees[employee_id] = employee
return employees
@app_api.get("/view-employee/{employee_id}")
def view_employee(employee_id: int):
if employee_id in employees:
return employees[employee_id]
else:
return {"Error": "Employee doesn't Exist"}
@app_api.put("/update-employee/{employee_id}")
def update_employee(employee_id: int, employee: UpdateEmployee):
if employee_id not in employees:
return {"Error": "Employee not Exists!"}
if employee.name is not None:
employees[employee_id].name = employee.name
if employee.gender is not None:
employees[employee_id].gender = employee.gender
if employee.dob is not None:
employees[employee_id].dob = employee.dob
if employee.mobile is not None:
employees[employee_id].mobile = employee.mobile
return employees[employee_id]
@app_api.delete("/delete-employee/{employee_id}")
def delete_employee(employee_id: int):
if employee_id not in employees:
return {"Error": "Employee not Exists!"}
del employees[employee_id]
return {"Message": "Employee deleted successfully!"}
def view_documents(app_api):
@app_api.get("/get_details", tags=["read data"])
def get_all_details():
documents = personal_details.objects().to_json()
print(documents)
return {"data": documents}
import pandas as pd
def extract_data(path):
try:
data_from_csv = pd.read_csv(path)
return data_from_csv
except Exception as e:
print("Error-", e)
# importing libraries
from fastapi import FastAPI
from scripts.constants.db_connection import db_connect
from scripts.core.handlers.insert_data_into_db import insert_into_db
from scripts.core.handlers.operations import start_operations, view_documents
from scripts.core.handlers.read_file import extract_data
from scripts.utils.mongo_util import create_collection
app = FastAPI()
@app.get("/")
async def root():
return "It's Working!"
# Operations on api
start_operations(app)
# Insert data from csv to database
data = extract_data("temp/data.csv")
db = db_connect()
collection = create_collection(db)
insert_status = insert_into_db(collection, data)
if insert_status:
print("Data inserted from csv to database successfully!")
# Display
view_documents(app)
# function for creating collection
def create_collection(db):
# Create Collection
collection_name = 'personal_details'
collection = db[collection_name]
return collection
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment