forked from HPR/hpr_generator
		
	Merge pull request 'fix2_next_available_episode' (#175) from fix2_next_available_episode into main
Reviewed-on: rho_n/hpr_generator#175
This commit is contained in:
		| @@ -1,29 +1,31 @@ | ||||
| <!--% query_next_available_episode = ' | ||||
|     WITH next_id AS ( | ||||
| 	SELECT id, id + 1 AS id_next, date as last_date | ||||
| 	    FROM eps | ||||
| 	    WHERE eps.date > NOW() | ||||
|     WITH RECURSIVE | ||||
|     min_id AS ( | ||||
| 	SELECT max(id) AS start_id FROM eps WHERE date <= NOW() | ||||
|     ), | ||||
|     free_slot AS ( | ||||
|     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 | ||||
| 	    last_date AS prev_date, | ||||
| 	    CASE | ||||
| 		WHEN DAYOFWEEK(last_date) = 6 | ||||
| 		    THEN 3 | ||||
| 		ELSE 1 | ||||
| 	    END AS date_offset, | ||||
| 	    next_id.id_next AS empty_slot | ||||
| 	FROM next_id | ||||
| 	LEFT JOIN eps ON next_id.id_next = eps.id | ||||
| 	WHERE eps.id IS NULL | ||||
| 	ORDER BY next_id.id | ||||
| 	LIMIT 1 | ||||
| 	    cnt.x AS id | ||||
| 	FROM cnt | ||||
| 	LEFT JOIN eps e ON cnt.x = e.id | ||||
| 	WHERE e.id IS NULL | ||||
|     ) | ||||
|     SELECT | ||||
| 	empty_slot AS next_id, | ||||
| 	ADDDATE(prev_date,date_offset) AS next_date, | ||||
| 	DATEDIFF(ADDDATE(prev_date,date_offset),NOW()) AS delta_days | ||||
|     FROM free_slot | ||||
| 	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 = ' | ||||
|   | ||||
| @@ -1,29 +1,31 @@ | ||||
| <!--% query_next_available_episode = ' | ||||
|     WITH next_id AS ( | ||||
| 	SELECT id, id + 1 AS id_next, date as last_date | ||||
| 	FROM eps | ||||
| 	WHERE eps.date > date(\'now\') | ||||
|     WITH RECURSIVE | ||||
|     min_id AS ( | ||||
| 	SELECT max(id) AS start_id FROM eps WHERE date <= date(\'now\') | ||||
|     ), | ||||
|     free_slot AS ( | ||||
|     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 | ||||
| 	    last_date AS prev_date, | ||||
| 	    CASE | ||||
| 		WHEN strftime(\'%w\',last_date) = \'5\' | ||||
| 		    THEN \'+3 days\' | ||||
| 		ELSE \'+1 days\' | ||||
| 	    END AS date_offset, | ||||
| 	    next_id.id_next AS empty_slot | ||||
| 	FROM next_id | ||||
| 	LEFT JOIN eps ON next_id.id_next = eps.id | ||||
| 	WHERE eps.id IS NULL | ||||
| 	ORDER BY next_id.id | ||||
| 	LIMIT 1 | ||||
| 	    cnt.x AS id | ||||
| 	FROM cnt | ||||
| 	LEFT JOIN eps e ON cnt.x = e.id | ||||
| 	WHERE e.id IS NULL | ||||
|     ) | ||||
|     SELECT | ||||
| 	empty_slot AS next_id, | ||||
| 	DATE (prev_date, date_offset) AS next_date, | ||||
| 	printf(\'%i\',abs(julianday(DATE (prev_date, date_offset)) - julianday(\'now\') + 1)) AS delta_days | ||||
|     FROM free_slot | ||||
| 	fe.id as next_id, | ||||
| 	(SELECT date(eps.date,\'+1 day\') from eps where id = fe.id-1) as next_date, | ||||
| 	printf(\'%i\',abs(julianday((SELECT date(eps.date,\'+1 day\') from eps where id = fe.id-1)) - julianday(\'now\') + 1)) AS delta_days | ||||
|     FROM first_empty AS fe | ||||
|     LEFT JOIN eps e ON fe.id = e.id | ||||
|     LIMIT 1 | ||||
| ' | ||||
| %--> | ||||
| <!--% query_latest_episodes = ' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user