- Support multi-capture-group regex: mappings.input_value changed to JSONB,
regexp_match() result stored as scalar or array JSONB in transformed column
- Computed expression fields in generated views: {fieldname} refs substituted
with (transformed->>'fieldname')::numeric for arithmetic in view columns
- Fix generate_source_view to DROP VIEW before CREATE (avoids column drop error)
- Collapsible rule cards that open directly to inline edit form
- Debounced live regex preview (extract + replace) with popout modal for 50 rows
- Records page now shows dfv.<source> view output instead of raw records
- Unified field table in Sources: single table with In view, Seq, expression columns
- Fix "Rule already exists" error when editing by passing rule.id directly to submit
- Fix Sources page clearing on F5 by watching sourceObj?.name in useEffect dep
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
23 lines
817 B
SQL
23 lines
817 B
SQL
--
|
|
-- Migration: Change mappings.input_value from TEXT to JSONB
|
|
-- Allows multi-capture-group regex results to be used as mapping keys
|
|
--
|
|
|
|
SET search_path TO dataflow, public;
|
|
|
|
-- Drop dependent constraint and index first
|
|
ALTER TABLE dataflow.mappings DROP CONSTRAINT mappings_source_name_rule_name_input_value_key;
|
|
DROP INDEX IF EXISTS dataflow.idx_mappings_input;
|
|
|
|
-- Convert column: existing TEXT values become JSONB strings e.g. "MEIJER"
|
|
ALTER TABLE dataflow.mappings
|
|
ALTER COLUMN input_value TYPE JSONB
|
|
USING to_jsonb(input_value);
|
|
|
|
-- Recreate constraint and index
|
|
ALTER TABLE dataflow.mappings
|
|
ADD CONSTRAINT mappings_source_name_rule_name_input_value_key
|
|
UNIQUE (source_name, rule_name, input_value);
|
|
|
|
CREATE INDEX idx_mappings_input ON dataflow.mappings(source_name, rule_name, input_value);
|