Clean up sql directory after production sync
- Remove 27 completed one-off migration scripts - Remove old backup file (dev-backup-20251120) - Remove completed shell scripts for prod import/export - Archive migration_phase1-4 directories and documentation - Keep only view_consolidation.sql as active script All migrations have been applied to production. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 01: Create Network Device Machine Types
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Add machinetypes for network infrastructure devices
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: < 1 minute
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Add Network Device Machine Types
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 01' AS '';
|
||||
SELECT 'Creating Network Device Machine Types' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Insert new machinetypes for network infrastructure
|
||||
-- Skipping machinetypeid 30-36 if they already exist
|
||||
INSERT INTO machinetypes (machinetypeid, machinetype, machinedescription, isactive)
|
||||
VALUES
|
||||
(30, 'Server', 'Physical or virtual server', 1),
|
||||
(31, 'Switch', 'Network switch', 1),
|
||||
(32, 'Camera', 'IP camera or security camera', 1),
|
||||
(33, 'Access Point', 'Wireless access point', 1),
|
||||
(34, 'IDF', 'Intermediate Distribution Frame / Network closet', 1),
|
||||
(35, 'Router', 'Network router', 1),
|
||||
(36, 'Firewall', 'Network firewall / Security appliance', 1)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
machinetype = VALUES(machinetype),
|
||||
machinedescription = VALUES(machinedescription);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Verify Creation
|
||||
-- =====================================================
|
||||
|
||||
SELECT '✓ Network device machinetypes created' AS status;
|
||||
|
||||
SELECT
|
||||
machinetypeid,
|
||||
machinetype,
|
||||
machinedescription,
|
||||
isactive
|
||||
FROM machinetypes
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
ORDER BY machinetypeid;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Show Full Machine Type Structure
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Current Machine Type Structure:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SELECT
|
||||
CASE
|
||||
WHEN machinetypeid BETWEEN 1 AND 24 THEN '1. Equipment'
|
||||
WHEN machinetypeid BETWEEN 25 AND 29 THEN '2. PCs'
|
||||
WHEN machinetypeid BETWEEN 30 AND 36 THEN '3. Network Devices'
|
||||
ELSE '4. Other'
|
||||
END AS group_name,
|
||||
COUNT(*) AS type_count
|
||||
FROM machinetypes
|
||||
WHERE isactive = 1
|
||||
GROUP BY group_name
|
||||
ORDER BY group_name;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 01 completed successfully' AS status;
|
||||
SELECT 'Next: Run 02_migrate_servers_to_machines.sql' AS next_step;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- Machine Type ID Ranges:
|
||||
-- 1-24: Equipment (CNC machines, mills, lathes, etc.)
|
||||
-- 25-29: PCs (Standard, Shopfloor, Engineer, Server, Laptop)
|
||||
-- 30-36: Network Devices (Server, Switch, Camera, AP, IDF, Router, Firewall)
|
||||
--
|
||||
-- Filtering Examples:
|
||||
-- - All equipment: WHERE pctypeid IS NULL AND machinetypeid BETWEEN 1 AND 24
|
||||
-- - All PCs: WHERE pctypeid IS NOT NULL
|
||||
-- - All network: WHERE pctypeid IS NULL AND machinetypeid BETWEEN 30 AND 36
|
||||
-- - All servers: WHERE machinetypeid = 30
|
||||
-- =====================================================
|
||||
198
sql/archive/migration_phase3/02_migrate_servers_to_machines.sql
Normal file
198
sql/archive/migration_phase3/02_migrate_servers_to_machines.sql
Normal file
@@ -0,0 +1,198 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 02: Migrate Servers to machines Table
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Migrate all servers from servers table to machines table
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: 1-2 minutes
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Pre-Migration Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 02' AS '';
|
||||
SELECT 'Migrating Servers to machines Table' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count servers to migrate
|
||||
SELECT 'Pre-migration server count:' AS status, COUNT(*) AS server_count
|
||||
FROM servers
|
||||
WHERE isactive = 1;
|
||||
|
||||
-- Check for any conflicts
|
||||
SELECT 'Checking for conflicts...' AS status;
|
||||
|
||||
SELECT COUNT(*) AS potential_conflicts
|
||||
FROM servers s
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = s.serialnumber
|
||||
AND m.machinetypeid = 30
|
||||
);
|
||||
|
||||
-- If conflicts found, show them
|
||||
SELECT s.serverid, s.serialnumber, s.description
|
||||
FROM servers s
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = s.serialnumber
|
||||
AND m.machinetypeid = 30
|
||||
)
|
||||
LIMIT 10;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Create Temporary Mapping Table
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating server mapping table...' AS status;
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS temp_server_mapping (
|
||||
old_serverid INT,
|
||||
new_machineid INT,
|
||||
PRIMARY KEY (old_serverid)
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Migrate Servers to machines Table
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Migrating servers to machines table...' AS status;
|
||||
|
||||
INSERT INTO machines (
|
||||
machinenumber,
|
||||
alias,
|
||||
modelnumberid,
|
||||
machinetypeid,
|
||||
pctypeid,
|
||||
serialnumber,
|
||||
machinenotes,
|
||||
mapleft,
|
||||
maptop,
|
||||
isactive,
|
||||
dateadded,
|
||||
lastupdated
|
||||
)
|
||||
SELECT
|
||||
-- Generate machinenumber: SERVER-{serverid} or use description
|
||||
CASE
|
||||
WHEN s.description IS NOT NULL AND s.description != ''
|
||||
THEN CONCAT('SVR-', LPAD(s.serverid, 4, '0'))
|
||||
ELSE CONCAT('SERVER-', s.serverid)
|
||||
END AS machinenumber,
|
||||
|
||||
-- alias from description
|
||||
COALESCE(s.description, '') AS alias,
|
||||
|
||||
-- modelnumberid
|
||||
s.modelid AS modelnumberid,
|
||||
|
||||
-- machinetypeid = 30 (Server)
|
||||
30 AS machinetypeid,
|
||||
|
||||
-- pctypeid = NULL (not a PC)
|
||||
NULL AS pctypeid,
|
||||
|
||||
-- serialnumber
|
||||
s.serialnumber,
|
||||
|
||||
-- machinenotes (empty for now)
|
||||
'' AS machinenotes,
|
||||
|
||||
-- map coordinates (servers table doesn't have map fields)
|
||||
NULL AS mapleft,
|
||||
NULL AS maptop,
|
||||
|
||||
-- isactive
|
||||
s.isactive,
|
||||
|
||||
-- dateadded - servers table doesn't have this column
|
||||
NOW() AS dateadded,
|
||||
|
||||
-- lastupdated
|
||||
NOW() AS lastupdated
|
||||
FROM servers s
|
||||
WHERE s.isactive = 1
|
||||
AND NOT EXISTS (
|
||||
-- Avoid duplicates if script run multiple times
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = s.serialnumber
|
||||
AND m.machinetypeid = 30
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Create Mapping from Old to New IDs
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating ID mapping...' AS status;
|
||||
|
||||
INSERT INTO temp_server_mapping (old_serverid, new_machineid)
|
||||
SELECT
|
||||
s.serverid,
|
||||
m.machineid
|
||||
FROM servers s
|
||||
JOIN machines m ON m.serialnumber = s.serialnumber AND m.machinetypeid = 30
|
||||
WHERE s.isactive = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 5: Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Migration Verification:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count migrated servers
|
||||
SELECT 'Servers in machines table:' AS status, COUNT(*) AS migrated_count
|
||||
FROM machines
|
||||
WHERE machinetypeid = 30;
|
||||
|
||||
-- Show sample of migrated servers
|
||||
SELECT 'Sample migrated servers:' AS status;
|
||||
|
||||
SELECT
|
||||
m.machineid,
|
||||
m.machinenumber,
|
||||
m.alias,
|
||||
m.serialnumber,
|
||||
mo.modelnumber,
|
||||
v.vendor
|
||||
FROM machines m
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
WHERE m.machinetypeid = 30
|
||||
ORDER BY m.machineid
|
||||
LIMIT 10;
|
||||
|
||||
-- Show mapping stats
|
||||
SELECT 'ID mapping created:' AS status, COUNT(*) AS mapping_count
|
||||
FROM temp_server_mapping;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 02 completed successfully' AS status;
|
||||
SELECT 'Next: Run 03_migrate_switches_to_machines.sql' AS next_step;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- Old servers table is NOT dropped - kept for rollback safety
|
||||
-- Mapping table temp_server_mapping persists for this session
|
||||
-- Will be used by later scripts to migrate communications and relationships
|
||||
--
|
||||
-- To verify a specific server migrated:
|
||||
-- SELECT * FROM machines WHERE machinetypeid = 30 AND serialnumber = 'YOUR_SERIAL';
|
||||
--
|
||||
-- To see old vs new:
|
||||
-- SELECT s.*, m.machineid, m.machinenumber
|
||||
-- FROM servers s
|
||||
-- JOIN machines m ON s.serialnumber = m.serialnumber AND m.machinetypeid = 30
|
||||
-- WHERE s.serverid = YOUR_SERVERID;
|
||||
-- =====================================================
|
||||
190
sql/archive/migration_phase3/03_migrate_switches_to_machines.sql
Normal file
190
sql/archive/migration_phase3/03_migrate_switches_to_machines.sql
Normal file
@@ -0,0 +1,190 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 03: Migrate Switches to machines Table
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Migrate all switches from switches table to machines table
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: 1-2 minutes
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Pre-Migration Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 03' AS '';
|
||||
SELECT 'Migrating Switches to machines Table' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count switches to migrate
|
||||
SELECT 'Pre-migration switch count:' AS status, COUNT(*) AS switch_count
|
||||
FROM switches
|
||||
WHERE isactive = 1;
|
||||
|
||||
-- Check for any conflicts
|
||||
SELECT 'Checking for conflicts...' AS status;
|
||||
|
||||
SELECT COUNT(*) AS potential_conflicts
|
||||
FROM switches s
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = s.serialnumber
|
||||
AND m.machinetypeid = 31
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Create Temporary Mapping Table
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating switch mapping table...' AS status;
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS temp_switch_mapping (
|
||||
old_switchid INT,
|
||||
new_machineid INT,
|
||||
PRIMARY KEY (old_switchid)
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Migrate Switches to machines Table
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Migrating switches to machines table...' AS status;
|
||||
|
||||
INSERT INTO machines (
|
||||
machinenumber,
|
||||
alias,
|
||||
modelnumberid,
|
||||
machinetypeid,
|
||||
pctypeid,
|
||||
serialnumber,
|
||||
machinenotes,
|
||||
mapleft,
|
||||
maptop,
|
||||
isactive,
|
||||
dateadded,
|
||||
lastupdated
|
||||
)
|
||||
SELECT
|
||||
-- Generate machinenumber: SW-{switchid} or use description
|
||||
CASE
|
||||
WHEN s.description IS NOT NULL AND s.description != ''
|
||||
THEN CONCAT('SW-', LPAD(s.switchid, 4, '0'))
|
||||
ELSE CONCAT('SWITCH-', s.switchid)
|
||||
END AS machinenumber,
|
||||
|
||||
-- alias from description
|
||||
COALESCE(s.description, '') AS alias,
|
||||
|
||||
-- modelnumberid
|
||||
s.modelid AS modelnumberid,
|
||||
|
||||
-- machinetypeid = 31 (Switch)
|
||||
31 AS machinetypeid,
|
||||
|
||||
-- pctypeid = NULL (not a PC)
|
||||
NULL AS pctypeid,
|
||||
|
||||
-- serialnumber
|
||||
s.serialnumber,
|
||||
|
||||
-- machinenotes (empty for now)
|
||||
'' AS machinenotes,
|
||||
|
||||
-- map coordinates
|
||||
COALESCE(s.mapleft, 50) AS mapleft,
|
||||
COALESCE(s.maptop, 50) AS maptop,
|
||||
|
||||
-- isactive
|
||||
s.isactive,
|
||||
|
||||
-- dateadded - preserve or use current time
|
||||
NOW() AS dateadded,
|
||||
|
||||
-- lastupdated
|
||||
NOW() AS lastupdated
|
||||
FROM switches s
|
||||
WHERE s.isactive = 1
|
||||
AND NOT EXISTS (
|
||||
-- Avoid duplicates if script run multiple times
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = s.serialnumber
|
||||
AND m.machinetypeid = 31
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Create Mapping from Old to New IDs
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating ID mapping...' AS status;
|
||||
|
||||
INSERT INTO temp_switch_mapping (old_switchid, new_machineid)
|
||||
SELECT
|
||||
s.switchid,
|
||||
m.machineid
|
||||
FROM switches s
|
||||
JOIN machines m ON m.serialnumber = s.serialnumber AND m.machinetypeid = 31
|
||||
WHERE s.isactive = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 5: Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Migration Verification:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count migrated switches
|
||||
SELECT 'Switches in machines table:' AS status, COUNT(*) AS migrated_count
|
||||
FROM machines
|
||||
WHERE machinetypeid = 31;
|
||||
|
||||
-- Show sample of migrated switches
|
||||
SELECT 'Sample migrated switches:' AS status;
|
||||
|
||||
SELECT
|
||||
m.machineid,
|
||||
m.machinenumber,
|
||||
m.alias,
|
||||
m.serialnumber,
|
||||
mo.modelnumber,
|
||||
v.vendor
|
||||
FROM machines m
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
WHERE m.machinetypeid = 31
|
||||
ORDER BY m.machineid
|
||||
LIMIT 10;
|
||||
|
||||
-- Show mapping stats
|
||||
SELECT 'ID mapping created:' AS status, COUNT(*) AS mapping_count
|
||||
FROM temp_switch_mapping;
|
||||
|
||||
-- Summary of all network devices so far
|
||||
SELECT 'Current network device totals:' AS status;
|
||||
SELECT
|
||||
mt.machinetype,
|
||||
COUNT(*) AS count
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 03 completed successfully' AS status;
|
||||
SELECT 'Next: Run 04_migrate_cameras_to_machines.sql' AS next_step;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- Old switches table is NOT dropped - kept for rollback safety
|
||||
-- Mapping table temp_switch_mapping persists for this session
|
||||
-- Will be used by later scripts to migrate communications and relationships
|
||||
-- =====================================================
|
||||
191
sql/archive/migration_phase3/04_migrate_cameras_to_machines.sql
Normal file
191
sql/archive/migration_phase3/04_migrate_cameras_to_machines.sql
Normal file
@@ -0,0 +1,191 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 04: Migrate Cameras to machines Table
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Migrate all cameras from cameras table to machines table
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: 1-2 minutes
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Pre-Migration Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 04' AS '';
|
||||
SELECT 'Migrating Cameras to machines Table' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count cameras to migrate
|
||||
SELECT 'Pre-migration camera count:' AS status, COUNT(*) AS camera_count
|
||||
FROM cameras
|
||||
WHERE isactive = 1;
|
||||
|
||||
-- Check for any conflicts
|
||||
SELECT 'Checking for conflicts...' AS status;
|
||||
|
||||
SELECT COUNT(*) AS potential_conflicts
|
||||
FROM cameras c
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = c.serialnumber
|
||||
AND m.machinetypeid = 32
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Create Temporary Mapping Table
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating camera mapping table...' AS status;
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS temp_camera_mapping (
|
||||
old_cameraid INT,
|
||||
new_machineid INT,
|
||||
PRIMARY KEY (old_cameraid)
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Migrate Cameras to machines Table
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Migrating cameras to machines table...' AS status;
|
||||
|
||||
INSERT INTO machines (
|
||||
machinenumber,
|
||||
alias,
|
||||
modelnumberid,
|
||||
machinetypeid,
|
||||
pctypeid,
|
||||
serialnumber,
|
||||
machinenotes,
|
||||
mapleft,
|
||||
maptop,
|
||||
isactive,
|
||||
dateadded,
|
||||
lastupdated
|
||||
)
|
||||
SELECT
|
||||
-- Generate machinenumber: CAM-{cameraid} or use description
|
||||
CASE
|
||||
WHEN c.description IS NOT NULL AND c.description != ''
|
||||
THEN CONCAT('CAM-', LPAD(c.cameraid, 4, '0'))
|
||||
ELSE CONCAT('CAMERA-', c.cameraid)
|
||||
END AS machinenumber,
|
||||
|
||||
-- alias from description
|
||||
COALESCE(c.description, '') AS alias,
|
||||
|
||||
-- modelnumberid
|
||||
c.modelid AS modelnumberid,
|
||||
|
||||
-- machinetypeid = 32 (Camera)
|
||||
32 AS machinetypeid,
|
||||
|
||||
-- pctypeid = NULL (not a PC)
|
||||
NULL AS pctypeid,
|
||||
|
||||
-- serialnumber
|
||||
c.serialnumber,
|
||||
|
||||
-- machinenotes (empty for now)
|
||||
'' AS machinenotes,
|
||||
|
||||
-- map coordinates
|
||||
COALESCE(c.mapleft, 50) AS mapleft,
|
||||
COALESCE(c.maptop, 50) AS maptop,
|
||||
|
||||
-- isactive
|
||||
c.isactive,
|
||||
|
||||
-- dateadded - preserve or use current time
|
||||
NOW() AS dateadded,
|
||||
|
||||
-- lastupdated
|
||||
NOW() AS lastupdated
|
||||
FROM cameras c
|
||||
WHERE c.isactive = 1
|
||||
AND NOT EXISTS (
|
||||
-- Avoid duplicates if script run multiple times
|
||||
SELECT 1 FROM machines m
|
||||
WHERE m.serialnumber = c.serialnumber
|
||||
AND m.machinetypeid = 32
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Create Mapping from Old to New IDs
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating ID mapping...' AS status;
|
||||
|
||||
INSERT INTO temp_camera_mapping (old_cameraid, new_machineid)
|
||||
SELECT
|
||||
c.cameraid,
|
||||
m.machineid
|
||||
FROM cameras c
|
||||
JOIN machines m ON m.serialnumber = c.serialnumber AND m.machinetypeid = 32
|
||||
WHERE c.isactive = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 5: Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Migration Verification:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count migrated cameras
|
||||
SELECT 'Cameras in machines table:' AS status, COUNT(*) AS migrated_count
|
||||
FROM machines
|
||||
WHERE machinetypeid = 32;
|
||||
|
||||
-- Show sample of migrated cameras
|
||||
SELECT 'Sample migrated cameras:' AS status;
|
||||
|
||||
SELECT
|
||||
m.machineid,
|
||||
m.machinenumber,
|
||||
m.alias,
|
||||
m.serialnumber,
|
||||
mo.modelnumber,
|
||||
v.vendor
|
||||
FROM machines m
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
WHERE m.machinetypeid = 32
|
||||
ORDER BY m.machineid
|
||||
LIMIT 10;
|
||||
|
||||
-- Show mapping stats
|
||||
SELECT 'ID mapping created:' AS status, COUNT(*) AS mapping_count
|
||||
FROM temp_camera_mapping;
|
||||
|
||||
-- Summary of all network devices so far
|
||||
SELECT 'Current network device totals:' AS status;
|
||||
SELECT
|
||||
mt.machinetype,
|
||||
COUNT(*) AS count
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 04 completed successfully' AS status;
|
||||
SELECT 'Next: Run 07_migrate_network_communications.sql' AS next_step;
|
||||
SELECT 'Note: Skipping 05/06 if accesspoints/idfs tables do not exist' AS note;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- Old cameras table is NOT dropped - kept for rollback safety
|
||||
-- Mapping table temp_camera_mapping persists for this session
|
||||
-- Will be used by later scripts to migrate communications and relationships
|
||||
-- =====================================================
|
||||
@@ -0,0 +1,219 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 07: Migrate Network Communications
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Migrate IP addresses from device tables to communications table
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: 1-2 minutes
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Pre-Migration Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 07' AS '';
|
||||
SELECT 'Migrating Network Device Communications' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count devices with IP addresses
|
||||
SELECT 'Servers with IPs:' AS device_type, COUNT(*) AS count
|
||||
FROM servers WHERE ipaddress IS NOT NULL AND ipaddress != ''
|
||||
UNION ALL
|
||||
SELECT 'Switches with IPs:', COUNT(*)
|
||||
FROM switches WHERE ipaddress IS NOT NULL AND ipaddress != ''
|
||||
UNION ALL
|
||||
SELECT 'Cameras with IPs:', COUNT(*)
|
||||
FROM cameras WHERE ipaddress IS NOT NULL AND ipaddress != '';
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Migrate Server IP Addresses
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Migrating server IP addresses...' AS status;
|
||||
|
||||
INSERT INTO communications (
|
||||
machineid,
|
||||
comstypeid,
|
||||
address,
|
||||
macaddress,
|
||||
isprimary,
|
||||
isactive,
|
||||
description
|
||||
)
|
||||
SELECT
|
||||
m.machineid,
|
||||
1 AS comstypeid, -- IP type
|
||||
s.ipaddress AS address,
|
||||
NULL AS macaddress, -- Servers table doesn't have MAC
|
||||
1 AS isprimary,
|
||||
1 AS isactive,
|
||||
'Migrated from servers table' AS description
|
||||
FROM servers s
|
||||
JOIN machines m ON m.serialnumber = s.serialnumber AND m.machinetypeid = 30
|
||||
WHERE s.ipaddress IS NOT NULL
|
||||
AND s.ipaddress != ''
|
||||
AND s.isactive = 1
|
||||
AND NOT EXISTS (
|
||||
-- Avoid duplicates
|
||||
SELECT 1 FROM communications c
|
||||
WHERE c.machineid = m.machineid
|
||||
AND c.address = s.ipaddress
|
||||
);
|
||||
|
||||
SELECT 'Server IPs migrated:' AS status, ROW_COUNT() AS migrated_count;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Migrate Switch IP Addresses
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Migrating switch IP addresses...' AS status;
|
||||
|
||||
INSERT INTO communications (
|
||||
machineid,
|
||||
comstypeid,
|
||||
address,
|
||||
macaddress,
|
||||
isprimary,
|
||||
isactive,
|
||||
description
|
||||
)
|
||||
SELECT
|
||||
m.machineid,
|
||||
1 AS comstypeid, -- IP type
|
||||
s.ipaddress AS address,
|
||||
NULL AS macaddress, -- Switches table doesn't have MAC
|
||||
1 AS isprimary,
|
||||
1 AS isactive,
|
||||
'Migrated from switches table' AS description
|
||||
FROM switches s
|
||||
JOIN machines m ON m.serialnumber = s.serialnumber AND m.machinetypeid = 31
|
||||
WHERE s.ipaddress IS NOT NULL
|
||||
AND s.ipaddress != ''
|
||||
AND s.isactive = 1
|
||||
AND NOT EXISTS (
|
||||
-- Avoid duplicates
|
||||
SELECT 1 FROM communications c
|
||||
WHERE c.machineid = m.machineid
|
||||
AND c.address = s.ipaddress
|
||||
);
|
||||
|
||||
SELECT 'Switch IPs migrated:' AS status, ROW_COUNT() AS migrated_count;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Migrate Camera IP Addresses
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Migrating camera IP addresses...' AS status;
|
||||
|
||||
INSERT INTO communications (
|
||||
machineid,
|
||||
comstypeid,
|
||||
address,
|
||||
macaddress,
|
||||
isprimary,
|
||||
isactive,
|
||||
description
|
||||
)
|
||||
SELECT
|
||||
m.machineid,
|
||||
1 AS comstypeid, -- IP type
|
||||
c.ipaddress AS address,
|
||||
NULL AS macaddress, -- Cameras table doesn't have MAC
|
||||
1 AS isprimary,
|
||||
1 AS isactive,
|
||||
'Migrated from cameras table' AS description
|
||||
FROM cameras c
|
||||
JOIN machines m ON m.serialnumber = c.serialnumber AND m.machinetypeid = 32
|
||||
WHERE c.ipaddress IS NOT NULL
|
||||
AND c.ipaddress != ''
|
||||
AND c.isactive = 1
|
||||
AND NOT EXISTS (
|
||||
-- Avoid duplicates
|
||||
SELECT 1 FROM communications comm
|
||||
WHERE comm.machineid = m.machineid
|
||||
AND comm.address = c.ipaddress
|
||||
);
|
||||
|
||||
SELECT 'Camera IPs migrated:' AS status, ROW_COUNT() AS migrated_count;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 5: Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Migration Verification:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Count communications by device type
|
||||
SELECT 'Communications by device type:' AS status;
|
||||
|
||||
SELECT
|
||||
mt.machinetype,
|
||||
COUNT(DISTINCT m.machineid) AS total_devices,
|
||||
COUNT(DISTINCT c.machineid) AS devices_with_ip,
|
||||
COUNT(c.comid) AS total_communications
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
LEFT JOIN communications c ON m.machineid = c.machineid AND c.comstypeid = 1
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
-- Show sample communications
|
||||
SELECT 'Sample network device communications:' AS status;
|
||||
|
||||
SELECT
|
||||
m.machinenumber,
|
||||
mt.machinetype,
|
||||
c.address AS ip_address,
|
||||
c.isprimary,
|
||||
c.description
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
JOIN communications c ON m.machineid = c.machineid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
AND c.comstypeid = 1
|
||||
ORDER BY mt.machinetypeid, m.machinenumber
|
||||
LIMIT 20;
|
||||
|
||||
-- Check for devices without IPs (expected for some)
|
||||
SELECT 'Devices without IP addresses:' AS status;
|
||||
|
||||
SELECT
|
||||
mt.machinetype,
|
||||
COUNT(*) AS count_without_ip
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM communications c
|
||||
WHERE c.machineid = m.machineid
|
||||
AND c.comstypeid = 1
|
||||
)
|
||||
GROUP BY mt.machinetype;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 07 completed successfully' AS status;
|
||||
SELECT 'Next: Run 08_create_network_relationship_types.sql' AS next_step;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- All IP addresses migrated to communications table with comstypeid = 1 (IP)
|
||||
-- isprimary = 1 for all migrated IPs (assumed primary interface)
|
||||
-- MAC addresses not migrated (old tables don't have them)
|
||||
--
|
||||
-- To verify a specific device's IP:
|
||||
-- SELECT m.machinenumber, c.address
|
||||
-- FROM machines m
|
||||
-- JOIN communications c ON m.machineid = c.machineid
|
||||
-- WHERE m.machinetypeid = 30 AND m.machinenumber = 'SVR-0001';
|
||||
-- =====================================================
|
||||
@@ -0,0 +1,125 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 08: Create Network Relationship Types
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Add new relationship types for network infrastructure
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: < 1 minute
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Show Existing Relationship Types
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 08' AS '';
|
||||
SELECT 'Creating Network Relationship Types' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SELECT 'Existing relationship types:' AS status;
|
||||
|
||||
SELECT
|
||||
relationshiptypeid,
|
||||
relationshiptype,
|
||||
description,
|
||||
displayorder
|
||||
FROM relationshiptypes
|
||||
WHERE isactive = 1
|
||||
ORDER BY relationshiptypeid;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Add New Network Relationship Types
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Adding new network relationship types...' AS status;
|
||||
|
||||
-- Insert new relationship types
|
||||
-- Using explicit IDs to maintain consistency
|
||||
INSERT INTO relationshiptypes (relationshiptype, description, isactive)
|
||||
VALUES
|
||||
('Connected To', 'Device physically connected to network infrastructure', 1),
|
||||
('Powered By', 'Device powered by this power source', 1),
|
||||
('Mounted In', 'Device mounted in this rack or cabinet', 1),
|
||||
('Feeds Video To', 'Camera feeds video stream to this server/NVR', 1),
|
||||
('Provides Network', 'Infrastructure provides network connectivity to device', 1)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
description = VALUES(description);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Relationship Types After Migration:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SELECT
|
||||
relationshiptypeid,
|
||||
relationshiptype,
|
||||
description,
|
||||
displayorder,
|
||||
CASE
|
||||
WHEN relationshiptypeid <= 6 THEN 'Legacy'
|
||||
ELSE 'Network (New)'
|
||||
END AS category
|
||||
FROM relationshiptypes
|
||||
WHERE isactive = 1
|
||||
ORDER BY relationshiptypeid;
|
||||
|
||||
-- Show counts
|
||||
SELECT 'Total relationship types:' AS status, COUNT(*) AS total_count
|
||||
FROM relationshiptypes
|
||||
WHERE isactive = 1;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 08 completed successfully' AS status;
|
||||
SELECT 'Next: Run 09_update_views_for_network_devices.sql' AS next_step;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- New Relationship Types Added:
|
||||
--
|
||||
-- 1. Connected To (directional)
|
||||
-- - Use for: Camera → Switch, Switch → IDF, etc.
|
||||
-- - Example: CAM-0001 is Connected To SW-Core-01
|
||||
--
|
||||
-- 2. Powered By (directional)
|
||||
-- - Use for: Device → Power Source
|
||||
-- - Example: SW-Floor-01 Powered By UPS-Room-A
|
||||
--
|
||||
-- 3. Mounted In (directional)
|
||||
-- - Use for: Device → Rack/Cabinet
|
||||
-- - Example: SVR-0001 Mounted In Rack-A-01
|
||||
--
|
||||
-- 4. Feeds Video To (directional)
|
||||
-- - Use for: Camera → Server/NVR
|
||||
-- - Example: CAM-Shop-01 Feeds Video To SVR-Security-01
|
||||
--
|
||||
-- 5. Provides Network (directional)
|
||||
-- - Use for: Infrastructure → Device
|
||||
-- - Example: IDF-Building-A Provides Network to SW-Floor-02
|
||||
--
|
||||
-- Usage Examples:
|
||||
--
|
||||
-- Camera connected to switch:
|
||||
-- INSERT INTO machinerelationships (machineid, related_machineid, relationshiptypeid)
|
||||
-- SELECT
|
||||
-- (SELECT machineid FROM machines WHERE machinenumber = 'CAM-Shop-01'),
|
||||
-- (SELECT machineid FROM machines WHERE machinenumber = 'SW-Core-01'),
|
||||
-- (SELECT relationshiptypeid FROM relationshiptypes WHERE relationshiptype = 'Connected To');
|
||||
--
|
||||
-- Switch connected to IDF:
|
||||
-- INSERT INTO machinerelationships (machineid, related_machineid, relationshiptypeid)
|
||||
-- SELECT
|
||||
-- (SELECT machineid FROM machines WHERE machinenumber = 'SW-Core-01'),
|
||||
-- (SELECT machineid FROM machines WHERE machinenumber = 'IDF-Building-A'),
|
||||
-- (SELECT relationshiptypeid FROM relationshiptypes WHERE relationshiptype = 'Connected To');
|
||||
-- =====================================================
|
||||
@@ -0,0 +1,231 @@
|
||||
-- =====================================================
|
||||
-- SCRIPT 09: Update Views for Network Devices
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Create/update views to include network devices
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Status: REVERSIBLE (see ROLLBACK script)
|
||||
-- Estimated Time: < 1 minute
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Create Unified Infrastructure View
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'Phase 3 Migration - Script 09' AS '';
|
||||
SELECT 'Creating/Updating Views for Network Devices' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SELECT 'Creating vw_all_infrastructure view...' AS status;
|
||||
|
||||
-- Drop if exists
|
||||
DROP VIEW IF EXISTS vw_all_infrastructure;
|
||||
|
||||
-- Create comprehensive view of all infrastructure
|
||||
CREATE VIEW vw_all_infrastructure AS
|
||||
SELECT
|
||||
m.machineid,
|
||||
m.machinenumber,
|
||||
m.alias,
|
||||
mt.machinetype,
|
||||
|
||||
mo.modelnumber,
|
||||
v.vendor,
|
||||
m.serialnumber,
|
||||
c.address AS ipaddress,
|
||||
c.macaddress,
|
||||
m.mapleft,
|
||||
m.maptop,
|
||||
m.dateadded,
|
||||
m.lastupdated,
|
||||
CASE
|
||||
WHEN m.pctypeid IS NOT NULL THEN 'PC'
|
||||
WHEN mt.machinetypeid BETWEEN 30 AND 36 THEN 'Network Device'
|
||||
WHEN mt.machinetypeid BETWEEN 1 AND 24 THEN 'Equipment'
|
||||
ELSE 'Other'
|
||||
END AS device_category,
|
||||
m.isactive
|
||||
FROM machines m
|
||||
LEFT JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
LEFT JOIN communications c ON m.machineid = c.machineid AND c.isprimary = 1 AND c.comstypeid = 1
|
||||
WHERE m.isactive = 1;
|
||||
|
||||
SELECT '✓ vw_all_infrastructure created' AS status;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Create Network Devices Summary View
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating vw_network_devices_summary view...' AS status;
|
||||
|
||||
-- Drop if exists
|
||||
DROP VIEW IF EXISTS vw_network_devices_summary;
|
||||
|
||||
-- Create network devices specific view
|
||||
CREATE VIEW vw_network_devices_summary AS
|
||||
SELECT
|
||||
m.machineid,
|
||||
m.machinenumber,
|
||||
m.alias,
|
||||
mt.machinetype,
|
||||
mo.modelnumber,
|
||||
v.vendor,
|
||||
m.serialnumber,
|
||||
c.address AS ipaddress,
|
||||
m.mapleft,
|
||||
m.maptop,
|
||||
-- Count relationships
|
||||
(SELECT COUNT(*)
|
||||
FROM machinerelationships mr
|
||||
WHERE mr.machineid = m.machineid AND mr.isactive = 1
|
||||
) AS outgoing_relationships,
|
||||
(SELECT COUNT(*)
|
||||
FROM machinerelationships mr
|
||||
WHERE mr.related_machineid = m.machineid AND mr.isactive = 1
|
||||
) AS incoming_relationships,
|
||||
m.isactive
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
LEFT JOIN communications c ON m.machineid = c.machineid AND c.isprimary = 1 AND c.comstypeid = 1
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
AND m.isactive = 1;
|
||||
|
||||
SELECT '✓ vw_network_devices_summary created' AS status;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Create Network Topology View
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Creating vw_network_topology view...' AS status;
|
||||
|
||||
-- Drop if exists
|
||||
DROP VIEW IF EXISTS vw_network_topology;
|
||||
|
||||
-- Create topology view showing device connections
|
||||
CREATE VIEW vw_network_topology AS
|
||||
SELECT
|
||||
m1.machineid AS source_machineid,
|
||||
m1.machinenumber AS source_device,
|
||||
mt1.machinetype AS source_type,
|
||||
m2.machineid AS target_machineid,
|
||||
m2.machinenumber AS target_device,
|
||||
mt2.machinetype AS target_type,
|
||||
rt.relationshiptype,
|
||||
mr.relationship_notes,
|
||||
c1.address AS source_ip,
|
||||
c2.address AS target_ip
|
||||
FROM machinerelationships mr
|
||||
JOIN relationshiptypes rt ON mr.relationshiptypeid = rt.relationshiptypeid
|
||||
JOIN machines m1 ON mr.machineid = m1.machineid
|
||||
JOIN machines m2 ON mr.related_machineid = m2.machineid
|
||||
JOIN machinetypes mt1 ON m1.machinetypeid = mt1.machinetypeid
|
||||
JOIN machinetypes mt2 ON m2.machinetypeid = mt2.machinetypeid
|
||||
LEFT JOIN communications c1 ON m1.machineid = c1.machineid AND c1.isprimary = 1
|
||||
LEFT JOIN communications c2 ON m2.machineid = c2.machineid AND c2.isprimary = 1
|
||||
WHERE mr.isactive = 1
|
||||
AND (mt1.machinetypeid BETWEEN 30 AND 36 OR mt2.machinetypeid BETWEEN 30 AND 36);
|
||||
|
||||
SELECT '✓ vw_network_topology created' AS status;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Verification - Show View Samples
|
||||
-- =====================================================
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT 'View Verification:' AS '';
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
-- Sample from all infrastructure view
|
||||
SELECT 'Sample from vw_all_infrastructure:' AS status;
|
||||
SELECT
|
||||
machinenumber,
|
||||
machinetype,
|
||||
device_category,
|
||||
vendor,
|
||||
modelnumber,
|
||||
ipaddress
|
||||
FROM vw_all_infrastructure
|
||||
LIMIT 15;
|
||||
|
||||
-- Sample from network devices summary
|
||||
SELECT 'Sample from vw_network_devices_summary:' AS status;
|
||||
SELECT
|
||||
machinenumber,
|
||||
machinetype,
|
||||
vendor,
|
||||
ipaddress,
|
||||
outgoing_relationships,
|
||||
incoming_relationships
|
||||
FROM vw_network_devices_summary
|
||||
LIMIT 10;
|
||||
|
||||
-- Device category counts
|
||||
SELECT 'Device counts by category:' AS status;
|
||||
SELECT
|
||||
device_category,
|
||||
COUNT(*) AS device_count
|
||||
FROM vw_all_infrastructure
|
||||
GROUP BY device_category
|
||||
ORDER BY device_count DESC;
|
||||
|
||||
-- Network device counts by type
|
||||
SELECT 'Network devices by type:' AS status;
|
||||
SELECT
|
||||
machinetype,
|
||||
COUNT(*) AS count
|
||||
FROM vw_network_devices_summary
|
||||
GROUP BY machinetype
|
||||
ORDER BY count DESC;
|
||||
|
||||
SELECT '========================================' AS '';
|
||||
SELECT '✓ Script 09 completed successfully' AS status;
|
||||
SELECT 'Next: Run VERIFY_PHASE3_MIGRATION.sql' AS next_step;
|
||||
SELECT '========================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- Views Created:
|
||||
--
|
||||
-- 1. vw_all_infrastructure
|
||||
-- - Shows ALL machines (equipment, PCs, network devices)
|
||||
-- - Includes device_category field for easy filtering
|
||||
-- - Primary IP address included
|
||||
--
|
||||
-- 2. vw_network_devices_summary
|
||||
-- - Network devices only (machinetypeid 30-36)
|
||||
-- - Includes relationship counts
|
||||
-- - Useful for network inventory
|
||||
--
|
||||
-- 3. vw_network_topology
|
||||
-- - Shows all relationships involving network devices
|
||||
-- - Includes both source and target device info
|
||||
-- - Useful for network diagrams and topology mapping
|
||||
--
|
||||
-- Usage Examples:
|
||||
--
|
||||
-- All network devices:
|
||||
-- SELECT * FROM vw_network_devices_summary;
|
||||
--
|
||||
-- All cameras with IPs:
|
||||
-- SELECT * FROM vw_network_devices_summary WHERE machinetype = 'Camera';
|
||||
--
|
||||
-- Network connections:
|
||||
-- SELECT * FROM vw_network_topology WHERE relationshiptype = 'Connected To';
|
||||
--
|
||||
-- All infrastructure by vendor:
|
||||
-- SELECT vendor, device_category, COUNT(*) as count
|
||||
-- FROM vw_all_infrastructure
|
||||
-- GROUP BY vendor, device_category
|
||||
-- ORDER BY vendor, device_category;
|
||||
-- =====================================================
|
||||
315
sql/archive/migration_phase3/README.md
Normal file
315
sql/archive/migration_phase3/README.md
Normal file
@@ -0,0 +1,315 @@
|
||||
# Phase 3 Migration: Network Devices to machines Table
|
||||
|
||||
**Created:** 2025-11-10
|
||||
**Status:** Ready for Testing
|
||||
**Follows:** Phase 2 (PC Migration - Completed Successfully)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This migration consolidates all network infrastructure devices (servers, switches, cameras, access points, IDFs) into the unified `machines` table, completing the infrastructure unification started with Phase 2.
|
||||
|
||||
### What Gets Migrated:
|
||||
- **Servers** → machines (machinetypeid 30)
|
||||
- **Switches** → machines (machinetypeid 31)
|
||||
- **Cameras** → machines (machinetypeid 32)
|
||||
- **Access Points** → machines (machinetypeid 33) *if table exists*
|
||||
- **IDFs** → machines (machinetypeid 34) *if table exists*
|
||||
|
||||
### What Stays Separate:
|
||||
- **Printers** → Remain in printers table (by design)
|
||||
|
||||
---
|
||||
|
||||
## Migration Scripts
|
||||
|
||||
```
|
||||
01_create_network_machinetypes.sql Creates machinetypes 30-36
|
||||
02_migrate_servers_to_machines.sql Migrates servers table
|
||||
03_migrate_switches_to_machines.sql Migrates switches table
|
||||
04_migrate_cameras_to_machines.sql Migrates cameras table
|
||||
07_migrate_network_communications.sql Migrates IP addresses
|
||||
08_create_network_relationship_types.sql Creates new relationship types
|
||||
09_update_views_for_network_devices.sql Creates/updates views
|
||||
|
||||
VERIFY_PHASE3_MIGRATION.sql Comprehensive verification
|
||||
RUN_ALL_PHASE3_SCRIPTS.sql Executes all scripts in order
|
||||
ROLLBACK_PHASE3.sql Emergency rollback
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites:
|
||||
```bash
|
||||
# 1. Backup database
|
||||
mysqldump -u root -p shopdb > shopdb_backup_$(date +%Y%m%d).sql
|
||||
|
||||
# 2. Verify Phase 2 is stable
|
||||
mysql -u root -p shopdb < ../VERIFY_PHASE2.sql # if available
|
||||
|
||||
# 3. Check current state
|
||||
mysql -u root -p shopdb -e "SELECT COUNT(*) FROM servers; SELECT COUNT(*) FROM switches; SELECT COUNT(*) FROM cameras;"
|
||||
```
|
||||
|
||||
### Test on Backup First:
|
||||
```bash
|
||||
# 1. Create test database
|
||||
mysql -u root -p -e "CREATE DATABASE shopdb_test;"
|
||||
mysql -u root -p shopdb_test < shopdb_backup_YYYYMMDD.sql
|
||||
|
||||
# 2. Run migration on test
|
||||
mysql -u root -p shopdb_test < RUN_ALL_PHASE3_SCRIPTS.sql
|
||||
|
||||
# 3. Review results
|
||||
mysql -u root -p shopdb_test < VERIFY_PHASE3_MIGRATION.sql
|
||||
```
|
||||
|
||||
### Production Migration:
|
||||
```bash
|
||||
# Only after successful test!
|
||||
mysql -u root -p shopdb < RUN_ALL_PHASE3_SCRIPTS.sql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Expected Results
|
||||
|
||||
### Before Migration:
|
||||
```
|
||||
servers: 50 records
|
||||
switches: 20 records
|
||||
cameras: 30 records
|
||||
Total: 100 devices
|
||||
```
|
||||
|
||||
### After Migration:
|
||||
```
|
||||
machines (machinetypeid 30): 50 servers
|
||||
machines (machinetypeid 31): 20 switches
|
||||
machines (machinetypeid 32): 30 cameras
|
||||
Total: 100 devices
|
||||
|
||||
communications: 100+ IP addresses
|
||||
relationshiptypes: +5 new types
|
||||
views: 3 new views created
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verification Checklist
|
||||
|
||||
Run `VERIFY_PHASE3_MIGRATION.sql` and check for:
|
||||
|
||||
- [ ] All record counts match (old vs new tables)
|
||||
- [ ] All 7 machinetypes created (30-36)
|
||||
- [ ] No NULL required fields
|
||||
- [ ] All IP addresses migrated
|
||||
- [ ] 5 new relationship types created
|
||||
- [ ] 3 views created successfully
|
||||
- [ ] No duplicate serial numbers
|
||||
- [ ] No duplicate machinenumbers
|
||||
- [ ] Old tables preserved (rollback safety)
|
||||
- [ ] All tests show "PASS"
|
||||
|
||||
---
|
||||
|
||||
## Relationship Examples
|
||||
|
||||
### Camera → Switch → IDF
|
||||
```sql
|
||||
-- Camera connected to switch
|
||||
INSERT INTO machinerelationships (machineid, related_machineid, relationshiptypeid)
|
||||
SELECT
|
||||
(SELECT machineid FROM machines WHERE machinenumber = 'CAM-Shop-01'),
|
||||
(SELECT machineid FROM machines WHERE machinenumber = 'SW-Core-01'),
|
||||
(SELECT relationshiptypeid FROM relationshiptypes WHERE relationshiptype = 'Connected To');
|
||||
|
||||
-- Switch connected to IDF
|
||||
INSERT INTO machinerelationships (machineid, related_machineid, relationshiptypeid)
|
||||
SELECT
|
||||
(SELECT machineid FROM machines WHERE machinenumber = 'SW-Core-01'),
|
||||
(SELECT machineid FROM machines WHERE machinenumber = 'IDF-Building-A'),
|
||||
(SELECT relationshiptypeid FROM relationshiptypes WHERE relationshiptype = 'Connected To');
|
||||
```
|
||||
|
||||
### Query Network Topology
|
||||
```sql
|
||||
-- Show all cameras and their connections
|
||||
SELECT
|
||||
cam.machinenumber AS camera,
|
||||
sw.machinenumber AS switch,
|
||||
idf.machinenumber AS idf,
|
||||
cam_ip.address AS camera_ip
|
||||
FROM machines cam
|
||||
-- Camera to Switch
|
||||
JOIN machinerelationships mr1 ON cam.machineid = mr1.machineid
|
||||
JOIN relationshiptypes rt1 ON mr1.relationshiptypeid = rt1.relationshiptypeid AND rt1.relationshiptype = 'Connected To'
|
||||
JOIN machines sw ON mr1.related_machineid = sw.machineid AND sw.machinetypeid = 31
|
||||
-- Switch to IDF
|
||||
LEFT JOIN machinerelationships mr2 ON sw.machineid = mr2.machineid
|
||||
LEFT JOIN relationshiptypes rt2 ON mr2.relationshiptypeid = rt2.relationshiptypeid AND rt2.relationshiptype = 'Connected To'
|
||||
LEFT JOIN machines idf ON mr2.related_machineid = idf.machineid AND idf.machinetypeid = 34
|
||||
-- IP address
|
||||
LEFT JOIN communications cam_ip ON cam.machineid = cam_ip.machineid AND cam_ip.isprimary = 1
|
||||
WHERE cam.machinetypeid = 32;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Useful Queries
|
||||
|
||||
### All Network Devices
|
||||
```sql
|
||||
SELECT * FROM vw_network_devices_summary;
|
||||
```
|
||||
|
||||
### All Infrastructure (Equipment + PCs + Network)
|
||||
```sql
|
||||
SELECT * FROM vw_all_infrastructure
|
||||
WHERE device_category = 'Network Device';
|
||||
```
|
||||
|
||||
### Network Devices on Specific Subnet
|
||||
```sql
|
||||
SELECT m.machinenumber, mt.machinetype, c.address
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
JOIN communications c ON m.machineid = c.machineid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
AND c.address LIKE '192.168.1.%';
|
||||
```
|
||||
|
||||
### Network Topology
|
||||
```sql
|
||||
SELECT * FROM vw_network_topology
|
||||
WHERE relationshiptype = 'Connected To';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Migration Fails:
|
||||
1. Review error message
|
||||
2. Check if old tables exist
|
||||
3. Run VERIFY script to identify issue
|
||||
4. Run ROLLBACK if needed
|
||||
5. Fix issue and retry
|
||||
|
||||
### Rollback:
|
||||
```bash
|
||||
# 1. Open ROLLBACK script
|
||||
# 2. Uncomment rollback steps
|
||||
# 3. Run rollback
|
||||
mysql -u root -p shopdb < ROLLBACK_PHASE3.sql
|
||||
|
||||
# 4. Verify rollback
|
||||
mysql -u root -p shopdb -e "SELECT COUNT(*) FROM machines WHERE machinetypeid BETWEEN 30 AND 36;"
|
||||
# Should return 0
|
||||
```
|
||||
|
||||
### Emergency Restore:
|
||||
```bash
|
||||
# If rollback doesn't work, restore from backup
|
||||
mysql -u root -p shopdb < shopdb_backup_YYYYMMDD.sql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Post-Migration Tasks
|
||||
|
||||
### Immediate (After Successful Migration):
|
||||
1. Run verification script
|
||||
2. Test application pages
|
||||
3. Verify relationships display correctly
|
||||
4. Check all device types accessible
|
||||
|
||||
### Short-Term (1-7 Days):
|
||||
1. Update displaymachines.asp (add network device filters)
|
||||
2. Update machine_edit.asp (if needed)
|
||||
3. Test adding new network devices
|
||||
4. Monitor for issues
|
||||
|
||||
### Long-Term (30+ Days):
|
||||
1. Confirm migration stable
|
||||
2. Drop old tables:
|
||||
```sql
|
||||
DROP TABLE servers;
|
||||
DROP TABLE switches;
|
||||
DROP TABLE cameras;
|
||||
```
|
||||
3. Update documentation
|
||||
4. Celebrate!
|
||||
|
||||
---
|
||||
|
||||
## Important Notes
|
||||
|
||||
### Data Preserved:
|
||||
- All serial numbers
|
||||
- All IP addresses
|
||||
- All descriptions
|
||||
- All map coordinates
|
||||
- All models/vendors
|
||||
- All active/inactive states
|
||||
|
||||
### Data Generated:
|
||||
- `machinenumber`: Generated as SVR-XXXX, SW-XXXX, CAM-XXXX
|
||||
- `alias`: Populated from description field
|
||||
- `pctypeid`: Set to NULL (not PCs)
|
||||
- `machinetypeid`: Set to 30-36 based on device type
|
||||
|
||||
### Not Migrated (Old Tables Don't Have):
|
||||
- MAC addresses (would be NULL)
|
||||
- Business units (not applicable)
|
||||
- Detailed notes (field empty in old tables)
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
### Issues?
|
||||
1. Check VERIFY_PHASE3_MIGRATION.sql results
|
||||
2. Review error logs
|
||||
3. Check old tables still exist
|
||||
4. Run ROLLBACK if needed
|
||||
5. Contact database administrator
|
||||
|
||||
### Questions?
|
||||
- Review docs/PHASE3_NETWORK_DEVICES_MIGRATION_PLAN.md
|
||||
- Check SESSION_SUMMARY_2025-11-10.md
|
||||
- Review Phase 2 migration (similar pattern)
|
||||
|
||||
---
|
||||
|
||||
## ✨ Benefits After Migration
|
||||
|
||||
### Unified Data Model:
|
||||
- Single query for all infrastructure
|
||||
- Consistent filtering and searching
|
||||
- Better reporting capabilities
|
||||
|
||||
### Powerful Relationships:
|
||||
- Camera → Switch → IDF topology
|
||||
- Network device dependencies
|
||||
- Better visualization options
|
||||
|
||||
### Better Maintenance:
|
||||
- Less code duplication
|
||||
- Easier to add new device types
|
||||
- Consistent UI/UX
|
||||
- CMDB-style asset management
|
||||
|
||||
---
|
||||
|
||||
**Ready to migrate? Start with testing on backup database!**
|
||||
|
||||
```bash
|
||||
# Test first!
|
||||
mysql -u root -p shopdb_test < RUN_ALL_PHASE3_SCRIPTS.sql
|
||||
```
|
||||
|
||||
**Good luck! **
|
||||
270
sql/archive/migration_phase3/ROLLBACK_PHASE3.sql
Normal file
270
sql/archive/migration_phase3/ROLLBACK_PHASE3.sql
Normal file
@@ -0,0 +1,270 @@
|
||||
-- =====================================================
|
||||
-- ROLLBACK: Phase 3 Migration
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Rollback Phase 3 migration (Network Devices)
|
||||
-- USE WITH CAUTION: This will delete migrated data
|
||||
-- =====================================================
|
||||
--
|
||||
-- IMPORTANT: READ BEFORE RUNNING
|
||||
-- =====================================================
|
||||
-- 1. This script removes all network devices from machines table
|
||||
-- 2. Old tables (servers, switches, cameras) must still exist
|
||||
-- 3. Only run if migration failed or issues found
|
||||
-- 4. Backup database before rollback!
|
||||
-- 5. Cannot rollback if old tables were dropped
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'PHASE 3 MIGRATION ROLLBACK' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'Start Time:' AS '', NOW() AS timestamp;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Verification - Check Old Tables Exist
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 1: Verifying old tables still exist' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
-- Check if old tables exist
|
||||
SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) = 3 THEN 'PASS - All old tables exist'
|
||||
ELSE 'FAIL - Some old tables missing! Cannot rollback safely.'
|
||||
END AS status,
|
||||
COUNT(*) AS tables_found
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = 'shopdb'
|
||||
AND TABLE_NAME IN ('servers', 'switches', 'cameras');
|
||||
|
||||
-- Show old table record counts
|
||||
SELECT 'Old table record counts:' AS status;
|
||||
SELECT 'servers' AS table_name, COUNT(*) AS record_count FROM servers
|
||||
UNION ALL
|
||||
SELECT 'switches', COUNT(*) FROM switches
|
||||
UNION ALL
|
||||
SELECT 'cameras', COUNT(*) FROM cameras;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Show What Will Be Deleted
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 2: Records that will be removed from machines table' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SELECT
|
||||
mt.machinetype AS device_type,
|
||||
COUNT(*) AS records_to_delete
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
-- Show sample records to be deleted
|
||||
SELECT 'Sample records to be deleted:' AS status;
|
||||
SELECT
|
||||
m.machineid,
|
||||
m.machinenumber,
|
||||
mt.machinetype,
|
||||
m.serialnumber
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
LIMIT 10;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Confirmation Prompt
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'CONFIRMATION REQUIRED' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'This will DELETE all network devices from machines table' AS '';
|
||||
SELECT 'Old data in servers/switches/cameras tables will remain' AS '';
|
||||
SELECT '' AS '';
|
||||
SELECT 'To proceed, uncomment the rollback steps below' AS '';
|
||||
SELECT 'and run this script again.' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Delete Communications for Network Devices
|
||||
-- =====================================================
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 4: Deleting communications for network devices' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
DELETE c
|
||||
FROM communications c
|
||||
JOIN machines m ON c.machineid = m.machineid
|
||||
WHERE m.machinetypeid BETWEEN 30 AND 36;
|
||||
|
||||
SELECT 'Communications deleted:' AS status, ROW_COUNT() AS deleted_count;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 5: Delete Relationships Involving Network Devices
|
||||
-- =====================================================
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 5: Deleting relationships involving network devices' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
DELETE FROM machinerelationships
|
||||
WHERE machineid IN (
|
||||
SELECT machineid FROM machines WHERE machinetypeid BETWEEN 30 AND 36
|
||||
)
|
||||
OR related_machineid IN (
|
||||
SELECT machineid FROM machines WHERE machinetypeid BETWEEN 30 AND 36
|
||||
);
|
||||
|
||||
SELECT 'Relationships deleted:' AS status, ROW_COUNT() AS deleted_count;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 6: Delete Network Devices from machines Table
|
||||
-- =====================================================
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 6: Deleting network devices from machines table' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
DELETE FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36;
|
||||
|
||||
SELECT 'Machines deleted:' AS status, ROW_COUNT() AS deleted_count;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 7: Remove Network Relationship Types
|
||||
-- =====================================================
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 7: Removing network relationship types' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
DELETE FROM relationshiptypes
|
||||
WHERE relationshiptype IN (
|
||||
'Connected To',
|
||||
'Powered By',
|
||||
'Mounted In',
|
||||
'Feeds Video To',
|
||||
'Provides Network'
|
||||
);
|
||||
|
||||
SELECT 'Relationship types deleted:' AS status, ROW_COUNT() AS deleted_count;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 8: Drop Views
|
||||
-- =====================================================
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 8: Dropping network device views' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
DROP VIEW IF EXISTS vw_all_infrastructure;
|
||||
DROP VIEW IF EXISTS vw_network_devices_summary;
|
||||
DROP VIEW IF EXISTS vw_network_topology;
|
||||
|
||||
SELECT 'Views dropped' AS status;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 9: Remove Network Machine Types
|
||||
-- =====================================================
|
||||
-- OPTIONAL: Usually safe to keep these for future use
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Step 9: Removing network machine types (OPTIONAL)' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
DELETE FROM machinetypes
|
||||
WHERE machinetypeid BETWEEN 30 AND 36;
|
||||
|
||||
SELECT 'Machine types deleted:' AS status, ROW_COUNT() AS deleted_count;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 10: Verification After Rollback
|
||||
-- =====================================================
|
||||
-- UNCOMMENT TO EXECUTE ROLLBACK
|
||||
|
||||
/*
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'ROLLBACK VERIFICATION' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
-- Verify machines table cleaned up
|
||||
SELECT 'Network devices remaining in machines:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'SUCCESS - All network devices removed'
|
||||
ELSE CONCAT('WARNING - ', COUNT(*), ' network devices still remain')
|
||||
END AS result
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36;
|
||||
|
||||
-- Verify old tables still intact
|
||||
SELECT 'Old tables status:' AS status;
|
||||
SELECT 'servers' AS table_name, COUNT(*) AS record_count FROM servers
|
||||
UNION ALL
|
||||
SELECT 'switches', COUNT(*) FROM switches
|
||||
UNION ALL
|
||||
SELECT 'cameras', COUNT(*) FROM cameras;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Rollback complete' AS status;
|
||||
SELECT 'Old tables remain intact for re-migration' AS note;
|
||||
*/
|
||||
|
||||
-- =====================================================
|
||||
-- COMPLETION
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'End Time:' AS '', NOW() AS timestamp;
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- POST-ROLLBACK STEPS
|
||||
-- =====================================================
|
||||
-- After successful rollback:
|
||||
-- 1. Review what caused the need for rollback
|
||||
-- 2. Fix issues in migration scripts
|
||||
-- 3. Test on backup database
|
||||
-- 4. Re-run migration when ready
|
||||
--
|
||||
-- To re-run migration:
|
||||
-- SOURCE RUN_ALL_PHASE3_SCRIPTS.sql;
|
||||
-- =====================================================
|
||||
|
||||
-- =====================================================
|
||||
-- EMERGENCY RESTORE (if old tables were dropped)
|
||||
-- =====================================================
|
||||
-- If old tables were dropped, restore from backup:
|
||||
-- mysql -u root -p shopdb < shopdb_backup_before_phase3.sql
|
||||
-- =====================================================
|
||||
192
sql/archive/migration_phase3/RUN_ALL_PHASE3_SCRIPTS.sql
Normal file
192
sql/archive/migration_phase3/RUN_ALL_PHASE3_SCRIPTS.sql
Normal file
@@ -0,0 +1,192 @@
|
||||
-- =====================================================
|
||||
-- RUN ALL: Phase 3 Migration Scripts
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Execute all Phase 3 migration scripts in sequence
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Estimated Time: 5-10 minutes total
|
||||
-- =====================================================
|
||||
--
|
||||
-- IMPORTANT: READ BEFORE RUNNING
|
||||
-- =====================================================
|
||||
-- 1. BACKUP YOUR DATABASE FIRST!
|
||||
-- mysqldump -u root -p shopdb > shopdb_backup_before_phase3.sql
|
||||
--
|
||||
-- 2. Test on a backup database first!
|
||||
--
|
||||
-- 3. Schedule during maintenance window
|
||||
--
|
||||
-- 4. Monitor console output for errors
|
||||
--
|
||||
-- 5. If any script fails, STOP and review
|
||||
--
|
||||
-- 6. Keep old tables for 30 days (rollback safety)
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
|
||||
-- Enable detailed error reporting
|
||||
SET SQL_MODE='TRADITIONAL';
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'PHASE 3 MIGRATION - NETWORK DEVICES TO MACHINES TABLE' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'Start Time:' AS '', NOW() AS timestamp;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 01: Create Network Machine Types
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 01: Create Network Machine Types' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 01_create_network_machinetypes.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 01 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- Pause to allow review (in manual execution)
|
||||
-- UNCOMMENT IF RUNNING MANUALLY: SELECT 'Press Enter to continue...' AS ''; PROMPT;
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 02: Migrate Servers
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 02: Migrate Servers to machines Table' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 02_migrate_servers_to_machines.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 02 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 03: Migrate Switches
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 03: Migrate Switches to machines Table' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 03_migrate_switches_to_machines.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 03 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 04: Migrate Cameras
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 04: Migrate Cameras to machines Table' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 04_migrate_cameras_to_machines.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 04 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 07: Migrate Network Communications
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 07: Migrate Network Communications' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 07_migrate_network_communications.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 07 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 08: Create Network Relationship Types
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 08: Create Network Relationship Types' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 08_create_network_relationship_types.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 08 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- SCRIPT 09: Update Views
|
||||
-- =====================================================
|
||||
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
SELECT 'Running Script 09: Update Views for Network Devices' AS '';
|
||||
SELECT '------------------------------------------------------------' AS '';
|
||||
|
||||
SOURCE 09_update_views_for_network_devices.sql;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Script 09 complete' AS status;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- VERIFICATION
|
||||
-- =====================================================
|
||||
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'RUNNING VERIFICATION' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
SOURCE VERIFY_PHASE3_MIGRATION.sql;
|
||||
|
||||
-- =====================================================
|
||||
-- COMPLETION SUMMARY
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'PHASE 3 MIGRATION COMPLETE' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'End Time:' AS '', NOW() AS timestamp;
|
||||
SELECT '' AS '';
|
||||
|
||||
-- Summary of migrated devices
|
||||
SELECT 'Migration Summary:' AS status;
|
||||
SELECT
|
||||
mt.machinetype AS device_type,
|
||||
COUNT(*) AS migrated_count
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'NEXT STEPS:' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT '1. Review verification results above for any FAIL messages' AS step;
|
||||
SELECT '2. Test application pages (displaymachines.asp, etc.)' AS step;
|
||||
SELECT '3. Update application code to use new schema' AS step;
|
||||
SELECT '4. Monitor for 30 days' AS step;
|
||||
SELECT '5. Drop old tables only after confirming stability:' AS step;
|
||||
SELECT ' DROP TABLE servers;' AS '';
|
||||
SELECT ' DROP TABLE switches;' AS '';
|
||||
SELECT ' DROP TABLE cameras;' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- ROLLBACK INSTRUCTIONS (if needed)
|
||||
-- =====================================================
|
||||
-- If migration fails or issues found:
|
||||
-- SOURCE ROLLBACK_PHASE3.sql;
|
||||
-- =====================================================
|
||||
326
sql/archive/migration_phase3/VERIFY_PHASE3_MIGRATION.sql
Normal file
326
sql/archive/migration_phase3/VERIFY_PHASE3_MIGRATION.sql
Normal file
@@ -0,0 +1,326 @@
|
||||
-- =====================================================
|
||||
-- VERIFICATION: Phase 3 Migration
|
||||
-- =====================================================
|
||||
-- Date: 2025-11-10
|
||||
-- Purpose: Comprehensive verification of Phase 3 migration
|
||||
-- Part of: Phase 3 Migration (Network Devices → machines table)
|
||||
-- Run After: All migration scripts (01-09)
|
||||
-- =====================================================
|
||||
|
||||
USE shopdb;
|
||||
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'PHASE 3 MIGRATION VERIFICATION' AS '';
|
||||
SELECT 'Network Devices Consolidation into machines Table' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 1: Record Count Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 1: Record Count Verification' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
-- Count old table records
|
||||
SELECT 'Source Tables (Before Migration):' AS status;
|
||||
SELECT 'servers' AS table_name, COUNT(*) AS record_count FROM servers WHERE isactive = 1
|
||||
UNION ALL
|
||||
SELECT 'switches', COUNT(*) FROM switches WHERE isactive = 1
|
||||
UNION ALL
|
||||
SELECT 'cameras', COUNT(*) FROM cameras WHERE isactive = 1;
|
||||
|
||||
-- Count new table records
|
||||
SELECT 'Target Table (After Migration):' AS status;
|
||||
SELECT
|
||||
mt.machinetype,
|
||||
COUNT(*) AS record_count
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 2: Machine Types Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 2: Machine Types Exist' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
SELECT
|
||||
machinetypeid,
|
||||
machinetype,
|
||||
category,
|
||||
CASE WHEN isactive = 1 THEN 'Active' ELSE 'Inactive' END AS status
|
||||
FROM machinetypes
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
ORDER BY machinetypeid;
|
||||
|
||||
-- Check for missing machinetypes
|
||||
SELECT 'Missing machinetypes:' AS status,
|
||||
CASE
|
||||
WHEN COUNT(*) = 7 THEN 'PASS - All 7 network machinetypes exist'
|
||||
ELSE CONCAT('FAIL - Only ', COUNT(*), ' of 7 machinetypes exist')
|
||||
END AS result
|
||||
FROM machinetypes
|
||||
WHERE machinetypeid BETWEEN 30 AND 36;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 3: Data Integrity - No NULL Required Fields
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 3: Data Integrity - Required Fields' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
-- Check for NULL machinetypeid
|
||||
SELECT 'Devices with NULL machinetypeid:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'PASS - No NULL machinetypeids'
|
||||
ELSE CONCAT('FAIL - ', COUNT(*), ' devices with NULL machinetypeid')
|
||||
END AS result
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
AND machinetypeid IS NULL;
|
||||
|
||||
-- Check for NULL machinenumber
|
||||
SELECT 'Devices with NULL machinenumber:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'PASS - No NULL machinenumbers'
|
||||
ELSE CONCAT('FAIL - ', COUNT(*), ' devices with NULL machinenumber')
|
||||
END AS result
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
AND machinenumber IS NULL;
|
||||
|
||||
-- Check for incorrect pctypeid (should be NULL for network devices)
|
||||
SELECT 'Network devices with non-NULL pctypeid:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'PASS - All network devices have pctypeid = NULL'
|
||||
ELSE CONCAT('FAIL - ', COUNT(*), ' network devices with incorrect pctypeid')
|
||||
END AS result
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
AND pctypeid IS NOT NULL;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 4: Communications Migration
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 4: Communications (IP Addresses) Migration' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
-- Count IPs in old tables
|
||||
SELECT 'IP addresses in source tables:' AS status;
|
||||
SELECT 'servers' AS table_name, COUNT(*) AS ip_count
|
||||
FROM servers WHERE ipaddress IS NOT NULL AND ipaddress != '' AND isactive = 1
|
||||
UNION ALL
|
||||
SELECT 'switches', COUNT(*)
|
||||
FROM switches WHERE ipaddress IS NOT NULL AND ipaddress != '' AND isactive = 1
|
||||
UNION ALL
|
||||
SELECT 'cameras', COUNT(*)
|
||||
FROM cameras WHERE ipaddress IS NOT NULL AND ipaddress != '' AND isactive = 1;
|
||||
|
||||
-- Count IPs in communications table
|
||||
SELECT 'IP addresses in communications table:' AS status;
|
||||
SELECT
|
||||
mt.machinetype,
|
||||
COUNT(DISTINCT c.comid) AS ip_count
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
JOIN communications c ON m.machineid = c.machineid AND c.comstypeid = 1
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY mt.machinetype
|
||||
ORDER BY mt.machinetypeid;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 5: Relationship Types
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 5: New Relationship Types' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
SELECT 'Network relationship types:' AS status;
|
||||
SELECT
|
||||
relationshiptype,
|
||||
description,
|
||||
CASE WHEN isbidirectional = 1 THEN 'Yes' ELSE 'No' END AS bidirectional
|
||||
FROM relationshiptypes
|
||||
WHERE relationshiptype IN ('Connected To', 'Powered By', 'Mounted In', 'Feeds Video To', 'Provides Network')
|
||||
ORDER BY relationshiptype;
|
||||
|
||||
-- Check if all expected relationship types exist
|
||||
SELECT 'Expected relationship types:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) >= 5 THEN 'PASS - All network relationship types exist'
|
||||
ELSE CONCAT('FAIL - Only ', COUNT(*), ' of 5 relationship types exist')
|
||||
END AS result
|
||||
FROM relationshiptypes
|
||||
WHERE relationshiptype IN ('Connected To', 'Powered By', 'Mounted In', 'Feeds Video To', 'Provides Network');
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 6: Views Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 6: Views Created Successfully' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
-- Check if views exist
|
||||
SELECT 'Views status:' AS test;
|
||||
SELECT
|
||||
TABLE_NAME AS view_name,
|
||||
'EXISTS' AS status
|
||||
FROM INFORMATION_SCHEMA.VIEWS
|
||||
WHERE TABLE_SCHEMA = 'shopdb'
|
||||
AND TABLE_NAME IN ('vw_all_infrastructure', 'vw_network_devices_summary', 'vw_network_topology');
|
||||
|
||||
-- Check view record counts
|
||||
SELECT 'Records in vw_all_infrastructure:' AS test, COUNT(*) AS record_count FROM vw_all_infrastructure;
|
||||
SELECT 'Records in vw_network_devices_summary:' AS test, COUNT(*) AS record_count FROM vw_network_devices_summary;
|
||||
SELECT 'Records in vw_network_topology:' AS test, COUNT(*) AS record_count FROM vw_network_topology;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 7: Sample Data Verification
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 7: Sample Migrated Data' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
SELECT 'Sample network devices:' AS status;
|
||||
SELECT
|
||||
m.machinenumber,
|
||||
mt.machinetype,
|
||||
mo.modelnumber,
|
||||
v.vendor,
|
||||
c.address AS ipaddress,
|
||||
m.isactive
|
||||
FROM machines m
|
||||
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
LEFT JOIN communications c ON m.machineid = c.machineid AND c.isprimary = 1
|
||||
WHERE mt.machinetypeid BETWEEN 30 AND 36
|
||||
ORDER BY mt.machinetypeid, m.machinenumber
|
||||
LIMIT 15;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 8: Duplicate Detection
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 8: Duplicate Detection' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
-- Check for duplicate serial numbers within network devices
|
||||
SELECT 'Duplicate serial numbers:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'PASS - No duplicates found'
|
||||
ELSE CONCAT('WARNING - ', COUNT(*), ' duplicate serial numbers found')
|
||||
END AS result
|
||||
FROM (
|
||||
SELECT serialnumber, COUNT(*) as cnt
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
AND serialnumber IS NOT NULL
|
||||
AND serialnumber != ''
|
||||
GROUP BY serialnumber
|
||||
HAVING cnt > 1
|
||||
) AS duplicates;
|
||||
|
||||
-- Check for duplicate machinenumbers within network devices
|
||||
SELECT 'Duplicate machinenumbers:' AS test,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'PASS - No duplicates found'
|
||||
ELSE CONCAT('FAIL - ', COUNT(*), ' duplicate machinenumbers found')
|
||||
END AS result
|
||||
FROM (
|
||||
SELECT machinenumber, COUNT(*) as cnt
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
GROUP BY machinenumber
|
||||
HAVING cnt > 1
|
||||
) AS duplicates;
|
||||
|
||||
-- =====================================================
|
||||
-- TEST 9: Old Table Preservation
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
SELECT 'TEST 9: Old Tables Preserved (Rollback Safety)' AS '';
|
||||
SELECT '══════════════════════════════════════════════════════' AS '';
|
||||
|
||||
SELECT 'Old tables status:' AS test;
|
||||
SELECT 'servers' AS table_name, COUNT(*) AS record_count FROM servers
|
||||
UNION ALL
|
||||
SELECT 'switches', COUNT(*) FROM switches
|
||||
UNION ALL
|
||||
SELECT 'cameras', COUNT(*) FROM cameras;
|
||||
|
||||
-- =====================================================
|
||||
-- FINAL SUMMARY
|
||||
-- =====================================================
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
SELECT 'VERIFICATION SUMMARY' AS '';
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
SELECT
|
||||
'Total Network Devices' AS metric,
|
||||
COUNT(*) AS value
|
||||
FROM machines
|
||||
WHERE machinetypeid BETWEEN 30 AND 36
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Devices with IP Addresses',
|
||||
COUNT(DISTINCT m.machineid)
|
||||
FROM machines m
|
||||
JOIN communications c ON m.machineid = c.machineid AND c.comstypeid = 1
|
||||
WHERE m.machinetypeid BETWEEN 30 AND 36
|
||||
UNION ALL
|
||||
SELECT
|
||||
'New Relationship Types',
|
||||
COUNT(*)
|
||||
FROM relationshiptypes
|
||||
WHERE relationshiptype IN ('Connected To', 'Powered By', 'Mounted In', 'Feeds Video To', 'Provides Network')
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Views Created',
|
||||
COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.VIEWS
|
||||
WHERE TABLE_SCHEMA = 'shopdb'
|
||||
AND TABLE_NAME IN ('vw_all_infrastructure', 'vw_network_devices_summary', 'vw_network_topology');
|
||||
|
||||
SELECT '' AS '';
|
||||
SELECT '✓ Phase 3 migration verification complete' AS status;
|
||||
SELECT 'Review results above for any FAIL messages' AS note;
|
||||
SELECT '============================================================' AS '';
|
||||
|
||||
-- =====================================================
|
||||
-- NOTES
|
||||
-- =====================================================
|
||||
-- If all tests show PASS:
|
||||
-- - Migration successful
|
||||
-- - Safe to update application code
|
||||
-- - Monitor for 30 days before dropping old tables
|
||||
--
|
||||
-- If any tests show FAIL:
|
||||
-- - Review specific failures
|
||||
-- - Consider running ROLLBACK script
|
||||
-- - Fix issues and re-run migration
|
||||
-- =====================================================
|
||||
Reference in New Issue
Block a user