import oracledb dsn = "localhost:1521/sisvietnam" conn = oracledb.connect(user="sisvietnam", password="sisvietnam", dsn=dsn) cursor = conn.cursor() # Get primaryMenu ID cursor.execute("SELECT id FROM SIS_MENU WHERE name = 'primaryMenu'") menu = cursor.fetchone() if not menu: print("primaryMenu not found") exit(1) menu_id = menu[0] # Get CHUYÊN KHOA ID cursor.execute("SELECT id FROM SIS_MENU_ITEM WHERE menu_id = :1 AND UPPER(title) = 'CHUYÊN KHOA'", [menu_id]) parent_item = cursor.fetchone() if not parent_item: print("CHUYÊN KHOA menu item not found") exit(1) parent_id = parent_item[0] # Get existing children to calculate item_order cursor.execute("SELECT MAX(item_order) FROM SIS_MENU_ITEM WHERE parent_id = :1", [parent_id]) max_order = cursor.fetchone()[0] if max_order is None: max_order = 0 # Get all specialties cursor.execute("SELECT title, slug FROM SIS_PAGE WHERE layout = 'SPECIALTY_DETAIL' ORDER BY title") specialties = cursor.fetchall() print(f"Found {len(specialties)} specialties to add.") # Add to menu count = 0 for spec in specialties: title = spec[0] slug = spec[1] url = f"/chuyen-khoa/{slug}" # Check if already exists cursor.execute("SELECT id FROM SIS_MENU_ITEM WHERE parent_id = :1 AND url = :2", [parent_id, url]) if cursor.fetchone(): print(f"Skipping {title}, already exists in menu.") continue max_order += 1 # Get sequence for ID cursor.execute("SELECT sequence_generator.nextval FROM dual") seq_val = cursor.fetchone()[0] cursor.execute(""" INSERT INTO SIS_MENU_ITEM (id, menu_id, parent_id, title, url, item_order, css_class, icon_class) VALUES (:1, :2, :3, :4, :5, :6, :7, :8) """, [seq_val, menu_id, parent_id, title, url, max_order, '', '']) count += 1 print(f"Added {title} ({url})") conn.commit() print(f"Successfully added {count} items to menu.")