Changes between Version 7 and Version 8 of AdvancedDatabaseDevelopment


Ignore:
Timestamp:
08/24/26 17:04:56 (13 days ago)
Author:
211099
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedDatabaseDevelopment

    v7 v8  
    4141    u.user_name,
    4242    u.surname,
    43     st.status,
     43    s.status,
    4444    COUNT(DISTINCT ch.chapter_id) AS total_chapters,
    4545    COALESCE(SUM(ch.view_count), 0) AS total_views,
     
    5252JOIN writer w   ON s.user_id    = w.user_id
    5353JOIN users u   ON w.user_id    = u.user_id
    54 JOIN "status" st  ON s.story_id   = st.story_id
    5554LEFT JOIN chapter ch  ON s.story_id   = ch.story_id
    5655LEFT JOIN likes l   ON s.story_id   = l.story_id
     
    6160    s.story_id, s.short_description, s.mature_content,
    6261    s.image, s.story_created_at,
    63     u.username, u.user_name, u.surname, st.status;
     62    u.username, u.user_name, u.surname, s.status;
    6463}}}
    6564==== Top 10 most popular stories by likes count
     
    7069    s.short_description,
    7170    u.username AS writer,
    72     st.status,
     71    s.status,
    7372    COUNT(DISTINCT l.user_id)  AS total_likes,
    7473    COUNT(DISTINCT c.comment_id) AS total_comments,
     
    7776JOIN writer w   ON s.user_id    = w.user_id
    7877JOIN users u   ON w.user_id    = u.user_id
    79 JOIN "status" st  ON s.story_id   = st.story_id
    80 AND st.status   = 'published'
    8178LEFT JOIN likes l   ON s.story_id   = l.story_id
    8279LEFT JOIN "comment" c   ON s.story_id   = c.story_id
    8380LEFT JOIN chapter  ch  ON s.story_id   = ch.story_id
     81WHERE s.status = 'published'
    8482GROUP BY
    8583    s.story_id, s.short_description,
    86     u.username, st.status
     84    u.username, s.status
    8785ORDER BY total_likes DESC
    8886LIMIT 10;
     
    122120    total_likes BIGINT
    123121);
    124 }}}
    125 ==== Saves the most liked story of the previous day
    126 {{{
     122
    127123CREATE OR REPLACE PROCEDURE get_daily_top_story()
    128124LANGUAGE plpgsql
     
    132128BEGIN
    133129    yesterday := CURRENT_DATE - 1;
    134 
    135130    IF EXISTS (
    136131        SELECT 1 FROM likes
    137         WHERE like_created_at BETWEEN yesterday AND CURRENT_DATE
     132        WHERE liked_at BETWEEN yesterday AND CURRENT_DATE
    138133    ) THEN
    139134        INSERT INTO daily_top_stories (day, story_id, total_likes)
     
    144139        FROM story          s
    145140        JOIN likes          l ON s.story_id = l.story_id
    146         WHERE l.like_created_at BETWEEN yesterday AND CURRENT_DATE
     141        WHERE l.liked_at BETWEEN yesterday AND CURRENT_DATE
    147142        GROUP BY s.story_id
    148143        ORDER BY total_likes DESC
     
    160155    p_story_id  INTEGER,
    161156    p_message   TEXT,
    162     p_type      VARCHAR(50),
     157    p_content_type VARCHAR(50),
    163158    p_link      VARCHAR(500)
    164159)
     
    175170        INSERT INTO notification (
    176171            notification_content,
     172            content_type,
    177173            is_read,
    178             recipient_user_id,
    179             type,
     174            user_id,
     175            story_id,
    180176            link,
    181177            notification_created_at
     
    183179        VALUES (
    184180            p_message,
     181            p_content_type,
    185182            FALSE,
    186183            collab.user_id,
    187             p_type,
     184            p_story_id,
    188185            p_link,
    189186            CURRENT_TIMESTAMP
     
    245242    FROM story s
    246243    WHERE s.story_id = NEW.story_id;
    247 
    248244    SELECT username INTO v_liker_username
    249245    FROM users
    250246    WHERE user_id = NEW.user_id;
    251 
    252247    IF v_writer_id != NEW.user_id THEN
    253248        INSERT INTO notification (
    254249            notification_content,
     250            content_type,
    255251            is_read,
    256             recipient_user_id,
    257             type,
     252            user_id,
     253            story_id,
    258254            link,
    259255            notification_created_at
     
    261257        VALUES (
    262258            v_liker_username || ' liked your story "' || v_story_desc || '"',
     259            'like',
    263260            FALSE,
    264261            v_writer_id,
    265             'like',
     262            NEW.story_id,
    266263            '/story/' || NEW.story_id::VARCHAR,
    267264            CURRENT_TIMESTAMP
    268265        );
    269266    END IF;
    270 
    271267    RETURN NEW;
    272268END;
    273269$$;
    274 
    275270CREATE OR REPLACE TRIGGER on_story_liked
    276271    AFTER INSERT ON likes
     
    287282BEGIN
    288283    IF NOT EXISTS (
    289         SELECT 1 FROM "status"
     284        SELECT 1 FROM story
    290285        WHERE story_id = NEW.story_id
    291           AND status   = 'published'
     286          AND status    = 'published'
    292287    ) THEN
    293288        RAISE EXCEPTION
     
    298293END;
    299294$$;
    300 
    301295CREATE OR REPLACE TRIGGER enforce_published_before_list_add
    302296    BEFORE INSERT ON reading_list_items