mirror of https://github.com/LemmyNet/lemmy.git
Adding unique constraint for activity ap_id. Fixes #1878
parent
76c4378011
commit
744f242061
|
@ -127,7 +127,7 @@ mod tests {
|
|||
let inserted_activity = Activity::create(&conn, &activity_form).unwrap();
|
||||
|
||||
let expected_activity = Activity {
|
||||
ap_id: Some(ap_id.clone()),
|
||||
ap_id: ap_id.clone(),
|
||||
id: inserted_activity.id,
|
||||
data: test_json,
|
||||
local: true,
|
||||
|
|
|
@ -5,7 +5,7 @@ table! {
|
|||
local -> Bool,
|
||||
published -> Timestamp,
|
||||
updated -> Nullable<Timestamp>,
|
||||
ap_id -> Nullable<Text>,
|
||||
ap_id -> Text,
|
||||
sensitive -> Nullable<Bool>,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ pub struct Activity {
|
|||
pub local: bool,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub ap_id: Option<DbUrl>,
|
||||
pub ap_id: DbUrl,
|
||||
pub sensitive: Option<bool>,
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
alter table activity alter column ap_id drop not null;
|
||||
|
||||
create unique index idx_activity_unique_apid on activity ((data ->> 'id'::text));
|
||||
|
||||
drop index idx_activity_ap_id;
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
-- Delete the empty ap_ids
|
||||
delete from activity where ap_id is null;
|
||||
|
||||
-- Make it required
|
||||
alter table activity alter column ap_id set not null;
|
||||
|
||||
-- Delete dupes, keeping the first one
|
||||
delete
|
||||
from activity
|
||||
where id not in (
|
||||
select min(id)
|
||||
from activity
|
||||
group by ap_id
|
||||
);
|
||||
|
||||
-- The index
|
||||
create unique index idx_activity_ap_id on activity(ap_id);
|
||||
|
||||
-- Drop the old index
|
||||
drop index idx_activity_unique_apid;
|
||||
|
Loading…
Reference in New Issue