-- This is an empty migration.
-- Date d'ancrage fix. Période 1 = 2023-12-17 => 2023-12-30
WITH anchor AS (
  SELECT '2023-12-17'::date AS anchor_date
),


--definition des bornes d'archivage et de visionnement futur ( 6 mois avant la periode actuelle et 1 mois apres la periode actuelle)
With bounds As (
    SELECT
    (now()::date - INTERVAL ' 6 months')::date AS start_bound,
    (now()::date - INTERVAL ' 1 month')::date AS end_bound,
    anchor.anchor_date
    FROM anchor
),

--determination des dates d'une periode
series AS (
    SELECT
    generate_series(
        bounds.start_bound,
        bounds.end_bound,
        '14 days'
    ) AS period_start
    bounds.anchor_date
    FROM bounds
)

--creation de la vue
CREATE OR REPACE VIEW "pay_period" AS
SELECT

    ((row_number() OVER (ORDER BY period_start) - 1) % 26) + 1 
    AS period_number,

    period_start                      AS start_date, --date de début de la periode
    period_start + INTERVAL '13 days' AS end_date, -- date de fin de la periode

    EXTRACT(YEAR FROM period_start)::int AS year,

    --label pour affichage
    || ' → '
    || to_char(period_start + INTERVAL '13 days', 'YYYY-MM-DD')
    AS label

FROM series;
OERDER BY period_start;