| | 1 | = Функции, Процедури и Тригери = |
| | 2 | |
| | 3 | == Функции == |
| | 4 | |
| | 5 | Во системот се имплементирани функции кои се користат за пресметка на статистички податоци и добивање информации поврзани со рецепти и форум објави. |
| | 6 | |
| | 7 | === get_forumpost_comments_count === |
| | 8 | |
| | 9 | Ја враќа вкупната бројка на коментари за одреден форум пост. |
| | 10 | |
| | 11 | * Влезен параметар: `p_forumpost_id` |
| | 12 | * Излез: број на коментари |
| | 13 | |
| | 14 | === get_forumpost_likes_count === |
| | 15 | |
| | 16 | Ја враќа вкупната бројка на лајкови за одреден форум пост. |
| | 17 | |
| | 18 | * Влезен параметар: `p_forumpost_id` |
| | 19 | * Излез: број на лајкови |
| | 20 | |
| | 21 | === get_recipe_average_rating === |
| | 22 | |
| | 23 | Ја пресметува просечната оцена на избран рецепт. |
| | 24 | |
| | 25 | * Влезен параметар: `p_recipe_id` |
| | 26 | * Излез: просечна оцена |
| | 27 | |
| | 28 | === get_recipe_favorites_count === |
| | 29 | |
| | 30 | Го враќа бројот на корисници кои го имаат додадено рецептот во омилени. |
| | 31 | |
| | 32 | * Влезен параметар: `p_recipe_id` |
| | 33 | * Излез: број на омилени |
| | 34 | |
| | 35 | === get_total_recipes_by_category === |
| | 36 | |
| | 37 | Го пресметува бројот на рецепти во дадена категорија. |
| | 38 | |
| | 39 | * Влезен параметар: `p_category_id` |
| | 40 | * Излез: број на рецепти |
| | 41 | |
| | 42 | === get_total_recipes_by_cuisine === |
| | 43 | |
| | 44 | Го пресметува бројот на рецепти за избран тип на кујна. |
| | 45 | |
| | 46 | * Влезен параметар: `p_cuisine_id` |
| | 47 | * Излез: број на рецепти |
| | 48 | |
| | 49 | === is_quick_recipe === |
| | 50 | |
| | 51 | Проверува дали рецептот може да се подготви за најмногу 30 минути. |
| | 52 | |
| | 53 | * Влезен параметар: `p_recipe_id` |
| | 54 | * Излез: TRUE/FALSE |
| | 55 | |
| | 56 | == Процедури == |
| | 57 | |
| | 58 | Процедурите се користат за централизирано извршување на бизнис логиката и заштита на интегритетот на податоците. |
| | 59 | |
| | 60 | === add_recipe_review === |
| | 61 | |
| | 62 | Овозможува додавање рецензија за рецепт. |
| | 63 | |
| | 64 | Пред внесување се проверува: |
| | 65 | |
| | 66 | * дали корисникот го има пробано рецептот |
| | 67 | * дали веќе има оставено рецензија |
| | 68 | * дали оцената е во дозволени граници (1-5) |
| | 69 | |
| | 70 | === add_forum_comment === |
| | 71 | |
| | 72 | Додава нов коментар на форум пост. |
| | 73 | |
| | 74 | Се проверува: |
| | 75 | |
| | 76 | * дали содржината не е празна |
| | 77 | * дали форум постот постои |
| | 78 | |
| | 79 | === add_recipe_to_favorites === |
| | 80 | |
| | 81 | Додава рецепт во листата на омилени рецепти на корисникот. |
| | 82 | |
| | 83 | Се спречува двојно додавање на ист рецепт. |
| | 84 | |
| | 85 | === add_recipe_attempt === |
| | 86 | |
| | 87 | Евидентира дека корисникот го има подготвено рецептот. |
| | 88 | |
| | 89 | Се спречува повеќекратно означување на истиот рецепт. |
| | 90 | |
| | 91 | === remove_recipe_from_favorites === |
| | 92 | |
| | 93 | Го отстранува рецептот од листата на омилени рецепти. |
| | 94 | |
| | 95 | === delete_forum_comment === |
| | 96 | |
| | 97 | Овозможува бришење на форум коментар. |
| | 98 | |
| | 99 | Пред бришење се проверува дали коментарот постои. |
| | 100 | |
| | 101 | === add_recipe_dislike === |
| | 102 | |
| | 103 | Додава dislike на рецепт. |
| | 104 | |
| | 105 | Се спречува повеќекратно додавање dislike од ист корисник. |
| | 106 | |
| | 107 | === remove_recipe_dislike === |
| | 108 | |
| | 109 | Го отстранува претходно додадениот dislike. |
| | 110 | |
| | 111 | === add_forumpost_like === |
| | 112 | |
| | 113 | Додава like на форум пост. |
| | 114 | |
| | 115 | Се спречува двојно лајкнување на ист пост од ист корисник. |
| | 116 | |
| | 117 | == Тригери == |
| | 118 | |
| | 119 | Тригерите автоматски се активираат при INSERT или UPDATE операции и обезбедуваат валидација и интегритет на податоците. |
| | 120 | |
| | 121 | === trg_validate_recipe_name === |
| | 122 | |
| | 123 | Табела: `recipe` |
| | 124 | |
| | 125 | Проверува дали името на рецептот е внесено и не е празно. |
| | 126 | |
| | 127 | === trg_validate_recipe_calories === |
| | 128 | |
| | 129 | Табела: `recipe` |
| | 130 | |
| | 131 | Проверува дали бројот на калории е поголем или еднаков на нула. |
| | 132 | |
| | 133 | === trg_validate_review_rating === |
| | 134 | |
| | 135 | Табела: `recipe_review` |
| | 136 | |
| | 137 | Проверува дали оцената е во опсег од 1 до 5. |
| | 138 | |
| | 139 | === trg_validate_recipe_review_attempt === |
| | 140 | |
| | 141 | Табела: `recipe_review` |
| | 142 | |
| | 143 | Не дозволува оставање рецензија доколку корисникот претходно не го пробал рецептот. |
| | 144 | |
| | 145 | === trg_validate_forum_comment === |
| | 146 | |
| | 147 | Табела: `forumpost_comment` |
| | 148 | |
| | 149 | Проверува дали содржината на коментарот е валидна и не е празна. |
| | 150 | |
| | 151 | === trg_prevent_duplicate_favorite === |
| | 152 | |
| | 153 | Табела: `recipe_favorite` |
| | 154 | |
| | 155 | Спречува додавање на ист рецепт повеќе од еднаш во омилени. |
| | 156 | |
| | 157 | === trg_prevent_duplicate_forumpost_like === |
| | 158 | |
| | 159 | Табела: `forumpost_like` |
| | 160 | |
| | 161 | Спречува двојно лајкнување на форум пост. |
| | 162 | |
| | 163 | === trg_prevent_duplicate_recipe_dislike === |
| | 164 | |
| | 165 | Табела: `recipe_dislike` |
| | 166 | |
| | 167 | Спречува двојно додавање dislike за ист рецепт. |
| | 168 | |
| | 169 | === trg_set_forumpost_created_at === |
| | 170 | |
| | 171 | Табела: `forumpost` |
| | 172 | |
| | 173 | Автоматски го поставува полето `created_at` при креирање на нов форум пост. |
| | 174 | |
| | 175 | === trg_set_comment_created_at === |
| | 176 | |
| | 177 | Табела: `forumpost_comment` |
| | 178 | |
| | 179 | Автоматски го поставува полето `created_at` при креирање на нов коментар. |
| | 180 | |
| | 181 | === trg_set_recipe_attempt_time === |
| | 182 | |
| | 183 | Табела: `recipe_attempt` |
| | 184 | |
| | 185 | Автоматски го поставува времето на подготвување во полето `attempted_at`. |
| | 186 | |
| | 187 | == Заклучок == |
| | 188 | |
| | 189 | Во системот се имплементирани: |
| | 190 | |
| | 191 | * 7 кориснички функции |
| | 192 | * 9 процедури |
| | 193 | * 11 тригери |
| | 194 | |
| | 195 | Овие механизми овозможуваат автоматска валидација на податоците, спречување на дупликати, автоматско пополнување на временски ознаки и обезбедување на конзистентност и интегритет на податоците во базата. |