aboutsummaryrefslogtreecommitdiff
path: root/challenge-259/luca-ferrari/plpgsql/ch-1.sql
blob: 4b8f2eff5a85aaf287423338e39b1c3297f0d254 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--
-- Perl Weekly Challenge 259
-- Task 1
-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-259>
--

CREATE SCHEMA IF NOT EXISTS pwc259;

CREATE OR REPLACE FUNCTION
pwc259.task1_plpgsql( day date, how_many_days int, holidays date[] )
RETURNS date
AS $CODE$
DECLARE
	current_holiday date;
BEGIN

	WHILE how_many_days > 0 LOOP
	      day := day + 1;

	      WHILE extract( dow from day ) IN ( 0, 6 ) LOOP
	      	 day := day + 1;
              END LOOP;

	      FOREACH current_holiday IN ARRAY holidays LOOP
	      	      IF current_holiday = day THEN
		      	 day := day + 1;
		      END IF;
	      END LOOP;

	      how_many_days := how_many_days - 1;
	END LOOP;

	RETURN day;
END
$CODE$
LANGUAGE plpgsql;