| | 5 | Функција за креирање на review од страна на корисник за курс. |
| | 6 | |
| | 7 | {{{ |
| | 8 | create 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 |
| | 15 | as |
| | 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 | |