release: freeze 2026-10-15 validated release baseline
CI/CD Pipeline / UI Contracts (source-structure gates) (push) Canceled after 0s
CI/CD Pipeline / E2E (live stack) (push) Canceled after 0s
CI/CD Pipeline / Backend Build & Test (push) Canceled after 0s
CI/CD Pipeline / Admin Web Build (push) Canceled after 0s
CI/CD Pipeline / Mini Program Compile Check (push) Canceled after 0s
CI/CD Pipeline / Migration Validation (push) Canceled after 0s
CI/CD Pipeline / Test Shell Guard (Phase 23 Gate) (push) Canceled after 0s
CI/CD Pipeline / UI Contracts (source-structure gates) (push) Canceled after 0s
CI/CD Pipeline / E2E (live stack) (push) Canceled after 0s
CI/CD Pipeline / Backend Build & Test (push) Canceled after 0s
CI/CD Pipeline / Admin Web Build (push) Canceled after 0s
CI/CD Pipeline / Mini Program Compile Check (push) Canceled after 0s
CI/CD Pipeline / Migration Validation (push) Canceled after 0s
CI/CD Pipeline / Test Shell Guard (Phase 23 Gate) (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS display_number VARCHAR(32);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uk_users_display_number ON users(display_number)
|
||||
WHERE display_number IS NOT NULL AND deleted_at IS NULL;
|
||||
|
||||
-- 历史用户的编号由实名性别、注册日和当日同性交序生成;未实名或 gender=other 暂不生成。
|
||||
WITH ranked AS (
|
||||
SELECT u.id, i.gender, (u.created_at AT TIME ZONE 'Asia/Shanghai')::date AS registered_date,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY (u.created_at AT TIME ZONE 'Asia/Shanghai')::date, i.gender
|
||||
ORDER BY u.created_at, u.id
|
||||
) AS gender_rank
|
||||
FROM users u
|
||||
JOIN user_identities i ON i.user_id = u.id
|
||||
WHERE u.display_number IS NULL
|
||||
AND i.verification_status = 'verified'
|
||||
AND i.gender IN ('male', 'female')
|
||||
AND u.deleted_at IS NULL
|
||||
)
|
||||
UPDATE users u
|
||||
SET display_number = '321181' || TO_CHAR(r.registered_date, 'YYYYMMDD') ||
|
||||
LPAD((r.gender_rank * 2 - CASE WHEN r.gender = 'male' THEN 1 ELSE 0 END)::text, 4, '0')
|
||||
FROM ranked r
|
||||
WHERE u.id = r.id;
|
||||
@@ -0,0 +1,41 @@
|
||||
ALTER TABLE operators ADD COLUMN IF NOT EXISTS display_id VARCHAR(32);
|
||||
|
||||
-- 历史用户编号统一为 YH + 注册日期 + 当日性别序号(男奇女偶)。
|
||||
WITH ranked AS (
|
||||
SELECT u.id, i.gender,
|
||||
(u.created_at AT TIME ZONE 'Asia/Shanghai')::date AS registered_date,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY (u.created_at AT TIME ZONE 'Asia/Shanghai')::date, i.gender
|
||||
ORDER BY u.created_at, u.id
|
||||
) AS gender_rank
|
||||
FROM users u JOIN user_identities i ON i.user_id = u.id
|
||||
WHERE u.display_number IS NOT NULL AND i.verification_status = 'verified'
|
||||
AND i.gender IN ('male', 'female') AND u.deleted_at IS NULL
|
||||
)
|
||||
UPDATE users u SET display_number = 'YH' || TO_CHAR(r.registered_date, 'YYYYMMDD') ||
|
||||
LPAD((r.gender_rank * 2 - CASE WHEN r.gender = 'male' THEN 1 ELSE 0 END)::text, 2, '0')
|
||||
FROM ranked r WHERE u.id = r.id AND r.gender_rank <= 50;
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uk_operators_display_id ON operators(display_id)
|
||||
WHERE display_id IS NOT NULL AND deleted_at IS NULL;
|
||||
|
||||
-- 运营人员:红娘前缀 HN,其他管理员/运营人员前缀 GL。
|
||||
WITH ranked AS (
|
||||
SELECT o.id,
|
||||
CASE WHEN EXISTS (
|
||||
SELECT 1 FROM operator_roles ort JOIN roles r ON r.id = ort.role_id
|
||||
WHERE ort.operator_id = o.id AND r.code IN ('matchmaker', 'matchmaker_leader')
|
||||
) THEN 'HN' ELSE 'GL' END AS prefix,
|
||||
(o.created_at AT TIME ZONE 'Asia/Shanghai')::date AS created_date,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY (o.created_at AT TIME ZONE 'Asia/Shanghai')::date,
|
||||
CASE WHEN EXISTS (
|
||||
SELECT 1 FROM operator_roles ort JOIN roles r ON r.id = ort.role_id
|
||||
WHERE ort.operator_id = o.id AND r.code IN ('matchmaker', 'matchmaker_leader')
|
||||
) THEN 'HN' ELSE 'GL' END
|
||||
ORDER BY o.created_at, o.id
|
||||
) AS seq
|
||||
FROM operators o WHERE o.display_id IS NULL AND o.deleted_at IS NULL
|
||||
)
|
||||
UPDATE operators o SET display_id = r.prefix || TO_CHAR(r.created_date, 'YYYYMMDD') || LPAD(r.seq::text, 2, '0')
|
||||
FROM ranked r WHERE o.id = r.id AND r.seq <= 99;
|
||||
@@ -0,0 +1,195 @@
|
||||
-- 公开编号由 PostgreSQL 与领域写入同事务分配;所有 UUID 主外键保持不变。
|
||||
CREATE TABLE public_display_id_counters (
|
||||
prefix VARCHAR(2) NOT NULL,
|
||||
local_date DATE NOT NULL,
|
||||
sequence_group VARCHAR(8) NOT NULL DEFAULT '',
|
||||
last_sequence INTEGER NOT NULL CHECK (last_sequence BETWEEN 1 AND 999),
|
||||
PRIMARY KEY (prefix, local_date, sequence_group)
|
||||
);
|
||||
CREATE TABLE public_display_id_aliases (
|
||||
entity_type VARCHAR(64) NOT NULL,
|
||||
entity_id UUID NOT NULL,
|
||||
old_display_id VARCHAR(64) NOT NULL,
|
||||
new_display_id VARCHAR(13),
|
||||
PRIMARY KEY (entity_type, entity_id, old_display_id)
|
||||
);
|
||||
INSERT INTO public_display_id_aliases(entity_type, entity_id, old_display_id)
|
||||
SELECT 'users', id, display_number FROM users WHERE display_number IS NOT NULL
|
||||
UNION ALL SELECT 'operators', id, display_id FROM operators WHERE display_id IS NOT NULL;
|
||||
|
||||
CREATE FUNCTION public_next_display_id(p_prefix TEXT, p_date DATE, p_group TEXT DEFAULT '')
|
||||
RETURNS TEXT LANGUAGE plpgsql AS $$
|
||||
DECLARE n INTEGER; step INTEGER; first_value INTEGER;
|
||||
BEGIN
|
||||
IF p_prefix NOT IN ('YH','HN','GL','RW','HD','FW','TJ','LX','FP','GJ','JB','ZF','YY')
|
||||
OR p_date IS NULL OR p_group IS NULL
|
||||
OR (p_prefix = 'YH' AND p_group NOT IN ('male','female'))
|
||||
OR (p_prefix <> 'YH' AND p_group <> '') THEN
|
||||
RAISE EXCEPTION '公开编号类型、日期或性别无效';
|
||||
END IF;
|
||||
step := CASE WHEN p_prefix = 'YH' THEN 2 ELSE 1 END;
|
||||
first_value := CASE WHEN p_group = 'female' THEN 2 ELSE 1 END;
|
||||
INSERT INTO public_display_id_counters(prefix, local_date, sequence_group, last_sequence)
|
||||
VALUES (p_prefix, p_date, p_group, first_value)
|
||||
ON CONFLICT (prefix, local_date, sequence_group) DO UPDATE
|
||||
SET last_sequence = public_display_id_counters.last_sequence + step
|
||||
WHERE public_display_id_counters.last_sequence + step <= 999
|
||||
RETURNING last_sequence INTO n;
|
||||
IF n IS NULL THEN RAISE EXCEPTION '当日公开编号容量已满'; END IF;
|
||||
RETURN p_prefix || TO_CHAR(p_date, 'YYYYMMDD') || LPAD(n::TEXT, 3, '0');
|
||||
END $$;
|
||||
|
||||
-- 历史数据预检先于回填;包含软删除记录,避免编号复用。
|
||||
DO $$
|
||||
DECLARE item RECORD; overflow_count INTEGER;
|
||||
BEGIN
|
||||
FOR item IN SELECT * FROM (VALUES
|
||||
('activities','HD'),('review_tasks','RW'),('reports','JB'),
|
||||
('matchmaker_services','FW'),('matchmaker_recommendations','TJ'),
|
||||
('matchmaker_contact_authorizations','LX'),('matchmaker_assignments','FP'),
|
||||
('matchmaker_followups','GJ'),('service_appointments','YY')) AS t(tab,prefix)
|
||||
LOOP
|
||||
EXECUTE FORMAT('SELECT COUNT(*) FROM (SELECT 1 FROM %I GROUP BY (created_at AT TIME ZONE ''Asia/Shanghai'')::date HAVING COUNT(*) > 999) s', item.tab) INTO overflow_count;
|
||||
IF overflow_count > 0 THEN RAISE EXCEPTION '历史编号超出容量: %', item.tab; END IF;
|
||||
EXECUTE FORMAT('ALTER TABLE %I ADD COLUMN display_id VARCHAR(13)', item.tab);
|
||||
EXECUTE FORMAT('WITH ranked AS (SELECT id, (created_at AT TIME ZONE ''Asia/Shanghai'')::date AS d, ROW_NUMBER() OVER (PARTITION BY (created_at AT TIME ZONE ''Asia/Shanghai'')::date ORDER BY created_at,id) AS n FROM %I) UPDATE %I t SET display_id = %L || TO_CHAR(r.d,''YYYYMMDD'') || LPAD(r.n::text,3,''0'') FROM ranked r WHERE t.id=r.id', item.tab, item.tab, item.prefix);
|
||||
EXECUTE FORMAT('ALTER TABLE %I ALTER COLUMN display_id SET NOT NULL', item.tab);
|
||||
EXECUTE FORMAT('CREATE UNIQUE INDEX %I ON %I(display_id)', 'uk_' || item.tab || '_public_display_id', item.tab);
|
||||
EXECUTE FORMAT('ALTER TABLE %I ADD CONSTRAINT %I CHECK (display_id ~ %L)', item.tab, 'ck_' || item.tab || '_public_display_id', '^' || item.prefix || '[0-9]{11}$');
|
||||
EXECUTE FORMAT('INSERT INTO public_display_id_counters SELECT %L, (created_at AT TIME ZONE ''Asia/Shanghai'')::date, '''', MAX(RIGHT(display_id,3)::int) FROM %I GROUP BY (created_at AT TIME ZONE ''Asia/Shanghai'')::date', item.prefix, item.tab);
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
WITH identities AS (
|
||||
SELECT DISTINCT ON (user_id) user_id, gender FROM user_identities
|
||||
WHERE verification_status='verified' AND gender IN ('male','female')
|
||||
ORDER BY user_id, verified_at DESC NULLS LAST, id
|
||||
), ranked AS (
|
||||
SELECT u.id, i.gender, (u.created_at AT TIME ZONE 'Asia/Shanghai')::date AS d,
|
||||
ROW_NUMBER() OVER (PARTITION BY (u.created_at AT TIME ZONE 'Asia/Shanghai')::date,i.gender ORDER BY u.created_at,u.id) * 2
|
||||
- CASE WHEN i.gender='male' THEN 1 ELSE 0 END AS n
|
||||
FROM users u JOIN identities i ON i.user_id=u.id
|
||||
)
|
||||
UPDATE users u SET display_number='YH'||TO_CHAR(r.d,'YYYYMMDD')||LPAD(r.n::text,3,'0')
|
||||
FROM ranked r WHERE u.id=r.id AND r.n<=999;
|
||||
|
||||
-- 未实名者允许无编号;已有旧号不能静默丢失或截断。
|
||||
DO $$ BEGIN
|
||||
IF EXISTS (SELECT 1 FROM users WHERE display_number IS NOT NULL AND display_number !~ '^YH[0-9]{11}$') THEN
|
||||
RAISE EXCEPTION '用户历史编号或性别异常,需核对后再迁移';
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM (
|
||||
SELECT u.id, ROW_NUMBER() OVER (PARTITION BY (u.created_at AT TIME ZONE 'Asia/Shanghai')::date, i.gender ORDER BY u.created_at,u.id)*2-CASE WHEN i.gender='male' THEN 1 ELSE 0 END n
|
||||
FROM users u JOIN (SELECT DISTINCT ON(user_id) user_id,gender FROM user_identities WHERE verification_status='verified' AND gender IN ('male','female') ORDER BY user_id,verified_at DESC NULLS LAST,id) i ON i.user_id=u.id
|
||||
) x WHERE n>999) THEN RAISE EXCEPTION '历史用户编号容量不足'; END IF;
|
||||
END $$;
|
||||
CREATE UNIQUE INDEX uk_users_public_display_number ON users(display_number) WHERE display_number IS NOT NULL;
|
||||
ALTER TABLE users ADD CONSTRAINT ck_users_public_display_number CHECK (display_number IS NULL OR display_number ~ '^YH[0-9]{11}$');
|
||||
INSERT INTO public_display_id_counters
|
||||
SELECT 'YH', (created_at AT TIME ZONE 'Asia/Shanghai')::date,
|
||||
CASE WHEN RIGHT(display_number,3)::int % 2=1 THEN 'male' ELSE 'female' END,
|
||||
MAX(RIGHT(display_number,3)::int)
|
||||
FROM users WHERE display_number IS NOT NULL GROUP BY 2,3;
|
||||
|
||||
WITH ranked AS (
|
||||
SELECT o.id, (o.created_at AT TIME ZONE 'Asia/Shanghai')::date AS d,
|
||||
CASE WHEN EXISTS(SELECT 1 FROM operator_roles ort JOIN roles r ON r.id=ort.role_id WHERE ort.operator_id=o.id AND r.code IN ('matchmaker','matchmaker_leader')) THEN 'HN' ELSE 'GL' END AS prefix
|
||||
FROM operators o
|
||||
), numbered AS (
|
||||
SELECT *, ROW_NUMBER() OVER (PARTITION BY d,prefix ORDER BY (SELECT created_at FROM operators WHERE id=ranked.id),id) AS n FROM ranked
|
||||
)
|
||||
UPDATE operators o SET display_id=r.prefix||TO_CHAR(r.d,'YYYYMMDD')||LPAD(r.n::text,3,'0') FROM numbered r WHERE o.id=r.id AND r.n<=999;
|
||||
DO $$ BEGIN
|
||||
IF EXISTS(SELECT 1 FROM operators WHERE display_id IS NULL OR display_id !~ '^(HN|GL)[0-9]{11}$') THEN RAISE EXCEPTION '工作人员历史编号容量或日期异常'; END IF;
|
||||
END $$;
|
||||
ALTER TABLE operators ALTER COLUMN display_id SET NOT NULL;
|
||||
ALTER TABLE operators ADD CONSTRAINT ck_operators_public_display_id CHECK (display_id ~ '^(HN|GL)[0-9]{11}$');
|
||||
CREATE UNIQUE INDEX uk_operators_public_display_id ON operators(display_id);
|
||||
INSERT INTO public_display_id_counters SELECT LEFT(display_id,2), (created_at AT TIME ZONE 'Asia/Shanghai')::date,'',MAX(RIGHT(display_id,3)::int) FROM operators GROUP BY 1,2;
|
||||
UPDATE public_display_id_aliases a SET new_display_id=u.display_number FROM users u WHERE a.entity_type='users' AND a.entity_id=u.id;
|
||||
UPDATE public_display_id_aliases a SET new_display_id=o.display_id FROM operators o WHERE a.entity_type='operators' AND a.entity_id=o.id;
|
||||
|
||||
ALTER TABLE service_appointments ADD COLUMN referral_display_id VARCHAR(13);
|
||||
ALTER TABLE activity_registrations ADD COLUMN referral_display_id VARCHAR(13);
|
||||
ALTER TABLE matchmaker_followups ADD COLUMN referral_display_id VARCHAR(13);
|
||||
WITH referrals AS (
|
||||
SELECT 'service_appointments' tab,id,created_at FROM service_appointments WHERE source='matchmaker_referral'
|
||||
UNION ALL SELECT 'activity_registrations',id,created_at FROM activity_registrations WHERE source='matchmaker_referral'
|
||||
), numbered AS (
|
||||
SELECT *, ROW_NUMBER() OVER(PARTITION BY (created_at AT TIME ZONE 'Asia/Shanghai')::date ORDER BY created_at,tab,id) n FROM referrals
|
||||
)
|
||||
INSERT INTO public_display_id_aliases(entity_type,entity_id,old_display_id,new_display_id)
|
||||
SELECT tab,id,'referral:'||id::text,'ZF'||TO_CHAR(created_at AT TIME ZONE 'Asia/Shanghai','YYYYMMDD')||LPAD(n::text,3,'0') FROM numbered WHERE n<=999;
|
||||
UPDATE service_appointments t SET referral_display_id=a.new_display_id FROM public_display_id_aliases a WHERE a.entity_type='service_appointments' AND a.entity_id=t.id;
|
||||
UPDATE activity_registrations t SET referral_display_id=a.new_display_id FROM public_display_id_aliases a WHERE a.entity_type='activity_registrations' AND a.entity_id=t.id;
|
||||
DO $$ BEGIN
|
||||
IF EXISTS (SELECT 1 FROM service_appointments WHERE source='matchmaker_referral' AND referral_display_id IS NULL)
|
||||
OR EXISTS (SELECT 1 FROM activity_registrations WHERE source='matchmaker_referral' AND referral_display_id IS NULL) THEN RAISE EXCEPTION '历史转介编号容量不足'; END IF;
|
||||
END $$;
|
||||
INSERT INTO public_display_id_counters SELECT 'ZF',TO_DATE(SUBSTRING(new_display_id,3,8),'YYYYMMDD'),'',MAX(RIGHT(new_display_id,3)::int) FROM public_display_id_aliases WHERE new_display_id LIKE 'ZF%' GROUP BY 2;
|
||||
|
||||
CREATE FUNCTION public_assign_display_id() RETURNS TRIGGER LANGUAGE plpgsql AS $$
|
||||
DECLARE prefix TEXT;
|
||||
BEGIN
|
||||
IF TG_OP='UPDATE' THEN
|
||||
IF OLD.display_id IS DISTINCT FROM NEW.display_id THEN RAISE EXCEPTION '公开编号不可更改'; END IF;
|
||||
RETURN NEW;
|
||||
END IF;
|
||||
prefix:=TG_ARGV[0];
|
||||
IF prefix='operator' THEN
|
||||
prefix:=CASE WHEN EXISTS(SELECT 1 FROM operator_roles ort JOIN roles r ON r.id=ort.role_id WHERE ort.operator_id=NEW.id AND r.code IN ('matchmaker','matchmaker_leader')) THEN 'HN' ELSE 'GL' END;
|
||||
END IF;
|
||||
NEW.display_id:=public_next_display_id(prefix,(COALESCE(NEW.created_at,NOW()) AT TIME ZONE 'Asia/Shanghai')::date);
|
||||
RETURN NEW;
|
||||
END $$;
|
||||
DO $$ DECLARE item RECORD; BEGIN
|
||||
FOR item IN SELECT * FROM (VALUES ('activities','HD'),('review_tasks','RW'),('reports','JB'),('matchmaker_services','FW'),('matchmaker_recommendations','TJ'),('matchmaker_contact_authorizations','LX'),('matchmaker_assignments','FP'),('matchmaker_followups','GJ'),('service_appointments','YY'),('operators','operator')) t(tab,prefix)
|
||||
LOOP EXECUTE FORMAT('CREATE TRIGGER assign_public_display_id BEFORE INSERT OR UPDATE ON %I FOR EACH ROW EXECUTE FUNCTION public_assign_display_id(%L)',item.tab,item.prefix); END LOOP;
|
||||
END $$;
|
||||
|
||||
CREATE FUNCTION public_assign_user_number() RETURNS TRIGGER LANGUAGE plpgsql AS $$
|
||||
DECLARE d DATE; number TEXT;
|
||||
BEGIN
|
||||
IF NEW.verification_status='verified' AND NEW.gender IN ('male','female') THEN
|
||||
SELECT display_number,(created_at AT TIME ZONE 'Asia/Shanghai')::date INTO number,d FROM users WHERE id=NEW.user_id FOR UPDATE;
|
||||
IF number IS NULL THEN UPDATE users SET display_number=public_next_display_id('YH',d,NEW.gender) WHERE id=NEW.user_id; END IF;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END $$;
|
||||
CREATE TRIGGER assign_public_user_number AFTER INSERT OR UPDATE ON user_identities FOR EACH ROW EXECUTE FUNCTION public_assign_user_number();
|
||||
|
||||
CREATE FUNCTION public_assign_referral_number() RETURNS TRIGGER LANGUAGE plpgsql AS $$
|
||||
BEGIN
|
||||
IF TG_OP='UPDATE' AND OLD.referral_display_id IS NOT NULL AND OLD.referral_display_id IS DISTINCT FROM NEW.referral_display_id THEN RAISE EXCEPTION '转介编号不可更改'; END IF;
|
||||
IF NEW.source='matchmaker_referral' AND NEW.referral_display_id IS NULL THEN NEW.referral_display_id:=public_next_display_id('ZF',(COALESCE(NEW.created_at,NOW()) AT TIME ZONE 'Asia/Shanghai')::date); END IF;
|
||||
RETURN NEW;
|
||||
END $$;
|
||||
CREATE TRIGGER assign_referral_number BEFORE INSERT OR UPDATE ON service_appointments FOR EACH ROW EXECUTE FUNCTION public_assign_referral_number();
|
||||
CREATE TRIGGER assign_referral_number BEFORE INSERT OR UPDATE ON activity_registrations FOR EACH ROW EXECUTE FUNCTION public_assign_referral_number();
|
||||
CREATE UNIQUE INDEX uk_appointments_referral_number ON service_appointments(referral_display_id);
|
||||
CREATE UNIQUE INDEX uk_registrations_referral_number ON activity_registrations(referral_display_id);
|
||||
CREATE UNIQUE INDEX uk_followups_referral_number ON matchmaker_followups(referral_display_id);
|
||||
ALTER TABLE service_appointments ADD CONSTRAINT ck_appointments_referral_number CHECK (referral_display_id IS NULL OR referral_display_id ~ '^ZF[0-9]{11}$');
|
||||
ALTER TABLE activity_registrations ADD CONSTRAINT ck_registrations_referral_number CHECK (referral_display_id IS NULL OR referral_display_id ~ '^ZF[0-9]{11}$');
|
||||
ALTER TABLE matchmaker_followups ADD CONSTRAINT ck_followups_referral_number CHECK (referral_display_id IS NULL OR referral_display_id ~ '^ZF[0-9]{11}$');
|
||||
|
||||
CREATE FUNCTION public_keep_user_number() RETURNS TRIGGER LANGUAGE plpgsql AS $$
|
||||
BEGIN
|
||||
IF OLD.display_number IS NOT NULL AND OLD.display_number IS DISTINCT FROM NEW.display_number THEN RAISE EXCEPTION '用户公开编号不可更改'; END IF;
|
||||
RETURN NEW;
|
||||
END $$;
|
||||
CREATE TRIGGER keep_public_user_number BEFORE UPDATE ON users FOR EACH ROW EXECUTE FUNCTION public_keep_user_number();
|
||||
|
||||
CREATE VIEW public_display_ids AS
|
||||
SELECT id::text id,display_number display_id,'users'::text entity_type,NULL::text referral_display_id FROM users
|
||||
UNION ALL SELECT id::text,display_id,'operators',NULL FROM operators
|
||||
UNION ALL SELECT id::text,display_id,'activities',NULL FROM activities
|
||||
UNION ALL SELECT id::text,display_id,'review_tasks',NULL FROM review_tasks
|
||||
UNION ALL SELECT id::text,display_id,'reports',NULL FROM reports
|
||||
UNION ALL SELECT id::text,display_id,'matchmaker_services',NULL FROM matchmaker_services
|
||||
UNION ALL SELECT id::text,display_id,'matchmaker_recommendations',NULL FROM matchmaker_recommendations
|
||||
UNION ALL SELECT id::text,display_id,'matchmaker_contact_authorizations',NULL FROM matchmaker_contact_authorizations
|
||||
UNION ALL SELECT id::text,display_id,'matchmaker_assignments',NULL FROM matchmaker_assignments
|
||||
UNION ALL SELECT id::text,display_id,'matchmaker_followups',referral_display_id FROM matchmaker_followups
|
||||
UNION ALL SELECT id::text,display_id,'service_appointments',referral_display_id FROM service_appointments
|
||||
UNION ALL SELECT id::text,referral_display_id,'activity_registrations',referral_display_id FROM activity_registrations WHERE referral_display_id IS NOT NULL;
|
||||
Reference in New Issue
Block a user