Commit 78c28285 authored by suryakant's avatar suryakant

Trends Dashboard

parent e5e4f7df
...@@ -4,6 +4,7 @@ PORT = 80 ...@@ -4,6 +4,7 @@ PORT = 80
# POSTGRES DETAILS # POSTGRES DETAILS
POSTGRES_URI = postgresql://admin:UtAdm#Post265399@20.221.119.96:5335/project_101__ilens_assistant POSTGRES_URI = postgresql://admin:UtAdm#Post265399@20.221.119.96:5335/project_101__ilens_assistant
POSTGRES_MASTER_TBL = public.trends_master_tbl_
# LOG DETAILS # LOG DETAILS
LOG_BASE_PATH=logs/ LOG_BASE_PATH=logs/
......
...@@ -26,6 +26,7 @@ class PostgresDetails(BaseSettings): ...@@ -26,6 +26,7 @@ class PostgresDetails(BaseSettings):
""" """
uri: str uri: str
master_tbl: str
class Config: class Config:
env_prefix = "POSTGRES_" env_prefix = "POSTGRES_"
......
...@@ -44,6 +44,22 @@ class Constants: ...@@ -44,6 +44,22 @@ class Constants:
VALUES = "values" VALUES = "values"
FILTER_NAME = "filter_name" FILTER_NAME = "filter_name"
MAPPING_JSON = {
0: "function",
1: "form",
2: "l1",
3: "l2",
4: "l3",
5: "l4",
6: "l5",
7: "l6",
8: "l7",
9: "l8",
10: "l9",
11: "l10",
}
class LoggerConstants: class LoggerConstants:
LOGGER_1 = "" LOGGER_1 = ""
from scripts.constants import Constants from scripts.constants import Constants
from scripts.configurations import postgres_details
from sqlalchemy import select, and_, cast, Text from sqlalchemy import select, and_, cast, Text
...@@ -9,6 +9,65 @@ def get_unique_departments(table): ...@@ -9,6 +9,65 @@ def get_unique_departments(table):
).distinct() ).distinct()
def get_filter_query(
current_level, department=None, function=None,
form=None, filter_value=None,
table=None
):
query = None
if current_level and current_level == 0:
query = f"""
SELECT
DISTINCT FUNCTION
FROM
{table}
WHERE
DEPARTMENT='{department}'
ORDER BY
FUNCTION
"""
elif current_level and current_level == 1:
query = f"""
SELECT
DISTINCT FORM
FROM
{table}
WHERE
DEPARTMENT='{department}'
AND FUNCTION='{function}'
ORDER BY
FORM
"""
elif current_level and current_level >= 2:
current_level -= 1
where_clause = ""
if current_level >= 2:
where_clause = f"""
AND FILTER ->> 'l{current_level - 1}-value' = '{filter_value}'
"""
query = f"""
SELECT
DISTINCT (FILTER - >> 'l{current_level}-name') AS L{current_level}_NAME,
(FILTER - >> 'l{current_level}-value') AS L{current_level}_VALUE
FROM
{table}
WHERE
DEPARTMENT='{department}'
AND FUNCTION='{function}'
AND FORM='{form}'
{where_clause}
ORDER BY
L{current_level}_NAME
"""
return query
def get_unique_function(table, department): def get_unique_function(table, department):
return select( return select(
table.function.label(Constants.DATA) table.function.label(Constants.DATA)
......
import copy import copy
from datetime import datetime from datetime import datetime
from scripts.configurations import postgres_details
from scripts.constants import Constants from scripts.constants import Constants
from scripts.core.db.postgres import database_init from scripts.core.db.postgres import database_init
from scripts.core.db.postgres.psql_query import ( from scripts.core.db.postgres.psql_query import (
get_unique_departments, get_unique_function, get_unique_departments, get_unique_function,
get_unique_form, get_unique_filters get_unique_form, get_unique_filters, get_filter_query
) )
from scripts.core.schemas.postgres import TableObject from scripts.core.schemas.postgres import TableObject
from scripts.core.logging.application_logging import logger from scripts.core.logging.application_logging import logger
...@@ -19,7 +21,7 @@ class TrendsDashboardHandler: ...@@ -19,7 +21,7 @@ class TrendsDashboardHandler:
PepsiCo metrics. PepsiCo metrics.
""" """
def get_trends_metadata(self, request_data): def get_trends_metadata_old(self, request_data):
""" """
get_trends_metadata get_trends_metadata
""" """
...@@ -85,6 +87,51 @@ class TrendsDashboardHandler: ...@@ -85,6 +87,51 @@ class TrendsDashboardHandler:
return final_metadata_json return final_metadata_json
def get_trends_metadata(self, request_data):
"""
get_trends_metadata
"""
final_metadata_json = dict(
values=[]
)
print(request_data)
logger.info("Database initialization")
db_init = database_init()
# Creating table object
trends_master_tbl_obj = TableObject(
db=db_init, table_name=TrendsMasterTable
)
if request_data.current_level:
filter_query = get_filter_query(
current_level=request_data.current_level,
department=request_data.department,
function=request_data.function,
form=request_data.form,
filter_value=None,
table=postgres_details.master_tbl
)
else:
filter_query = get_unique_departments(
table=TrendsMasterTable
)
# Getting response from the Trends Master Table
response_data = trends_master_tbl_obj.execute_query(
query=filter_query
)
if response_data:
for each_metadata in response_data:
# Create a JSON for UI
print(each_metadata)
final_metadata_json[Constants.FILTER_NAME] = "filter_name"
return final_metadata_json
def get_trends_data(self, request_data): def get_trends_data(self, request_data):
""" """
Docstring Docstring
......
...@@ -9,6 +9,7 @@ class DashboardFilterInput(BaseModel): ...@@ -9,6 +9,7 @@ class DashboardFilterInput(BaseModel):
department: Optional[str] = None department: Optional[str] = None
function: Optional[str] = None function: Optional[str] = None
form: Optional[str] = None form: Optional[str] = None
current_level: Optional[str] = None
class DashboardFilterOutput(BaseModel): class DashboardFilterOutput(BaseModel):
......
...@@ -56,6 +56,7 @@ async def dashboard_metadata( ...@@ -56,6 +56,7 @@ async def dashboard_metadata(
""" """
try: try:
trends_obj = TrendsDashboardHandler() trends_obj = TrendsDashboardHandler()
print(request_data)
return trends_obj.get_trends_metadata(request_data=request_data) return trends_obj.get_trends_metadata(request_data=request_data)
except Exception as err: except Exception as err:
logger.exception( logger.exception(
......
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