mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-23 06:04:53 +00:00
Fill out the new schema a bit more
This commit is contained in:
parent
3e2fce3129
commit
94b816ff53
1 changed files with 99 additions and 13 deletions
|
@ -3,39 +3,125 @@
|
|||
-- See LICENSE and AUTHORS files for details
|
||||
|
||||
-- Create a temporary table mapping old article IDs to new article IDs per-user.
|
||||
-- This will have the result of every article ID being new, which will make the initial sync painful,
|
||||
-- but it will avoid potential weird behaviour
|
||||
-- Any articles which have only one subscription will be unchanged, which will
|
||||
-- limit the amount of disruption
|
||||
create table arsse_articles_map(
|
||||
article int not null,
|
||||
subscription int not null,
|
||||
owner text not null,
|
||||
id integer primary key autoincrement
|
||||
);
|
||||
insert into arsse_articles_map(article, subscription) values(1,1);
|
||||
insert into arsse_articles_map(article, subscription, owner) values(1, 1, '');
|
||||
delete from arsse_articles_map;
|
||||
update sqlite_sequence set seq = (select max(id) from arsse_articles) where name = 'arsse_articles_map';
|
||||
insert into arsse_articles_map(article, subscription)
|
||||
select arsse_articles.id as article, arsse_subscriptions.id as subscription from arsse_articles cross join arsse_subscriptions using(feed);
|
||||
select
|
||||
a.id as article,
|
||||
s.id as subscription,
|
||||
s,owner as owner
|
||||
from arsse_articles as a cross join arsse_subscriptions as s using(feed)
|
||||
where feed in (
|
||||
select feed from (select feed, count(*) as count from arsse_subscriptions group by feed) as c where c.count > 1
|
||||
);
|
||||
insert into arsse_articles_map(article, subscription, owner, id)
|
||||
select
|
||||
a.id as article,
|
||||
s.id as subscription,
|
||||
s.owner as owner,
|
||||
a.id as id
|
||||
from arsse_articles as a cross join arsse_subscriptions as s using(feed)
|
||||
where feed in (
|
||||
select feed from (select feed, count(*) as count from arsse_subscriptions group by feed) as c where c.count = 1
|
||||
);
|
||||
|
||||
-- Perform a similar reset for editions
|
||||
-- Create a new articles table which combines the marks table but does not include content
|
||||
create table arsse_articles_new(
|
||||
id integer primary key,
|
||||
subscription integer not null references arsse_subscriptions(id) on delete cascade on update cascade,
|
||||
read boolean not null default 0,
|
||||
starred boolean not null default 0,
|
||||
hidden boolean not null default 0,
|
||||
published text,
|
||||
edited text,
|
||||
modified text not null default CURRENT_TIMESTAMP,
|
||||
marked text,
|
||||
url text,
|
||||
title text collate nocase,
|
||||
author text collate nocase,
|
||||
guid text,
|
||||
url_title_hash text not null,
|
||||
url_content_hash text not null,
|
||||
title_content_hash text not null,
|
||||
note text not null default ''
|
||||
);
|
||||
insert into arsse_articles_new
|
||||
select
|
||||
i.id,
|
||||
i.subscription,
|
||||
m.read,
|
||||
m.starred,
|
||||
m.hidden,
|
||||
a.published,
|
||||
a.edited,
|
||||
a.modified,
|
||||
m.modified,
|
||||
a.url,
|
||||
a.title,
|
||||
a.author,
|
||||
a.guid,
|
||||
a.url_title_hash,
|
||||
a_url_content_hash,
|
||||
a.title_content_hash,
|
||||
m.note
|
||||
from arsse_articles_map as i
|
||||
left join arsse_articles as a on a.id = i.article
|
||||
left join arsse_marks as m on a.id = m.article;
|
||||
|
||||
-- Create a new table to hold article content
|
||||
create table arsse_article_contents(
|
||||
id integer primary key references arsse_articles(id) on delete cascade on update cascade,
|
||||
content text
|
||||
);
|
||||
insert into arsse_article_contents
|
||||
select
|
||||
i.id,
|
||||
a.content
|
||||
from arsse_articles_map as i
|
||||
left join arsse_articles as a on a.id = i.article;
|
||||
|
||||
-- Create a new table for editions
|
||||
create table arsse_editions_temp(
|
||||
id integer primary key autoincrement,
|
||||
article integer
|
||||
);
|
||||
create table arsse_editions_new(
|
||||
id integer primary key,
|
||||
article integer references arsse_articles(id) on delete cascade on update cascade
|
||||
);
|
||||
insert into arsse_editions_temp values(1,1);
|
||||
delete from arsse_editions_temp;
|
||||
update sqlite_sequence set seq = (select max(id) from arsse_editions) where name = 'arsse_editions_temp';
|
||||
insert into arsse_editions_temp(article) select id from arsse_articles_map;
|
||||
insert into arsse_editions_temp(article) select id from arsse_articles_map where id = article;
|
||||
insert into arsse_editions_temp(id, article)
|
||||
select id, article from arsse_editions where article in (select article from arsse_editions_temp where id <> article);
|
||||
insert into arsse_editions_new select * from arsse_editions_temp;
|
||||
|
||||
-- Create a new articles table which combines the marks table
|
||||
|
||||
-- Create a new table to hold article content
|
||||
|
||||
-- Fix up the enclosures table
|
||||
-- Create a new enclosures table
|
||||
create table arsse_enclosures_new(
|
||||
article integer not null references arsse_articles(id) on delete cascade,
|
||||
url text,
|
||||
type text
|
||||
);
|
||||
insert into arsse_enclosures_new
|
||||
select
|
||||
i.id,
|
||||
e.url,
|
||||
e.type
|
||||
from arsse_articles_map as i
|
||||
join arsse_enclosures as e on e.article = i.article;
|
||||
|
||||
-- Fix up the label members table
|
||||
|
||||
-- Rebuild the editions table
|
||||
|
||||
-- Create a new subscriptions table which combines the feeds table
|
||||
|
||||
-- Fix up the tag members table
|
||||
|
|
Loading…
Reference in a new issue