-- The Activitypub activity table -- All user actions must create a row here. create table activity ( id serial primary key, user_id int references user_ on update cascade on delete cascade not null, -- Ensures that the user is set up here. data jsonb not null, local boolean not null default true, published timestamp not null default now(), updated timestamp ); -- Making sure that id is unique create unique index idx_activity_unique_apid on activity ((data ->> 'id'::text)); -- Add federation columns to the two actor tables alter table user_ -- TODO uniqueness constraints should be added on these 3 columns later add column actor_id character varying(255) not null default 'http://fake.com', -- This needs to be checked and updated in code, building from the site url if local add column bio text, -- not on community, already has description add column local boolean not null default true, add column private_key text, -- These need to be generated from code add column public_key text, add column last_refreshed_at timestamp not null default now() -- Used to re-fetch federated actor periodically ; -- Community alter table community add column actor_id character varying(255) not null default 'http://fake.com', -- This needs to be checked and updated in code, building from the site url if local add column local boolean not null default true, add column private_key text, -- These need to be generated from code add column public_key text, add column last_refreshed_at timestamp not null default now() -- Used to re-fetch federated actor periodically ; -- Don't worry about rebuilding the views right now.