@@ -21,36 +21,6 @@ def migrate(env, version):
2121 openupgrade .logged_query (
2222 env .cr ,
2323 """
24- WITH latest_records AS (
25- SELECT
26- mu.id,
27- CAST(SPLIT_PART(mu.unsubscriber_id, ',', 2) AS INTEGER) AS contact_id,
28- COALESCE(mu.mass_mailing_id, rel.mailing_list_id) AS list_id,
29- mu.action,
30- mu.reason_id,
31- mu.create_uid,
32- mu.write_uid,
33- mu.date,
34- mu.create_date,
35- mu.write_date,
36- mu.metadata,
37- -- Window function to rank records for each contact-list pair
38- ROW_NUMBER() OVER (
39- PARTITION BY
40- CAST(SPLIT_PART(mu.unsubscriber_id, ',', 2) AS INTEGER),
41- COALESCE(mu.mass_mailing_id, rel.mailing_list_id)
42- ORDER BY mu.id DESC
43- ) AS rn
44- FROM
45- mail_unsubscription mu
46- LEFT JOIN
47- mail_unsubscription_mailing_list_rel rel ON mu.id = rel.mail_unsubscription_id
48- WHERE
49- mu.unsubscriber_id LIKE 'mailing.contact,%'
50- AND SPLIT_PART(mu.unsubscriber_id, ',', 2) ~ '^[0-9]+$'
51- AND (mu.mass_mailing_id IS NOT NULL OR rel.mailing_list_id IS NOT NULL)
52- AND mu.action IN ('subscription', 'unsubscription')
53- )
5424 INSERT INTO mailing_subscription (
5525 contact_id,
5626 list_id,
@@ -64,27 +34,32 @@ def migrate(env, version):
6434 metadata
6535 )
6636 SELECT
67- contact_id ,
68- list_id ,
69- reason_id AS opt_out_reason_id ,
70- create_uid,
71- write_uid,
37+ CAST(SPLIT_PART(mu.unsubscriber_id, ',', 2) AS INTEGER) ,
38+ rel.mailing_list_id ,
39+ mu. reason_id,
40+ mu. create_uid,
41+ mu. write_uid,
7242 CASE
73- WHEN action = 'unsubscription' THEN TRUE
74- WHEN action = 'subscription' THEN FALSE
75- END AS opt_out ,
43+ WHEN mu. action = 'unsubscription' THEN TRUE
44+ WHEN mu. action = 'subscription' THEN FALSE
45+ END,
7646 CASE
77- WHEN action = 'unsubscription' THEN date
47+ WHEN mu. action = 'unsubscription' THEN date
7848 ELSE NULL
79- END AS opt_out_datetime,
80- create_date,
81- write_date,
82- metadata
83- FROM
84- latest_records
49+ END,
50+ mu.create_date,
51+ mu.write_date,
52+ mu.metadata
53+ FROM mail_unsubscription mu
54+ JOIN mail_unsubscription_mailing_list_rel rel
55+ ON mu.id = rel.mail_unsubscription_id
8556 WHERE
86- rn = 1; -- Only take the most recent record for each contact-list pair
87- """ , # noqa: E501
57+ mu.unsubscriber_id LIKE 'mailing.contact,%'
58+ AND SPLIT_PART(mu.unsubscriber_id, ',', 2) ~ '^[0-9]+$'
59+ AND mu.action IN ('subscription', 'unsubscription')
60+ ORDER BY mu.create_date desc
61+ ON CONFLICT DO NOTHING
62+ """ ,
8863 )
8964 # Blacklist metadata
9065 openupgrade .logged_query (
0 commit comments