202 lines
5.1 KiB
SQL
202 lines
5.1 KiB
SQL
-- Database Surgery Script for Organization and Vehicle Fix
|
|
-- Using raw SQL to avoid SQLAlchemy model complexity
|
|
|
|
-- 1. Fix Private Organization (ID 21) - set owner_id to tester_pro's person_id (29)
|
|
UPDATE fleet.organizations
|
|
SET owner_id = 29, updated_at = NOW()
|
|
WHERE id = 21 AND org_type = 'individual';
|
|
|
|
-- 2. Fix Corporate Organization (ID 15) - update owner_id from user_id (28) to person_id (29)
|
|
UPDATE fleet.organizations
|
|
SET owner_id = 29, updated_at = NOW()
|
|
WHERE id = 15 AND org_type = 'fleet_owner';
|
|
|
|
-- 3. Create Alpha Organization
|
|
INSERT INTO fleet.organizations (
|
|
full_name,
|
|
name,
|
|
folder_slug,
|
|
org_type,
|
|
owner_id,
|
|
status,
|
|
is_active,
|
|
first_registered_at,
|
|
current_lifecycle_started_at,
|
|
lifecycle_index,
|
|
is_anonymized,
|
|
default_currency,
|
|
country_code,
|
|
language,
|
|
subscription_plan,
|
|
base_asset_limit,
|
|
purchased_extra_slots,
|
|
notification_settings,
|
|
external_integration_config,
|
|
is_verified,
|
|
created_at,
|
|
updated_at,
|
|
is_ownership_transferable
|
|
) VALUES (
|
|
'Test Kft. Alpha',
|
|
'Test Kft. Alpha',
|
|
'alpha' || substr(md5(random()::text), 1, 6),
|
|
'fleet_owner',
|
|
29,
|
|
'active',
|
|
true,
|
|
NOW(),
|
|
NOW(),
|
|
1,
|
|
false,
|
|
'HUF',
|
|
'HU',
|
|
'hu',
|
|
'FREE',
|
|
1,
|
|
0,
|
|
'{"notify_owner": true, "alert_days_before": [30, 15, 7, 1]}'::jsonb,
|
|
'{}'::jsonb,
|
|
false,
|
|
NOW(),
|
|
NOW(),
|
|
true
|
|
) RETURNING id;
|
|
|
|
-- Save the Alpha org ID for branch creation
|
|
WITH alpha_org AS (
|
|
SELECT id FROM fleet.organizations
|
|
WHERE folder_slug LIKE 'alpha%' AND full_name = 'Test Kft. Alpha'
|
|
ORDER BY created_at DESC LIMIT 1
|
|
)
|
|
INSERT INTO fleet.branches (organization_id, name, is_main)
|
|
SELECT id, 'Alpha Main Garage', true FROM alpha_org;
|
|
|
|
-- 4. Create Beta Organization
|
|
INSERT INTO fleet.organizations (
|
|
full_name,
|
|
name,
|
|
folder_slug,
|
|
org_type,
|
|
owner_id,
|
|
status,
|
|
is_active,
|
|
first_registered_at,
|
|
current_lifecycle_started_at,
|
|
lifecycle_index,
|
|
is_anonymized,
|
|
default_currency,
|
|
country_code,
|
|
language,
|
|
subscription_plan,
|
|
base_asset_limit,
|
|
purchased_extra_slots,
|
|
notification_settings,
|
|
external_integration_config,
|
|
is_verified,
|
|
created_at,
|
|
updated_at,
|
|
is_ownership_transferable
|
|
) VALUES (
|
|
'Test Kft. Beta',
|
|
'Test Kft. Beta',
|
|
'beta' || substr(md5(random()::text), 1, 6),
|
|
'fleet_owner',
|
|
29,
|
|
'active',
|
|
true,
|
|
NOW(),
|
|
NOW(),
|
|
1,
|
|
false,
|
|
'HUF',
|
|
'HU',
|
|
'hu',
|
|
'FREE',
|
|
1,
|
|
0,
|
|
'{"notify_owner": true, "alert_days_before": [30, 15, 7, 1]}'::jsonb,
|
|
'{}'::jsonb,
|
|
false,
|
|
NOW(),
|
|
NOW(),
|
|
true
|
|
) RETURNING id;
|
|
|
|
-- Save the Beta org ID for branch creation
|
|
WITH beta_org AS (
|
|
SELECT id FROM fleet.organizations
|
|
WHERE folder_slug LIKE 'beta%' AND full_name = 'Test Kft. Beta'
|
|
ORDER BY created_at DESC LIMIT 1
|
|
)
|
|
INSERT INTO fleet.branches (organization_id, name, is_main)
|
|
SELECT id, 'Beta Main Garage', true FROM beta_org;
|
|
|
|
-- 5. Get vehicle IDs for distribution
|
|
-- First 3 vehicles owned by person_id 29 (tester_pro)
|
|
WITH vehicle_ids AS (
|
|
SELECT id, license_plate, ROW_NUMBER() OVER (ORDER BY id) as rn
|
|
FROM vehicle.assets
|
|
WHERE owner_person_id = 29
|
|
AND license_plate IS NOT NULL
|
|
ORDER BY id
|
|
LIMIT 3
|
|
),
|
|
org_ids AS (
|
|
SELECT
|
|
(SELECT id FROM fleet.organizations WHERE id = 21) as private_org_id,
|
|
(SELECT id FROM fleet.organizations WHERE full_name = 'Test Kft. Alpha') as alpha_org_id,
|
|
(SELECT id FROM fleet.organizations WHERE full_name = 'Test Kft. Beta') as beta_org_id
|
|
)
|
|
-- Update vehicle 1 to Private Organization
|
|
UPDATE vehicle.assets a
|
|
SET current_organization_id = o.private_org_id
|
|
FROM vehicle_ids v, org_ids o
|
|
WHERE a.id = v.id AND v.rn = 1;
|
|
|
|
-- Update vehicle 2 to Alpha Organization
|
|
UPDATE vehicle.assets a
|
|
SET current_organization_id = o.alpha_org_id
|
|
FROM vehicle_ids v, org_ids o
|
|
WHERE a.id = v.id AND v.rn = 2;
|
|
|
|
-- Update vehicle 3 to Beta Organization
|
|
UPDATE vehicle.assets a
|
|
SET current_organization_id = o.beta_org_id
|
|
FROM vehicle_ids v, org_ids o
|
|
WHERE a.id = v.id AND v.rn = 3;
|
|
|
|
-- 6. Update asset assignments
|
|
-- Delete existing assignments for these vehicles
|
|
DELETE FROM fleet.asset_assignments
|
|
WHERE asset_id IN (
|
|
SELECT id FROM vehicle.assets
|
|
WHERE owner_person_id = 29
|
|
ORDER BY id
|
|
LIMIT 3
|
|
);
|
|
|
|
-- Create new assignments
|
|
WITH vehicle_ids AS (
|
|
SELECT id, ROW_NUMBER() OVER (ORDER BY id) as rn
|
|
FROM vehicle.assets
|
|
WHERE owner_person_id = 29
|
|
AND license_plate IS NOT NULL
|
|
ORDER BY id
|
|
LIMIT 3
|
|
),
|
|
org_ids AS (
|
|
SELECT
|
|
(SELECT id FROM fleet.organizations WHERE id = 21) as private_org_id,
|
|
(SELECT id FROM fleet.organizations WHERE full_name = 'Test Kft. Alpha') as alpha_org_id,
|
|
(SELECT id FROM fleet.organizations WHERE full_name = 'Test Kft. Beta') as beta_org_id
|
|
)
|
|
INSERT INTO fleet.asset_assignments (asset_id, organization_id)
|
|
SELECT
|
|
v.id,
|
|
CASE
|
|
WHEN v.rn = 1 THEN o.private_org_id
|
|
WHEN v.rn = 2 THEN o.alpha_org_id
|
|
WHEN v.rn = 3 THEN o.beta_org_id
|
|
END
|
|
FROM vehicle_ids v, org_ids o
|
|
WHERE v.rn IN (1, 2, 3); |