26 lines
1 KiB
MySQL
26 lines
1 KiB
MySQL
|
|
-- 023_ResyncFiscalYearsToLedger.sql
|
||
|
|
-- Re-syncs all fiscal years that are missing from accounting_periods.
|
||
|
|
-- This fixes periods that failed to sync due to the unique constraint on name
|
||
|
|
-- (which was removed in migration 022).
|
||
|
|
|
||
|
|
DO $$
|
||
|
|
BEGIN
|
||
|
|
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'accounting_periods')
|
||
|
|
AND EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'fiscal_year_read_models') THEN
|
||
|
|
|
||
|
|
-- Insert any missing fiscal years
|
||
|
|
INSERT INTO accounting_periods (id, name, start_date, end_date, is_locked, created_at)
|
||
|
|
SELECT
|
||
|
|
uuid(substring(aggregate_id from 12))::uuid as id,
|
||
|
|
name,
|
||
|
|
start_date,
|
||
|
|
end_date,
|
||
|
|
(status = 'locked') as is_locked,
|
||
|
|
create_time as created_at
|
||
|
|
FROM fiscal_year_read_models
|
||
|
|
WHERE aggregate_id LIKE 'fiscalyear-%'
|
||
|
|
AND uuid(substring(aggregate_id from 12))::uuid NOT IN (SELECT id FROM accounting_periods)
|
||
|
|
ON CONFLICT (id) DO NOTHING;
|
||
|
|
END IF;
|
||
|
|
END $$;
|