diff options
author | Yorhel <git@yorhel.nl> | 2022-08-30 10:42:09 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2022-08-30 10:42:09 +0200 |
commit | 34fabe3ebeb17119aac578bcb224fd9c74fb93ea (patch) | |
tree | 7551db74b71973577496e50d8d293c0ba8487122 /lib | |
parent | fcab0435c90414b60566b3d8c424a0263d0ce0e4 (diff) |
Rename users_prefs_tags.tag -> tid, add update script
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNWeb/User/Edit.pm | 6 | ||||
-rw-r--r-- | lib/VNWeb/VN/Page.pm | 16 |
2 files changed, 11 insertions, 11 deletions
diff --git a/lib/VNWeb/User/Edit.pm b/lib/VNWeb/User/Edit.pm index 6620f22b..41353615 100644 --- a/lib/VNWeb/User/Edit.pm +++ b/lib/VNWeb/User/Edit.pm @@ -63,7 +63,7 @@ my $FORM = { alttitle_langs => { langpref => 1 }, tagprefs => { sort_keys => 'tag', maxlength => 500, aoh => { - tag => { vndbid => 'g' }, + tid => { vndbid => 'g' }, spoil => { int => 1, range => [ -1, 3 ] }, childs => { anybool => 1 }, name => {}, @@ -119,7 +119,7 @@ TUWF::get qr{/$RE{uid}/edit}, sub { $u->{prefs}{title_langs} = langpref_parse($u->{prefs}{title_langs}) // $DEFAULT_TITLE_LANGS; $u->{prefs}{alttitle_langs} = langpref_parse($u->{prefs}{alttitle_langs}) // $DEFAULT_ALTTITLE_LANGS; $u->{prefs}{traits} = tuwf->dbAlli('SELECT u.tid, t.name, g.name AS "group" FROM users_traits u JOIN traits t ON t.id = u.tid LEFT JOIN traits g ON g.id = t.group WHERE u.id =', \$u->{id}, 'ORDER BY g.order, t.name'); - $u->{prefs}{tagprefs} = tuwf->dbAlli('SELECT u.tag, u.spoil, u.childs, t.name FROM users_prefs_tags u JOIN tags t ON t.id = u.tag WHERE u.id =', \$u->{id}, 'ORDER BY t.name'); + $u->{prefs}{tagprefs} = tuwf->dbAlli('SELECT u.tid, u.spoil, u.childs, t.name FROM users_prefs_tags u JOIN tags t ON t.id = u.tid WHERE u.id =', \$u->{id}, 'ORDER BY t.name'); } $u->{admin} = auth->permDbmod || auth->permUsermod || auth->permTagmod || auth->permBoardmod ? @@ -171,7 +171,7 @@ elm_api UserEdit => $FORM_OUT, $FORM_IN, sub { tuwf->dbExeci('INSERT INTO users_traits', { id => $data->{id}, tid => $_->{tid} }) for $p->{traits}->@*; tuwf->dbExeci('DELETE FROM users_prefs_tags WHERE id =', \$data->{id}); - tuwf->dbExeci('INSERT INTO users_prefs_tags', { id => $data->{id}, tag => $_->{tag}, spoil => $_->{spoil}, childs => $_->{childs} }) for $p->{tagprefs}->@*; + tuwf->dbExeci('INSERT INTO users_prefs_tags', { id => $data->{id}, tid => $_->{tid}, spoil => $_->{spoil}, childs => $_->{childs} }) for $p->{tagprefs}->@*; } if(auth->permUsermod) { diff --git a/lib/VNWeb/VN/Page.pm b/lib/VNWeb/VN/Page.pm index 463977c6..68b31c54 100644 --- a/lib/VNWeb/VN/Page.pm +++ b/lib/VNWeb/VN/Page.pm @@ -47,19 +47,19 @@ sub enrich_vn { WHERE tv.vid =', \$v->{id}, ' ORDER BY rating DESC, t.name' ) : tuwf->dbAlli(' - WITH RECURSIVE tag_prefs (tag, spoil, childs) AS ( - SELECT tag, spoil, childs FROM users_prefs_tags WHERE id =', \auth->uid, ' - ), tag_overrides (tag, spoil, childs) AS ( - SELECT tag, spoil, childs FROM tag_prefs + WITH RECURSIVE tag_prefs (tid, spoil, childs) AS ( + SELECT tid, spoil, childs FROM users_prefs_tags WHERE id =', \auth->uid, ' + ), tag_overrides (tid, spoil, childs) AS ( + SELECT tid, spoil, childs FROM tag_prefs UNION ALL SELECT tp.id, x.spoil, true FROM tag_overrides x - JOIN tags_parents tp ON tp.parent = x.tag AND tp.main - WHERE x.childs AND NOT EXISTS(SELECT 1 FROM tag_prefs y WHERE y.tag = tp.id) - ) SELECT t.id, t.name, t.cat, tv.rating, COALESCE(x.spoil, tv.spoiler) AS spoiler, tv.lie, x.tag IS NOT NULL AS override + JOIN tags_parents tp ON tp.parent = x.tid AND tp.main + WHERE x.childs AND NOT EXISTS(SELECT 1 FROM tag_prefs y WHERE y.tid = tp.id) + ) SELECT t.id, t.name, t.cat, tv.rating, COALESCE(x.spoil, tv.spoiler) AS spoiler, tv.lie, x.tid IS NOT NULL AS override FROM tags t JOIN tags_vn_direct tv ON t.id = tv.tag - LEFT JOIN tag_overrides x ON x.tag = tv.tag + LEFT JOIN tag_overrides x ON x.tid = tv.tag WHERE tv.vid =', \$v->{id}, 'AND x.spoil IS DISTINCT FROM 1+1+1 ORDER BY rating DESC, t.name' ); |