Done feature 3 fully with postgresql integration

This commit is contained in:
ziesorx 2025-08-10 17:55:02 +07:00
parent 81547311d8
commit c4179b3b08
2 changed files with 27 additions and 8 deletions

View file

@ -130,7 +130,7 @@ class DatabaseManager:
# Create table if it doesn't exist
create_table_query = """
CREATE TABLE IF NOT EXISTS gas_station_1.car_frontal_info (
camera_id VARCHAR(255),
display_id VARCHAR(255),
captured_timestamp VARCHAR(255),
session_id VARCHAR(255) PRIMARY KEY,
license_character VARCHAR(255) DEFAULT NULL,
@ -138,15 +138,34 @@ class DatabaseManager:
car_brand VARCHAR(255) DEFAULT NULL,
car_model VARCHAR(255) DEFAULT NULL,
car_body_type VARCHAR(255) DEFAULT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
)
"""
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()
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
except Exception as e:
@ -155,7 +174,7 @@ class DatabaseManager:
self.connection.rollback()
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."""
if not self.is_connected():
if not self.connect():
@ -174,12 +193,12 @@ class DatabaseManager:
cur = self.connection.cursor()
insert_query = """
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)
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()
cur.close()
logger.info(f"Inserted initial detection record with session_id: {session_id}")

View file

@ -666,11 +666,11 @@ def run_pipeline(frame, node: dict, return_bbox: bool=False, context=None):
generated_session_id = str(uuid_lib.uuid4())
# 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")
inserted_session_id = node["db_manager"].insert_initial_detection(
camera_id=camera_id,
display_id=display_id,
captured_timestamp=timestamp,
session_id=generated_session_id
)