Commit 555bf375 by ajil.k

added file uploading feature

parent fc776ec4
class APIEndpoints: class APIEndpoints:
# FastAPI endpoints # FastAPI endpoints
root = "/" root = "/"
insert_all_documents = "/insert-all-documents-into-db/" upload_csv_and_store_in_db = "/upload_csv_and_store_in_db/"
get_details = "/get_details" get_details = "/get_details/"
create_new_document = "/create-new-document" create_new_document = "/create-new-document/"
update_document = "/update-document/{document_id}" update_document = "/update-document/{document_id}"
delete_document = "/delete-document/{document_id}" delete_document = "/delete-document/{document_id}"
...@@ -9,15 +9,16 @@ from scripts.database.mongodb.models import personal_details, PersonalDetails ...@@ -9,15 +9,16 @@ from scripts.database.mongodb.models import personal_details, PersonalDetails
connect(db='db_person', host='localhost', port=27017) connect(db='db_person', host='localhost', port=27017)
class operations_on_api: class OperationsOnApi:
def __init__(self): def __init__(self):
self.db = db_connect() self.db = db_connect()
collection_name = 'personal_details' collection_name = 'personal_details'
self.collection = self.db[collection_name] self.collection = self.db[collection_name]
def insert_all_data(self): def upload_csv(self, file):
try: try:
data = extract_data(csv_path) data = file.file
data = extract_data(data)
insert_status = insert_into_db(self.collection, data) insert_status = insert_into_db(self.collection, data)
if insert_status: if insert_status:
print("Data inserted from csv to database successfully!") print("Data inserted from csv to database successfully!")
......
import pandas as pd import pandas as pd
def extract_data(path): def extract_data(file):
try: try:
data_from_csv = pd.read_csv(path) data_from_csv = pd.read_csv(file)
return data_from_csv.to_dict('records') return data_from_csv.to_dict('records')
except Exception as e: except Exception as e:
print("Error-", e) print("Error-", e)
# importing libraries # importing libraries
from fastapi import FastAPI from fastapi import FastAPI, UploadFile
from scripts.core.handlers.api_functions import operations_on_api from scripts.core.handlers.api_functions import OperationsOnApi
from scripts.database.mongodb.models import PersonalDetails, UpdatePersonalDetails from scripts.database.mongodb.models import PersonalDetails, UpdatePersonalDetails
from scripts.constants.endpoints import APIEndpoints from scripts.constants.endpoints import APIEndpoints
...@@ -17,36 +17,36 @@ async def root(): ...@@ -17,36 +17,36 @@ async def root():
return {"Message": "It's Working!"} return {"Message": "It's Working!"}
# Insert data from csv to database # Upload and Insert data from csv to database
@app.post(api_endpoint.insert_all_documents, tags=["insert_all_documents_into_db"]) @app.post(api_endpoint.upload_csv_and_store_in_db, tags=["upload_csv_file_and_store_in_db"])
async def insert_all_documents_into_db(): async def upload_file(file: UploadFile):
operations_on_api().insert_all_data() OperationsOnApi().upload_csv(file)
return {"Message": "Data inserted from csv to database successfully!"} return {"Message": "Data inserted from csv to database successfully!"}
# Display all documents # Display all documents
@app.get(api_endpoint.get_details, tags=["read documents"]) @app.get(api_endpoint.get_details, tags=["read documents"])
def get_all_details(): def get_all_details():
documents = operations_on_api().get_data_from_db() documents = OperationsOnApi().get_data_from_db()
return {"data": documents} return {"data": documents}
# Insert one document to db # Insert one document to db
@app.post(api_endpoint.create_new_document, tags=["create document"]) @app.post(api_endpoint.create_new_document, tags=["create document"])
async def create_new_document(details: PersonalDetails): async def create_new_document(details: PersonalDetails):
result = operations_on_api().insert_one_document(details) result = OperationsOnApi().insert_one_document(details)
return {"inserted document id": str(result.inserted_id)} return {"inserted document id": str(result.inserted_id)}
# Update one Document # Update one Document
@app.put(api_endpoint.update_document, tags=["update document"]) @app.put(api_endpoint.update_document, tags=["update document"])
async def update_document(document_id: int, update_details: UpdatePersonalDetails): async def update_document(document_id: int, update_details: UpdatePersonalDetails):
operations_on_api().update_one_document(document_id, update_details) OperationsOnApi().update_one_document(document_id, update_details)
return {"Message": "Document updated"} return {"Message": "Document updated"}
# Delete one Document # Delete one Document
@app.delete(api_endpoint.delete_document, tags=["delete document"]) @app.delete(api_endpoint.delete_document, tags=["delete document"])
async def delete_documents(document_id: int): async def delete_documents(document_id: int):
operations_on_api().delete_one_document(document_id) OperationsOnApi().delete_one_document(document_id)
return {"Message": "Document deleted Successfully!"} return {"Message": "Document deleted Successfully!"}
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