wiki:DatabaseProgramming

Version 1 (modified by 231117, 16 hours ago) ( diff )

--

Функции

fn_artist_average_rating(p_bookable_id INT)

Оваа функција ја пресметува просечната оцена за даден артист/бенд (bookable) така што ги зема сите рецензии (Review) за неговите букинзи и ја враќа средната вредност заокружена на две децимали.

Со тоа се имплементира бизнис логиката за прикажување на рејтинг на артистите во апликацијата и за статистика/сортирање по оцена.

fn_artist_total_earnings(p_bookable_id INT)

Функцијата ја собира сумата на сите плаќања со статус PAID за сите букинзи поврзани со даден артист или бенд.

Така се имплементира бизнис логиката за пресметка на вкупната заработка на артистот, која може да се прикаже во неговиот профил или во администраторскиот дел.

fn_check_artist_availability(p_bookable_id INT, p_date DATE)

Оваа функција проверува дали артистот има барем еден запис во AvailabilitySlot со статус AVAILABLE на дадениот датум и враќа TRUE/FALSE.

Со тоа се имплементира логиката за проверка на достапност при креирање понуда или букинг – апликацијата прво проверува дали артистот е слободен на конкретниот датум.

fn_total_client_bookings(p_client_id INT)

Функцијата го брои бројот на букинзи за даден клиент преку поврзување на BookingRequest, Offer и Booking и враќа цел број.

Ова ја покрива бизнис логиката за статистика за клиентот (на пример колку настани има букирано), што може да се користи во неговиот профил или за аналитика.

Процедури

sp_create_booking_request(p_client_id, p_duration_id, p_event_type, p_event_date, p_location_id)

Процедурата креира нов запис во BookingRequest со основните информации за настанот (клиент, траење, тип, датум, локација).

На тој начин ја инкапсулира бизнис операцијата „клиентот испраќа барање за букинг“ и осигурува дека секогаш се пополнуваат потребните полиња на централизирано место.

sp_cancel_booking(p_booking_id INT)

Оваа процедура го ажурира полето booking_status на избраниот букинг во вредност CANCELLED.

На тој начин се имплементира логиката за откажување на букинг од страна на клиент или администратор, а преку тригерот за историја автоматски се логира и промената на статусот.

sp_create_payment(p_booking_id INT, p_amount NUMERIC)

Процедурата додава нов запис во Payment за одреден букинг, со зададена сума и статус PAID.

Така се имплементира делот од бизнис логиката за евиденција на успешно извршени плаќања, што потоа се користи и во функцијата за вкупна заработка на артистите.

Тригери

fn_update_slot_status() / trg_update_slot_status

Овој тригер се активира по вметнување (AFTER INSERT) на нов букинг во Booking и преку функцијата fn_update_slot_status ги ажурира сите AvailabilitySlot записи за соодветниот артист на датумот на настанот во статус BOOKED.

Со тоа се имплементира бизнис правилото дека кога ќе се потврди букинг за одреден датум, слободните термини за тој датум повеќе не се достапни во календарот на артистот.

fn_prevent_double_booking() / trg_prevent_double_booking

Тригерот се активира пред вметнување (BEFORE INSERT) на нов букинг и во функцијата fn_prevent_double_booking проверува дали веќе постои букинг со статус CONFIRMED за истиот артист (bookable_id) и истиот датум на настан (event_date).

Ако постои, се крева грешка „Artist already booked on that date!“ и се спречува внесот, со што директно се имплементира бизнис правилото дека артист може да има најмногу еден потврден настап во еден ден.

fn_booking_status_history() / trg_booking_status_history

Овој тригер се активира по ажурирање (AFTER UPDATE) на Booking кога статусот се менува и преку функцијата fn_booking_status_history внесува ред во BookingStatusHistory со новиот статус и времето на промена.

Така се имплементира бизнис логиката за водење историја (audit trail) на статусите на букинзите, што е корисно за следење на целиот животен циклус на букинг (CREATED → CONFIRMED → COMPLETED/CANCELLED).

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.