ИЕП/Лаб 1 2024

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Прва лабораторијска вежба 2024. одржана је 2. априла. Били су доступни зипови са вежби (презентације и код), као и документације за Python, Flask, SQLAlchemy. Време израде је било 120 минута, јер је прва година. У будуће највероватније трајање биће сат времена, што је по речима предметног асистена и било довољно.

Поставка

Посматра се систем за аукције у коме корисници могу да креирају аукције на којима продају производе. Приликом креирања аукције, познати су производ, време почетка аукције и почетна цена, док се време краја аукције дефинише у моменту проглашења краја аукције. Сваки корисник може да даје већи број понуда док аукција траје. Износ сваке понуде мора да буде строго већа од износа претходно дате понуде за исту аукцију. У тренутку када се прогласи крај, уколико је била бар једна понуда за ту аукцију аукција се сматра успешном и проглашава се победник те аукције. У супротном, аукција се сматра неуспешном и победник не постоји. Сваки производ припада некој од категорија.

ЕР модел базе

Kategorija (IdKat, Naziv, IdKatNad)

IdKat - цео број, идентификује категорију, аутоматско додељивање наредног идентификатора

Naziv - низ до 50 знакова, обавезнo


Proizvod (IdPro, IdAuk, Naziv, IdKat) IdPro - цео број, идентификује производ, аутоматско додељивање наредног идентификатора

Naziv - низ до 50 знакова, обавезнo

IdKat - страни кључ (табела Kategorija), обавезно


Korisnik (IdKor, Ime)

IdKor - цео број, идентификује корисника, аутоматско додељивање наредног идентификатора

Ime - низ до 50 знакова, обавезнo


Aukcija (IdAuk, Pocetak, Kraj, Cena, IdPro, IdKor) IdAuk - цео број, идентификује аукцију, аутоматско додељивање наредног идентификатора

Pocetak - низ од 10 карактера, обавезно, време у формату (yymmddhhmm)

Kraj - низ од 10 карактера, време у формату (yymmddhhmm)

Cena - цео број, обавезно, вредност већа од 0

IdPro - страни кључ (табела Proizvod), обавезно

IdKor - страни кључ (табела Korisnik), обавезно


Напомена: Атрибут IdKor представља корисника који је иницирао аукцију.

Атрибут Cena представља почетну цену производа.

Уколико је вредност атрибута Kraj једнака NULL, то значи да је време краја аукције непознато и да је аукција активна, уколико је вредност атрибута Kraj дефинисан, аукција је завршена. Сматрати да је вредност атрибута Kraj увек исправна (мања од тренутног времена).


Ponuda (IdPon, Trenutak, Iznos, IdKor, IdAuk)

IdPon - цео број, идентификује понуду, аутоматско додељивање наредног идентификатора

Trenutak - цео број, време у формату (yymmddhhmm)

Iznos - цео број, обавезно, вредност већа од 0

IdKor - страни кључ (табела Korisnik), обавезно

IdAuk - страни кључ (табела Aukcija), обавезно

Напомена: Атрибут IdKor представља корисника који даје понуду.

Гарантује се да ће Trenutak понуде бити исправан и да ће припадати интервалу у коме је аукција активна. Гарантује се да ће износ сваке касније понуде за исту аукцију бити строго већи.


Група 1

1. задатак

Поставка

Додавање корисника
Адреса /add_user
Тип POST
Параметри Име корисника прослеђује се кроз тело захтева коришћењем кључа name.
Одговор Повратна вредност је идентификатор додатог корисника.

Решење

2. задатак

Поставка

Претрага корисника
Адреса /user_search?name=...
Тип GET
Параметри Име корисника је опциони параметар који се прослеђује као query параметар руте.
Одговор Повратна вредност је листа корисника чије име садржи прослеђен низ карактера.

Решење

3. задатак

Поставка

Преглед аукција за кориснике
Адреса /user_auctions?min...
Тип GET
Параметри Минимум је опциони параметар који се прослеђује као query параметар руте.
Одговор Повратна вредност је листа парова где први члан представља идентификатор корисника, а други број успешно завршених аукција. У случају да је прослеђен параметар кроз руту, онда се враћају само они корисници који имају min или више аукција.[1]

Решење

4. задатак

Поставка

Преглед зараде за корисника
Адреса /user_revenue/<ID>
Тип GET
Параметри ID је контексни парамтера руте који представља идентификатор корисника.
Одговор Повратна вредност је листа парова где први члан представља идентификатор готове аукције, а други цену по којој је продат производ.

Решење

Група 2

1. задатак

Поставка

Додавање производа
Адреса /add_product
Тип POST
Параметри Име производа и идентификатор категорије прослеђује се кроз тело захтева коришћењем кључа name.
Одговор Повратна вредност је идентификатор додатог производа.

Решење

2. задатак

Поставка

Претрага категорија
Адреса /category_search?name=...
Тип GET
Параметри Име категорије је опциони параметар који се прослеђује као query параметар руте.
Одговор Повратна вредност је листа категорија чије име садржи прослеђен низ карактера.

Решење

3. задатак

Поставка

Преглед производа по категоријама
Адреса /category_products?min...
Тип GET
Параметри Минимум је опциони параметар који се прослеђује као query параметар руте.
Одговор Повратна вредност је листа парова где први члан представља идентификатор категорије, а други број производа у тој категорији. У случају да је прослеђен параметар кроз руту, онда се враћају само оне категорије које имају min или више производа.

Решење

4. задатак

Поставка

Преглед зараде за производ
Адреса /product_revenue/<ID>
Тип GET
Параметри ID је контексни парамтера руте који представља идентификатор производа.
Одговор Повратна вредност је листа парова где први члан представља идентификатор готове аукције, а други цену по којој је продат производ.

Решење

Напомене

  1. Асистент је напоменуо да пошто није дефинисано поставком, могу се, а не морају исписивати корисници са 0 аукција.