Commit 2c9af66e authored by ramya.r's avatar ramya.r

first

parents
POSTGRES_URI =postgresql://interns:interns%40123@192.168.0.220:5432/internsb2
\ No newline at end of file
# Default ignored files
/shelf/
/workspace.xml
main.py
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N806" />
<option value="N801" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="main.employee_details" />
<option value="object.subordinates" />
<option value="list.cities" />
<option value="main.my_data" />
</list>
</option>
</inspection_tool>
</profile>
</component>
\ 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="C:\Users\ramya.r\Anaconda3" 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/timestamp1.iml" filepath="$PROJECT_DIR$/.idea/timestamp1.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
[postgres]
user="interns"
password="interns@123"
port=5432
host=192.168.0.220
database="internsb2"
import uvicorn
from fastapi import FastAPI
from dotenv import load_dotenv
from script.service.api_calls import router
load_dotenv()
app = FastAPI(title="Timestamp")
app.include_router(router)
if __name__ == "__main__":
uvicorn.run("main:app", host='localhost', port=8000)
import os
from configparser import SafeConfigParser
from dotenv import load_dotenv
load_dotenv()
config = SafeConfigParser()
config.read('conf/application.conf')
class Postgres:
port = int(config.getint("postgres", "port"))
host = config.get("postgres", "host")
class Postgresql:
postgres_uri: str = os.environ.get("POSTGRES_URI")
class APIEndpoints:
save = "/save"
insert = "/insert"
timestamp = "/timestamp"
class NameDoesNotExist(Exception):
pass
\ No newline at end of file
from datetime import timedelta
import pandas as pd
from script.core.schema.model import MyData, Times
from script.utils.timestamp_connection import session
from script.utils.timestamp_utils import Utils
class Timestamp:
@staticmethod
def update_timestamps(request_data: Times):
end_time = request_data.start_time + timedelta(minutes=request_data.buffer_time)
data = {"id": request_data.id,
"start_time": request_data.start_time,
"buffer_time": request_data.buffer_time,
"end_time": end_time
}
new_data = MyData(**data)
session.add(new_data)
session.commit()
df = Utils.data_query()
df['start_time'] = pd.to_datetime(df['start_time'], utc=True).dt.strftime('%Y-%m-%d %H:%M:%S')
df['end_time'] = pd.to_datetime(df['end_time'], utc=True).dt.strftime('%Y-%m-%d %H:%M:%S')
return df
from datetime import datetime
from pydantic import BaseModel
from sqlalchemy import Column, Integer, DateTime
from sqlalchemy.orm import declarative_base
from script.utils.timestamp_connection import engine
class Times(BaseModel):
id: int
start_time: datetime
buffer_time: int
Base = declarative_base()
class MyData(Base):
__tablename__ = "my_data"
id = Column("id", Integer, primary_key=True)
start_time = Column("start_time", DateTime, nullable=False)
buffer_time = Column("buffer_time", Integer, nullable=False)
end_time = Column("end_time", DateTime, nullable=False)
Base.metadata.create_all(engine)
from typing import Any, Optional
from pydantic import BaseModel
class DefaultResponse(BaseModel):
status: str = "failed"
message: str
data: Optional[Any]
from fastapi import APIRouter
from script.constants import APIEndpoints
from script.core.handlers.timestamp_creation import Timestamp
from script.core.schema.model import Times
from script.core.schema.response import DefaultResponse
router = APIRouter(prefix=APIEndpoints.timestamp)
@router.post(APIEndpoints.insert)
async def insert_item(request_data: Times):
try:
handler = Timestamp()
handler.update_timestamps(request_data)
return DefaultResponse(message="Successfully inserted", status="success")
except ValueError as e:
return DefaultResponse(message=f"Due to Value Error: {str(e)}")
import sqlalchemy
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker
from script.config.app_config import Postgresql
engine = create_engine(Postgresql.postgres_uri)
LocalSession = sessionmaker(bind=engine)
session = LocalSession()
Base = sqlalchemy.orm.declarative_base()
Base.metadata.create_all(engine)
metadata = MetaData()
from datetime import datetime
import pandas as pd
from sqlalchemy import select
from sqlalchemy.exc import SQLAlchemyError
from script.core.schema.model import MyData, Times
from script.utils.timestamp_connection import session
class Utils:
@staticmethod
def insert_query(request_data: Times):
try:
datetime.strptime(request_data.start_time, '%Y-%m-%d %H:%M:%S')
query = select([MyData.id, MyData.start_time, MyData.buffer_time, MyData.end_time])
result = session.execute(query)
rows = result.fetchall()
return rows
except (SQLAlchemyError, ValueError) as e:
print(f"Error executing insert_query: {e}")
return None
@staticmethod
def data_query():
try:
query = select([MyData.start_time, MyData.buffer_time, MyData.end_time])
result = session.execute(query)
df = pd.DataFrame(result.fetchall(), columns=["start_time", "buffer_time", "end_time"])
return df
except SQLAlchemyError as e:
print(f"Error executing data_query: {e}")
return None
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