183 lines
5.9 KiB
PL/PgSQL
183 lines
5.9 KiB
PL/PgSQL
-- Bestehende benutzerspezifische Mining-Daten werden diesem Keycloak-Sub zugeordnet:
|
|
-- adea1766-5d1c-4c2e-98bd-5239861f745f
|
|
-- Die Keycloak-Sub ist stabiler als preferred_username und wird fuer alle benutzerspezifischen Mining-Daten genutzt.
|
|
|
|
BEGIN;
|
|
|
|
ALTER TABLE miningcheck_settings
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_cost_plans
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_measurements
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_measurement_rates
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_payouts
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_targets
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_dashboard_definitions
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
ALTER TABLE miningcheck_purchased_miners
|
|
ADD COLUMN IF NOT EXISTS owner_sub VARCHAR(128);
|
|
|
|
UPDATE miningcheck_settings
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_cost_plans
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_measurements
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_measurement_rates mr
|
|
SET owner_sub = m.owner_sub
|
|
FROM miningcheck_measurements m
|
|
WHERE mr.measurement_id = m.id
|
|
AND (mr.owner_sub IS NULL OR BTRIM(mr.owner_sub) = '');
|
|
|
|
UPDATE miningcheck_measurement_rates
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_payouts
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_targets
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_dashboard_definitions
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
UPDATE miningcheck_purchased_miners
|
|
SET owner_sub = 'adea1766-5d1c-4c2e-98bd-5239861f745f'
|
|
WHERE owner_sub IS NULL OR BTRIM(owner_sub) = '';
|
|
|
|
ALTER TABLE miningcheck_settings
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_cost_plans
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_measurements
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_measurement_rates
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_payouts
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_targets
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_dashboard_definitions
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_purchased_miners
|
|
ALTER COLUMN owner_sub SET NOT NULL;
|
|
|
|
ALTER TABLE miningcheck_settings
|
|
DROP CONSTRAINT IF EXISTS miningcheck_settings_project_key_key;
|
|
|
|
ALTER TABLE miningcheck_measurements
|
|
DROP CONSTRAINT IF EXISTS uq_mining_measurements_unique;
|
|
|
|
ALTER TABLE miningcheck_targets
|
|
DROP CONSTRAINT IF EXISTS uq_mining_targets_project_label;
|
|
|
|
ALTER TABLE miningcheck_dashboard_definitions
|
|
DROP CONSTRAINT IF EXISTS uq_mining_dashboards_project_name;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.table_constraints
|
|
WHERE table_schema = current_schema()
|
|
AND table_name = 'miningcheck_settings'
|
|
AND constraint_name = 'uq_mining_settings_project_owner'
|
|
) THEN
|
|
ALTER TABLE miningcheck_settings
|
|
ADD CONSTRAINT uq_mining_settings_project_owner UNIQUE (project_key, owner_sub);
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.table_constraints
|
|
WHERE table_schema = current_schema()
|
|
AND table_name = 'miningcheck_measurements'
|
|
AND constraint_name = 'uq_mining_measurements_unique'
|
|
) THEN
|
|
ALTER TABLE miningcheck_measurements
|
|
ADD CONSTRAINT uq_mining_measurements_unique UNIQUE (project_key, owner_sub, measured_at, coins_total);
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.table_constraints
|
|
WHERE table_schema = current_schema()
|
|
AND table_name = 'miningcheck_targets'
|
|
AND constraint_name = 'uq_mining_targets_project_label'
|
|
) THEN
|
|
ALTER TABLE miningcheck_targets
|
|
ADD CONSTRAINT uq_mining_targets_project_label UNIQUE (project_key, owner_sub, label);
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.table_constraints
|
|
WHERE table_schema = current_schema()
|
|
AND table_name = 'miningcheck_dashboard_definitions'
|
|
AND constraint_name = 'uq_mining_dashboards_project_name'
|
|
) THEN
|
|
ALTER TABLE miningcheck_dashboard_definitions
|
|
ADD CONSTRAINT uq_mining_dashboards_project_name UNIQUE (project_key, owner_sub, name);
|
|
END IF;
|
|
END $$;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_cost_plans_project_owner_start
|
|
ON miningcheck_cost_plans(project_key, owner_sub, starts_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_measurements_project_owner_measured_at
|
|
ON miningcheck_measurements(project_key, owner_sub, measured_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_measurement_rates_project_owner_measurement
|
|
ON miningcheck_measurement_rates(project_key, owner_sub, measurement_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_payouts_project_owner_payout_at
|
|
ON miningcheck_payouts(project_key, owner_sub, payout_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_targets_project_owner
|
|
ON miningcheck_targets(project_key, owner_sub, sort_order, id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_dashboards_project_owner
|
|
ON miningcheck_dashboard_definitions(project_key, owner_sub, id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_miningcheck_purchased_miners_project_owner_purchased_at
|
|
ON miningcheck_purchased_miners(project_key, owner_sub, purchased_at);
|
|
|
|
COMMIT;
|