Done feature 3 fully with postgresql integration
This commit is contained in:
parent
81547311d8
commit
c4179b3b08
2 changed files with 27 additions and 8 deletions
|
@ -130,7 +130,7 @@ class DatabaseManager:
|
||||||
# Create table if it doesn't exist
|
# Create table if it doesn't exist
|
||||||
create_table_query = """
|
create_table_query = """
|
||||||
CREATE TABLE IF NOT EXISTS gas_station_1.car_frontal_info (
|
CREATE TABLE IF NOT EXISTS gas_station_1.car_frontal_info (
|
||||||
camera_id VARCHAR(255),
|
display_id VARCHAR(255),
|
||||||
captured_timestamp VARCHAR(255),
|
captured_timestamp VARCHAR(255),
|
||||||
session_id VARCHAR(255) PRIMARY KEY,
|
session_id VARCHAR(255) PRIMARY KEY,
|
||||||
license_character VARCHAR(255) DEFAULT NULL,
|
license_character VARCHAR(255) DEFAULT NULL,
|
||||||
|
@ -138,15 +138,34 @@ class DatabaseManager:
|
||||||
car_brand VARCHAR(255) DEFAULT NULL,
|
car_brand VARCHAR(255) DEFAULT NULL,
|
||||||
car_model VARCHAR(255) DEFAULT NULL,
|
car_model VARCHAR(255) DEFAULT NULL,
|
||||||
car_body_type VARCHAR(255) DEFAULT NULL,
|
car_body_type VARCHAR(255) DEFAULT NULL,
|
||||||
created_at TIMESTAMP DEFAULT NOW(),
|
|
||||||
updated_at TIMESTAMP DEFAULT NOW()
|
updated_at TIMESTAMP DEFAULT NOW()
|
||||||
)
|
)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cur.execute(create_table_query)
|
cur.execute(create_table_query)
|
||||||
|
|
||||||
|
# Add columns if they don't exist (for existing tables)
|
||||||
|
alter_queries = [
|
||||||
|
"ALTER TABLE gas_station_1.car_frontal_info ADD COLUMN IF NOT EXISTS car_brand VARCHAR(255) DEFAULT NULL",
|
||||||
|
"ALTER TABLE gas_station_1.car_frontal_info ADD COLUMN IF NOT EXISTS car_model VARCHAR(255) DEFAULT NULL",
|
||||||
|
"ALTER TABLE gas_station_1.car_frontal_info ADD COLUMN IF NOT EXISTS car_body_type VARCHAR(255) DEFAULT NULL",
|
||||||
|
"ALTER TABLE gas_station_1.car_frontal_info ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP DEFAULT NOW()"
|
||||||
|
]
|
||||||
|
|
||||||
|
for alter_query in alter_queries:
|
||||||
|
try:
|
||||||
|
cur.execute(alter_query)
|
||||||
|
logger.debug(f"Executed: {alter_query}")
|
||||||
|
except Exception as e:
|
||||||
|
# Ignore errors if column already exists (for older PostgreSQL versions)
|
||||||
|
if "already exists" in str(e).lower():
|
||||||
|
logger.debug(f"Column already exists, skipping: {alter_query}")
|
||||||
|
else:
|
||||||
|
logger.warning(f"Error in ALTER TABLE: {e}")
|
||||||
|
|
||||||
self.connection.commit()
|
self.connection.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
logger.info("Successfully created/verified car_frontal_info table in gas_station_1 schema")
|
logger.info("Successfully created/verified car_frontal_info table with all required columns")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -155,7 +174,7 @@ class DatabaseManager:
|
||||||
self.connection.rollback()
|
self.connection.rollback()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def insert_initial_detection(self, camera_id: str, captured_timestamp: str, session_id: str = None) -> str:
|
def insert_initial_detection(self, display_id: str, captured_timestamp: str, session_id: str = None) -> str:
|
||||||
"""Insert initial detection record and return the session_id."""
|
"""Insert initial detection record and return the session_id."""
|
||||||
if not self.is_connected():
|
if not self.is_connected():
|
||||||
if not self.connect():
|
if not self.connect():
|
||||||
|
@ -174,12 +193,12 @@ class DatabaseManager:
|
||||||
cur = self.connection.cursor()
|
cur = self.connection.cursor()
|
||||||
insert_query = """
|
insert_query = """
|
||||||
INSERT INTO gas_station_1.car_frontal_info
|
INSERT INTO gas_station_1.car_frontal_info
|
||||||
(camera_id, captured_timestamp, session_id, license_character, license_type, car_brand, car_model, car_body_type)
|
(display_id, captured_timestamp, session_id, license_character, license_type, car_brand, car_model, car_body_type)
|
||||||
VALUES (%s, %s, %s, NULL, 'No model available', NULL, NULL, NULL)
|
VALUES (%s, %s, %s, NULL, 'No model available', NULL, NULL, NULL)
|
||||||
ON CONFLICT (session_id) DO NOTHING
|
ON CONFLICT (session_id) DO NOTHING
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cur.execute(insert_query, (camera_id, captured_timestamp, session_id))
|
cur.execute(insert_query, (display_id, captured_timestamp, session_id))
|
||||||
self.connection.commit()
|
self.connection.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
logger.info(f"Inserted initial detection record with session_id: {session_id}")
|
logger.info(f"Inserted initial detection record with session_id: {session_id}")
|
||||||
|
|
|
@ -666,11 +666,11 @@ def run_pipeline(frame, node: dict, return_bbox: bool=False, context=None):
|
||||||
generated_session_id = str(uuid_lib.uuid4())
|
generated_session_id = str(uuid_lib.uuid4())
|
||||||
|
|
||||||
# Insert initial detection record
|
# Insert initial detection record
|
||||||
camera_id = detection_result.get("camera_id", "unknown")
|
display_id = detection_result.get("display_id", "unknown")
|
||||||
timestamp = datetime.now().strftime("%Y-%m-%dT%H-%M-%S")
|
timestamp = datetime.now().strftime("%Y-%m-%dT%H-%M-%S")
|
||||||
|
|
||||||
inserted_session_id = node["db_manager"].insert_initial_detection(
|
inserted_session_id = node["db_manager"].insert_initial_detection(
|
||||||
camera_id=camera_id,
|
display_id=display_id,
|
||||||
captured_timestamp=timestamp,
|
captured_timestamp=timestamp,
|
||||||
session_id=generated_session_id
|
session_id=generated_session_id
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue