Annotation For rsstg.sql
Logged in as anonymous

Origin for each line in rsstg.sql from check-in 7393d62235:

61df933942 2020-11-18    1: create table rsstg_updates (owner integer, update jsonb);
61df933942 2020-11-18    2: 
61df933942 2020-11-18    3: create unique index rsstg_updates__id on rsstg_updates(update->>'update_id');
61df933942 2020-11-18    4: 
61df933942 2020-11-18    5: create table rsstg_source (
61df933942 2020-11-18    6: 	source_id serial,
f322efafd9 2020-11-30    7: 	channel text not null,
61df933942 2020-11-18    8: 	channel_id integer not null,
61df933942 2020-11-18    9: 	url text not null,
075be7e40e 2020-11-18   10: 	last_scrape not null timestamptz default now(),
659724c658 2021-12-08   11: 	enabled boolean not null default true,
61df933942 2020-11-18   12: 	iv_hash text,
0340541002 2025-04-24   13: 	owner bigint not null,
0340541002 2025-04-24   14: 	url_re text);
61df933942 2020-11-18   15: create unique index rsstg_source__source_id on rsstg_source(source_id);
61df933942 2020-11-18   16: create unique index rsstg_source__channel_id__owner on rsstg_source(channel_id, owner);
61df933942 2020-11-18   17: create index rsstg_source__owner on rsstg_source(owner);
61df933942 2020-11-18   18: 
61df933942 2020-11-18   19: create table rsstg_post (
61df933942 2020-11-18   20: 	source_id integer not null,
4e0a19d772 2021-10-01   21: 	posted timestamptz not null,
61df933942 2020-11-18   22: 	url text not null,
4e0a19d772 2021-10-01   23: 	hour smallint not null generated always as (extract('hour' from posted at time zone 'utc')) stored,
4e0a19d772 2021-10-01   24: 	hxm smallint not null generated always as (hxm(posted)) stored,
7393d62235 2026-01-07   25: 	FOREIGN KEY (source_id) REFERENCES rsstg_source(source_id) on delete cascade
61df933942 2020-11-18   26: );
61df933942 2020-11-18   27: create unique index rsstg_post__url on rsstg_post(url);
61df933942 2020-11-18   28: create index rsstg_post__hour on rsstg_post(hour);
0191d490fe 2020-11-18   29: create index rsstg_post__posted_hour on rsstg_post(posted,hour);
4e0a19d772 2021-10-01   30: create index rsstg_post__hxm on rsstg_post(hxm);
4e0a19d772 2021-10-01   31: create index rsstg_post__posted_hxm on rsstg_post(posted,hxm);
84130ab6bf 2020-11-20   32: 
4e0a19d772 2021-10-01   33: create or replace view rsstg_order_old as
acb0a4ac54 2025-09-28   34: 	select
acb0a4ac54 2025-09-28   35: 		source_id,
acb0a4ac54 2025-09-28   36: 		coalesce(last_scrape + make_interval(0,0,0,0,0,(60 / (coalesce(activity, 1)/7 + 1) )::integer), now() - interval '1 minute') as next_fetch,
acb0a4ac54 2025-09-28   37: 		owner,
acb0a4ac54 2025-09-28   38: 		last_scrape
acb0a4ac54 2025-09-28   39: 	from rsstg_source natural left join
84130ab6bf 2020-11-20   40: 		(select source_id, count(*) as activity
84130ab6bf 2020-11-20   41: 			from rsstg_post where 
84130ab6bf 2020-11-20   42: 				hour = extract('hour' from now())::smallint
4e0a19d772 2021-10-01   43: 				and posted > now() - interval '7 days'
4e0a19d772 2021-10-01   44: 				and posted < now() - interval '1 hour'
4e0a19d772 2021-10-01   45: 			group by source_id) as act
4e0a19d772 2021-10-01   46: 		where enabled
4e0a19d772 2021-10-01   47: 		order by next_fetch;
4e0a19d772 2021-10-01   48: 
4e0a19d772 2021-10-01   49: create or replace function hxm(timestamptz) returns smallint
4e0a19d772 2021-10-01   50: 	as $$ select(extract('hour' from $1) * extract('minute' from $1)); $$
4e0a19d772 2021-10-01   51: 	language sql immutable returns null on null input;
4e0a19d772 2021-10-01   52: 
4e0a19d772 2021-10-01   53: create or replace view rsstg_order as
acb0a4ac54 2025-09-28   54: 	select
acb0a4ac54 2025-09-28   55: 		source_id,
acb0a4ac54 2025-09-28   56: 		coalesce(last_scrape + make_interval(0,0,0,0,0,(60 / (coalesce(activity, 1)/7 + 1) )::integer), now() - interval '1 minute') as next_fetch,
acb0a4ac54 2025-09-28   57: 		owner,
acb0a4ac54 2025-09-28   58: 		last_scrape
acb0a4ac54 2025-09-28   59: 	from rsstg_source natural left join
4e0a19d772 2021-10-01   60: 		(select source_id, count(*) as activity
4e0a19d772 2021-10-01   61: 			from rsstg_post where 
4e0a19d772 2021-10-01   62: 			  (
4e0a19d772 2021-10-01   63: 					(hxm > hxm(now()) - 30 and hxm < hxm(now()) + 30)
4e0a19d772 2021-10-01   64: 					or (hxm < 30 and hxm < hxm(now()) + 30 - 1440)
4e0a19d772 2021-10-01   65: 					or (hxm > 1410 and hxm > 1440 + hxm(now()) - 30)
4e0a19d772 2021-10-01   66: 			  )
4e0a19d772 2021-10-01   67: 				and posted < now() - interval '1 hour'
0191d490fe 2020-11-18   68: 				and posted > now() - interval '7 days'
61df933942 2020-11-18   69: 			group by source_id) as act
61df933942 2020-11-18   70: 		where enabled
61df933942 2020-11-18   71: 		order by next_fetch;