hpr_generator/templates/queries-index-mysql.tpl.html
Dave Morriss c8135d811d Bug fix of query to find days to next free slot
templates/queries-index-mysql.tpl.html,
templates/queries-index-sqlite.tpl.html:
    Rather than driving the search from the eps table itself, this
    version makes a counter that generates slot numbers from the current
    show number to the highest show number in the system. The counter is
    used to interrogate the eps table to find the first empty slot. This
    sems to be a more reliable approach (but time will tell).
2023-10-20 13:37:37 +01:00

77 lines
1.9 KiB
HTML

<!--% query_next_available_episode = '
WITH RECURSIVE
min_id AS (
SELECT max(id) AS start_id FROM eps WHERE date <= NOW()
),
max_id AS (
SELECT max(id) AS end_id FROM eps
),
cnt(x) AS (
SELECT start_id from min_id
UNION ALL
SELECT x+1 FROM cnt
WHERE x+1 <= (SELECT end_id FROM max_id)
),
first_empty AS (
SELECT
cnt.x AS id
FROM cnt
LEFT JOIN eps e ON cnt.x = e.id
WHERE e.id IS NULL
)
SELECT
fe.id as next_id,
(SELECT DATE(ADDDATE(e2.date,1)) from eps e2 where e2.id = fe.id-1) as next_date,
DATEDIFF((SELECT ADDDATE(e3.date,1) from eps e3 where e3.id = fe.id-1),now()) AS delta_days
FROM first_empty AS fe
LEFT JOIN eps e1 ON fe.id = e1.id
LIMIT 1
'
%-->
<!--% query_latest_episodes = '
WITH comment_tallies AS (
SELECT
eps_id,
COUNT(eps_id) AS eps_tally
FROM comments
GROUP BY eps_id
)
SELECT
eps.id,
eps.explicit,
eps.date, eps.license, eps.duration,
eps.title, eps.summary, eps.tags,
eps.notes,
hosts.local_image,
hosts.hostid,
hosts.host, hosts.email,
miniseries.name AS series, miniseries.id AS seriesid,
COALESCE (comment_tallies.eps_tally, 0) AS eps_tally
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
LEFT JOIN comment_tallies ON eps.id = comment_tallies.eps_id
WHERE eps.date <= UTC_DATE()
ORDER BY eps.id DESC
LIMIT 10
'
%-->
<!--% query_last_5_weeks_episodes = '
SELECT
eps.id,
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS explicit ,
eps.date, eps.license, eps.title, eps.summary,
eps.duration, eps.notes, eps.tags,
hosts.hostid,
hosts.host, hosts.email, hosts.local_image,
miniseries.name AS series, miniseries.id AS seriesid
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
WHERE eps.date <= UTC_DATE()
ORDER BY eps.id DESC
LIMIT 30 OFFSET 10
'
%-->