churn: Remove systems.relorder column + misc cleanup
This commit is contained in:
parent
3db1283a16
commit
f3323de5e4
10 changed files with 72 additions and 338 deletions
21
www/index.pl
21
www/index.pl
|
|
@ -63,7 +63,7 @@ sub systems {
|
|||
state $s ||= [ map {
|
||||
$_->{full} = $_->{name}.($_->{release}?' '.$_->{release}:'');
|
||||
$_
|
||||
} tuwf->dbAll('SELECT id, name, release, short, relorder FROM systems ORDER BY name, relorder')->@* ];
|
||||
} tuwf->dbAll('SELECT id, name, release, short FROM systems ORDER BY name, id')->@* ];
|
||||
}
|
||||
|
||||
sub sysbyid { state $s ||= { map +($_->{id}, $_), systems->@* } }
|
||||
|
|
@ -134,13 +134,16 @@ sub man_pref {
|
|||
# 3. stdloc: Prefer man pages in standard locations
|
||||
# 4. secmatch: Prefer an exact section match
|
||||
# 5. arch: Prefer Arch over other systems (because it tends to be the most up-to-date, and closest to upstreams)
|
||||
# 6. debian: If there's no Arch, prefer Debian over other systems (again, tends to be more up-to-date)
|
||||
# 6. debian: If there's no Arch, prefer latest Debian over other systems (again, tends to be more up-to-date)
|
||||
# (also resolves distro-specific tooling disputes such as https://code.blicky.net/yorhel/manned/issues/1 )
|
||||
# 7. sysrel: Prefer a later system release over an older release
|
||||
# 7. sysrel: Prefer a more recent system release over an older release
|
||||
# 8. secorder: Lower sections before higher sections (because man does it this way, for some reason)
|
||||
# 9. pkgdate: Prefer more recent packages (cross-distro)
|
||||
# 10. Fall back on hash comparison, to ensure the result is stable
|
||||
|
||||
state $archid = sysbyshort->{arch}{id};
|
||||
state $debid = (sort { $b->{id} <=> $a->{id} } grep $_->{short} =~ /^debian-/, systems->@*)[0]{id};
|
||||
|
||||
tuwf->dbRowi(q{
|
||||
WITH unfiltered AS (
|
||||
SELECT s AS sys, p AS pkg, v AS ver, m AS man
|
||||
|
|
@ -158,11 +161,11 @@ sub man_pref {
|
|||
), f_secmatch AS(
|
||||
SELECT * FROM f_stdloc WHERE NOT EXISTS(SELECT 1 FROM f_stdloc WHERE (man).section =}, \$section, q{) OR (man).section =}, \$section, q{
|
||||
), f_arch AS(
|
||||
SELECT * FROM f_secmatch WHERE NOT EXISTS(SELECT 1 FROM}, length $section ? 'f_secmatch' : 'f_stdloc', q{WHERE (sys).id = 1) OR (sys).id = 1
|
||||
SELECT * FROM f_secmatch WHERE NOT EXISTS(SELECT 1 FROM}, length $section ? 'f_secmatch' : 'f_stdloc', qq{WHERE (sys).id = $archid) OR (sys).id = $archid
|
||||
), f_debian AS(
|
||||
SELECT * FROM f_arch WHERE NOT EXISTS(SELECT 1 FROM f_arch WHERE (sys).name = 'Debian') OR (sys).name = 'Debian'
|
||||
SELECT * FROM f_arch WHERE NOT EXISTS(SELECT 1 FROM f_arch WHERE (sys).id = $debid) OR (sys).id = $debid
|
||||
), f_sysrel AS(
|
||||
SELECT * FROM f_debian a WHERE NOT EXISTS(SELECT 1 FROM f_debian b WHERE (a.sys).name = (b.sys).name AND (a.sys).relorder < (b.sys).relorder)
|
||||
SELECT * FROM f_debian a WHERE NOT EXISTS(SELECT 1 FROM f_debian b WHERE (a.sys).name = (b.sys).name AND (a.sys).id < (b.sys).id)
|
||||
), f_secorder AS(
|
||||
SELECT * FROM f_sysrel a WHERE NOT EXISTS(SELECT 1 FROM f_sysrel b WHERE (a.man).section > (b.man).section)
|
||||
), f_pkgdate AS(
|
||||
|
|
@ -778,9 +781,7 @@ TUWF::get qr{/pkg/([^/]+)} => sub {
|
|||
p => { onerror => 1, uint => 1, range => [1,200] },
|
||||
)->data;
|
||||
|
||||
my $where = sql 'system =', \$sys->{id},
|
||||
$f->{c} eq '0' ? ('AND (ASCII(name) < 97 OR ASCII(name) > 122) AND (ASCII(name) < 65 OR ASCII(name) > 90)') :
|
||||
$f->{c} ne 'all' ? ('AND LOWER(SUBSTR(name, 1, 1)) =', \$f->{c}) : ();
|
||||
my $where = sql 'system =', \$sys->{id}, $f->{c} ne 'all' ? ('AND match_firstchar(name,', \$f->{c}, ')') : ();
|
||||
my $count = tuwf->dbVali('SELECT count(*) FROM', $packages_with_man, 'p WHERE', $where);
|
||||
my $pkg = tuwf->dbPagei({ results => 200, page => $f->{p} },
|
||||
'SELECT id, system, name, category FROM', $packages_with_man, 'p WHERE', $where, 'ORDER BY name, category'
|
||||
|
|
@ -960,7 +961,7 @@ TUWF::get '/json/tree.json' => sub {
|
|||
length $f->{locale} ? sql 'm.locale =', \$f->{locale} : (),
|
||||
defined $f->{locale} && $f->{locale} eq '' ? 'm.locale IS NULL' : (),
|
||||
), '
|
||||
ORDER BY s.name, s.relorder DESC, p.name, v.released DESC, m.name, m.locale NULLS FIRST, m.filename
|
||||
ORDER BY s.name, s.id DESC, p.name, v.released DESC, m.name, m.locale NULLS FIRST, m.filename
|
||||
');
|
||||
|
||||
# Convert the list into a tree
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue