summaryrefslogtreecommitdiff
path: root/lib/VNWeb/Releases
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-08-04 13:46:11 +0200
committerYorhel <git@yorhel.nl>2020-08-07 12:36:58 +0200
commit26279ce6283511ac67c00d1ce98eca56ce3e8e60 (patch)
treeb828ac5859e92ff9dee6990ca2c6a96be9a1b759 /lib/VNWeb/Releases
parent53196ed7a121e41c2fbe72aaecf257ca42ea7349 (diff)
cleanup: Add enrich_release_elm() and releases_by_vn() functions
To abstract some common copy-pasted code. These functions do cause an extra query on some pages. Several, in the case of Chars::Edit.
Diffstat (limited to 'lib/VNWeb/Releases')
-rw-r--r--lib/VNWeb/Releases/Elm.pm13
-rw-r--r--lib/VNWeb/Releases/Lib.pm18
2 files changed, 19 insertions, 12 deletions
diff --git a/lib/VNWeb/Releases/Elm.pm b/lib/VNWeb/Releases/Elm.pm
index f942488f..f4ab8975 100644
--- a/lib/VNWeb/Releases/Elm.pm
+++ b/lib/VNWeb/Releases/Elm.pm
@@ -1,22 +1,13 @@
package VNWeb::Releases::Elm;
use VNWeb::Prelude;
+use VNWeb::Releases::Lib;
# Used by UList.Opt and CharEdit to fetch releases from a VN id.
elm_api Release => undef, { vid => { id => 1 } }, sub {
my($data) = @_;
- my $l = tuwf->dbAlli(
- 'SELECT r.id, r.title, r.original, r.type AS rtype, r.released, r.reso_x, r.reso_y
- FROM releases r
- JOIN releases_vn rv ON rv.id = r.id
- WHERE NOT r.hidden
- AND rv.vid =', \$data->{vid},
- 'ORDER BY r.released, r.title, r.id'
- );
- enrich_flatten lang => id => id => sub { sql('SELECT id, lang FROM releases_lang WHERE id IN', $_, 'ORDER BY lang') }, $l;
- enrich_flatten platforms => id => id => sub { sql('SELECT id, platform FROM releases_platforms WHERE id IN', $_, 'ORDER BY platform') }, $l;
- elm_Releases $l;
+ elm_Releases releases_by_vn $data->{vid};
};
1;
diff --git a/lib/VNWeb/Releases/Lib.pm b/lib/VNWeb/Releases/Lib.pm
index 234de176..87f9c401 100644
--- a/lib/VNWeb/Releases/Lib.pm
+++ b/lib/VNWeb/Releases/Lib.pm
@@ -3,7 +3,23 @@ package VNWeb::Releases::Lib;
use VNWeb::Prelude;
use Exporter 'import';
-our @EXPORT = qw/enrich_release release_row_/;
+our @EXPORT = qw/enrich_release_elm releases_by_vn enrich_release release_row_/;
+
+
+# Enrich a list of releases so that it's suitable as 'Releases' Elm response.
+sub enrich_release_elm {
+ enrich_merge id => 'SELECT id, title, original, released, type as rtype, reso_x, reso_y FROM releases WHERE id IN', @_;
+ enrich_flatten lang => id => id => sub { sql('SELECT id, lang FROM releases_lang WHERE id IN', $_, 'ORDER BY lang') }, @_;
+ enrich_flatten platforms => id => id => sub { sql('SELECT id, platform FROM releases_platforms WHERE id IN', $_, 'ORDER BY platform') }, @_;
+}
+
+# Return the list of releases associated with a VN in the format suitable as 'Releases' Elm response.
+sub releases_by_vn {
+ my($id) = @_;
+ my $l = tuwf->dbAlli('SELECT r.id FROM releases r JOIN releases_vn rv ON rv.id = r.id WHERE NOT r.hidden AND rv.vid =', \$id, 'ORDER BY r.released, r.title, r.id');
+ enrich_release_elm $l;
+ $l
+}
# Enrich a list of releases so that it's suitable for release_row_().