Changes between Initial Version and Version 1 of DatabaseProgramming


Ignore:
Timestamp:
05/31/26 02:32:20 (3 weeks ago)
Author:
231049
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v1 v1  
     1= DatabaseProgrammin: MajStore
     2
     3== Функции, процедури и тригери
     4
     5Примарните клучеви се означени со bold
     6
     7
     8=== 1. fn_insert_premium_worker
     9
     10Овој тригер се активира кога статусот на Payment ќе се промени во "Completed". Во тој момент автоматски се креира нов запис во табелата Premium_Worker, со кој се означува дека работникот од тој момент станува премиум корисник. 
     11
     12=== 2. fn_is_worker_premium(p_worker_id int)
     13
     14Оваа функција се користи како проверка за тоа дали даден работник моментално има активен премиум статус. Таа може да се повикува од frontend или backend логиката, на пример при прикажување на профил, реклами, premium badge или други содржини поврзани со работникот. Бидејќи оваа проверка би се користела често низ системот, логиката е издвоена во посебна функција со цел да се избегне дуплирање на код.
     15
     16=== 3. fn_notify_worker_premium_start()
     17
     18Овој тригер се активира кога во табелата Premium_Worker ќе се додаде нов запис, односно кога на работникот му започнува премиум претплатата. Во тој момент автоматски се креира запис во табелата Notification, со кој корисникот се известува дека неговиот премиум статус е успешно активиран. Во известувањето се вклучени името на избраниот премиум план и датумот до кога истиот важи.
     19
     20=== 4. prevent_review_without_hire()
     21
     22Овој тригер се активира при обид на корисник да додаде рецензија за работник. Неговата цел е да спречи креирање рецензии во случаи кога не постои реална соработка помеѓу корисникот и работникот, т.е тригерот проверува дали постои пост од дадениот корисник, во кој пост од работникот има статус "Accepted". Доколку таков случај не постои, внесувањето на рецензија се спречува.
     23
     24=== 5. block_application_to_closed_post()
     25
     26Овој тригер се активира при обид за внесување нова апликација за работа. Неговата цел е да спречи работниците да аплицираат на постови кои повеќе не се активни. При извршувањето, тригерот го проверува статусот на постот на кој се однесува апликацијата. Доколку постот не постои, се генерира соодветна грешка. Доколку постот постои, но неговиот статус не е "Active", внесувањето на апликацијата се спречува и се прикажува соодветна порака.
     27
     28=== 6. block_application_to_closed_post()
     29
     30Овој тригер се активира при обид за креирање нова апликација од страна на работник. Неговата цел е да спречи дуплирање на апликации за ист пост од ист работник. При секое внесување, тригерот проверува дали веќе постои апликација за истиот worker_id и post_id која се уште е активна Доколку таква апликација постои, се генерира грешка и новиот запис се спречува.
     31
     32=== 7. fn_auto_create_calendar()
     33
     34Бидејќи во системот секој работник си има свој календар, при креирање на нов работник за истиот автоматски се креира и календар со овој тригер.
     35
     36
     37=== 8. fn_auto_create_notification()
     38
     39Овој тригер исто така се однесува на автоматско креирање нотификации, но со фокус на апликациите на мајсторите. Истиот се активира при промена на статусот на апликација.
     40
     41=== 9. fn_auto_reject_pending_applications()
     42
     43Овој тригер се активира при промена на статусот на пост. Неговата цел е автоматски да ги ажурира сите активни апликации кога постот се означува како завршен, т.е тригерот проверува дали статусот на постот се менува во "Completed". Во тој случај, системот автоматски ги пронаоѓа сите апликации за тој пост кои се во статус "Pending" и нивниот статус го менува во „Rejected“.
     44
     45=== 9. fn_auto_complete_post_on_accept()
     46
     47Овој тригер се активира при промена на статусот на апликација. Неговата цел е автоматски да го ажурира статусот на постот кога работник ќе биде прифатен, т.е кога статусот на апликацијата ќе се промени во "Accepted", системот автоматски го означува поврзаниот пост како "Completed".
     48
     49
     50== DDL за креирање погледи
     51
     52[https://develop.finki.ukim.mk/projects/MajStore/attachment/wiki/DatabaseCreation/MajStore_DDL.sql]
     53