Changes between Version 2 and Version 3 of DatabaseProgramming-AdvDb


Ignore:
Timestamp:
05/09/26 18:03:19 (2 weeks ago)
Author:
231175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming-AdvDb

    v2 v3  
    33== Функции
    44
     5Функција за креирање на review од страна на корисник за курс.
     6
     7{{{
     8create or replace function write_review(
     9    user_id bigint,
     10    course_version_id bigint,
     11    new_rating int,
     12    new_comment text
     13)
     14    returns review
     15as
     16$$
     17    declare
     18        r review;
     19        e_id bigint;
     20    begin
     21        select e.id into e_id
     22        from enrollment e
     23        where e.user_id = write_review.user_id
     24          and e.course_version_id = write_review.course_version_id
     25        limit 1;
     26
     27        if exists(select 1 from enrollment e join review rv on e.id = rv.enrollment_id where e.id = e_id) then
     28            return null; -- User has already written a review for this course version
     29        else
     30            insert into review (rating, comment, date, enrollment_id)
     31            values (write_review.new_rating, write_review.new_comment, now(), e_id)
     32            returning * into r;
     33            return r;
     34        end if;
     35    end;
     36$$ language plpgsql;
     37}}}
     38
    539== Процедури
     40
     41Процедура за испраќање на мејлови за потсетување за онлајн состанок со експерт.
     42
     43{{{
     44create or replace procedure send_all_emails()
     45as
     46$$
     47    declare
     48        email_to_send meeting_email_reminder;
     49    begin
     50        for email_to_send in
     51            select * from meeting_email_reminder where sent = false and scheduled_at <= now()
     52        loop
     53            perform pg_notify('send_email', email_to_send.id::text);
     54
     55
     56            update meeting_email_reminder set sent = true where id = email_to_send.id;
     57        end loop;
     58    end;
     59$$
     60    language plpgsql;
     61}}}
    662
    763== Тригери