49 lines
1.9 KiB
MySQL
49 lines
1.9 KiB
MySQL
|
|
-- Migration: Add billed_via_thehub_id to tmodule_times
|
||
|
|
-- This tracks which Hub order (and indirectly e-conomic order) each time entry was billed through
|
||
|
|
|
||
|
|
DO $$
|
||
|
|
BEGIN
|
||
|
|
-- Add billed_via_thehub_id column if it doesn't exist
|
||
|
|
IF NOT EXISTS (
|
||
|
|
SELECT 1 FROM information_schema.columns
|
||
|
|
WHERE table_name = 'tmodule_times' AND column_name = 'billed_via_thehub_id'
|
||
|
|
) THEN
|
||
|
|
ALTER TABLE tmodule_times ADD COLUMN billed_via_thehub_id INTEGER;
|
||
|
|
RAISE NOTICE 'Added column billed_via_thehub_id to tmodule_times';
|
||
|
|
ELSE
|
||
|
|
RAISE NOTICE 'Column billed_via_thehub_id already exists';
|
||
|
|
END IF;
|
||
|
|
|
||
|
|
-- Add foreign key constraint to tmodule_orders
|
||
|
|
IF NOT EXISTS (
|
||
|
|
SELECT 1 FROM information_schema.table_constraints
|
||
|
|
WHERE table_name = 'tmodule_times'
|
||
|
|
AND constraint_name = 'tmodule_times_billed_via_thehub_id_fkey'
|
||
|
|
) THEN
|
||
|
|
ALTER TABLE tmodule_times
|
||
|
|
ADD CONSTRAINT tmodule_times_billed_via_thehub_id_fkey
|
||
|
|
FOREIGN KEY (billed_via_thehub_id)
|
||
|
|
REFERENCES tmodule_orders(id)
|
||
|
|
ON DELETE SET NULL;
|
||
|
|
RAISE NOTICE 'Added foreign key constraint for billed_via_thehub_id';
|
||
|
|
ELSE
|
||
|
|
RAISE NOTICE 'Foreign key constraint already exists';
|
||
|
|
END IF;
|
||
|
|
|
||
|
|
-- Add index for faster lookups
|
||
|
|
IF NOT EXISTS (
|
||
|
|
SELECT 1 FROM pg_indexes
|
||
|
|
WHERE tablename = 'tmodule_times'
|
||
|
|
AND indexname = 'idx_tmodule_times_billed_via_thehub_id'
|
||
|
|
) THEN
|
||
|
|
CREATE INDEX idx_tmodule_times_billed_via_thehub_id ON tmodule_times(billed_via_thehub_id);
|
||
|
|
RAISE NOTICE 'Created index idx_tmodule_times_billed_via_thehub_id';
|
||
|
|
ELSE
|
||
|
|
RAISE NOTICE 'Index idx_tmodule_times_billed_via_thehub_id already exists';
|
||
|
|
END IF;
|
||
|
|
END $$;
|
||
|
|
|
||
|
|
-- Add comment explaining the column
|
||
|
|
COMMENT ON COLUMN tmodule_times.billed_via_thehub_id IS
|
||
|
|
'Hub order ID that this time entry was billed through. Links to tmodule_orders.id which contains economic_order_number.';
|