WITH 
----------raw message content---------------
ext AS (
    SELECT 
        -- t.filename
         (t.mdate - ((EXTRACT(DOW FROM t.mdate) - 5 + 7) % 7) * INTERVAL '1 day')::date AS week_ending
        ,t.mdate
        ,message->>'rep' rep
        ,message->>'text' markdown
        ,to_char(row_number() OVER (partition by (t.mdate - ((EXTRACT(DOW FROM t.mdate) - 5 + 7) % 7) * INTERVAL '1 day')::date),'FM000') seq
    FROM 
        rlarp.thirtysec t
    ORDER BY 
        t.mdate DESC
)
----------create unqiue list of weeks-------
,wk AS (
    SELECT 
         week_ending
        ,'# '||week_ending markdown
        ,to_char(row_number() OVER (ORDER BY week_ending DESC),'FM000') seq
    FROM 
        ext 
        CROSS JOIN (VALUES ('A'),('B')) r (flag)
    GROUP BY 
        week_ending
    ORDER BY 
         week_ending ASC
)
,wkh AS (
    SELECT
        w.week_ending
        ,w.seq||'.'||'000' || '.' || r.flag seq
        ,CASE r.flag 
            WHEN 'A' THEN w.markdown 
            WHEN 'B' THEN ''
        END markdown
    FROM
        wk w
        CROSS JOIN (VALUES ('A'),('B')) r (flag)
)
--------level 2 message header----------
,msg AS (
    SELECT 
        e.week_ending
        ,w.seq || '.' || e.seq || '.' || r.flag seq
        ,CASE r.flag 
            WHEN 'A' THEN '## [['|| e.rep ||']]  ' || e.week_ending
            WHEN 'B' THEN ''
            WHEN 'C' THEN e.markdown
            WHEN 'D' THEN ''
        END markdown
        -- ,r.flag
    FROM 
        ext e
        CROSS JOIN (VALUES ('A'),('B'),('C'),('D')) r (flag)
        INNER JOIN wk w ON 
            w.week_ending = e.week_ending
)
,stack AS (
    SELECT 
        week_ending
        ,seq 
        ,markdown
    FROM 
        msg
    UNION ALL
    SELECT 
        week_ending
        ,seq 
        ,markdown
    FROM 
        wkh
)
SELECT markdown FROM stack order by seq
