Skip to content

elisaveta9/KirovTransportTax

Repository files navigation

KirovTransportTax

Необходимо разработать WebApi для решения следующих задач:

1. Спроектировать структуру БД для хранения информации о марках, моделях, водителях и самих автомобилях.

ER_scheme_kirov_transport_tax ER-схема БД

Изначально база данных должна содержать следующие значения:

image Содержание табицы transport_type

image Содержание таблицы transport_tax_rate

Проверка данных проходит в базе данных. Код каждой таблицы:

CREATE TABLE IF NOT EXISTS public.transport_type
(
 type text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT type_transport_pkey PRIMARY KEY (type)
)

CREATE TABLE IF NOT EXISTS public.transport_tax_rate
(
 id integer NOT NULL DEFAULT nextval('transport_tax_rate_id_seq'::regclass),
 transport_type text COLLATE pg_catalog."default" NOT NULL,
 min_horsepower integer NOT NULL,
 max_horsepower integer,
 tax_rate integer NOT NULL,
 CONSTRAINT transport_tax_rate_pkey PRIMARY KEY (id),
 CONSTRAINT transport FOREIGN KEY (transport_type)
     REFERENCES public.transport_type (type) MATCH FULL
     ON UPDATE CASCADE
     ON DELETE CASCADE,
 CONSTRAINT transport_tax_rate_check CHECK (max_horsepower = NULL::integer OR min_horsepower < max_horsepower)
)

CREATE TABLE IF NOT EXISTS public.driver
(
 passport text COLLATE pg_catalog."default" NOT NULL,
 last_name text COLLATE pg_catalog."default" NOT NULL,
 name text COLLATE pg_catalog."default" NOT NULL,
 patronymic text COLLATE pg_catalog."default",
 birthday date NOT NULL,
 CONSTRAINT driver_pkey PRIMARY KEY (passport),
 CONSTRAINT driver_birthday_check CHECK (EXTRACT(year FROM age(birthday::timestamp with time zone)) >= 18::numeric),
 CONSTRAINT driver_passport_check CHECK (passport ~* '\d{4} \d{6}'::text)
)

CREATE TABLE IF NOT EXISTS public.transport_brand
(
 brand text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT transport_brand_pkey PRIMARY KEY (brand)
)

CREATE TABLE IF NOT EXISTS public.transport_model
(
 model text COLLATE pg_catalog."default" NOT NULL,
 brand text COLLATE pg_catalog."default" NOT NULL,
 horsepower integer NOT NULL,
 release_year integer NOT NULL,
 transport_type text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT transport_model_pkey PRIMARY KEY (model),
 CONSTRAINT transport_model_brand_fkey FOREIGN KEY (brand)
     REFERENCES public.transport_brand (brand) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_model_transport_type_fkey FOREIGN KEY (transport_type)
     REFERENCES public.transport_type (type) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_model_release_year_check CHECK (release_year >= 1900 AND release_year::double precision <= date_part('year'::text, now())),
 CONSTRAINT transport_model_horsepower_check CHECK (horsepower > 0) NOT VALID
)

CREATE TABLE IF NOT EXISTS public.transport
(
 number_transport text COLLATE pg_catalog."default" NOT NULL,
 model text COLLATE pg_catalog."default" NOT NULL,
 registration_date date NOT NULL,
 driver text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT transport_driver_pkey PRIMARY KEY (number_transport),
 CONSTRAINT transport_driver_fkey FOREIGN KEY (driver)
     REFERENCES public.driver (passport) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_model_transport_fkey FOREIGN KEY (model)
     REFERENCES public.transport_model (model) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_number_transport_check CHECK (number_transport ~* '^[АВЕКМНОРСТУХ][0-9]{3}[АВЕКМНОРСТУХ]{2}$'::text OR number_transport ~* '^[АВЕКМНОРСТУХ]{2}[0-9]{3,4}$'::text OR number_transport ~* '^[0-9]{4}[АВЕКМНОРСТУХ]{2}$'::text)
)

2. Разработать WebApi для получения/добавления/изменения информации о марках, моделях, водителях, автомобилях.

Swagger-UI-Google-Chrome-2023-12-25-02-33-41 (2) (1) Все действия, которые выполняет WebApi

Водители

Получение информации

https___localhost_7055_Drivers-My-Workspace-2023-12-25-03-37-49 (1)

Получение информации обо всех водителях

image

Получение информации о водетеле по паспорту. (%20 - пробел).

Создание записи о новом водетеле

image

Ошибка при добавлении записи с неправльно введенной датой.

image

Ошибка при добавлении водителя с неправильно введенным паспортом.

image

Ошибка при добавлении водителя с паспортом, который уже есть в бд.

image

Ответ на правильное добавление водителя.

Изменение записи водителя

image

image

Корректное изменение записи.

image

Не найдена запись с таким паспортом для изменения.

Если будет введена дата неправильно или паспорт (если указан корректный старый паспорт), то ответ будет таким же как и при создании записи с этими атрибутами.

Удаление записи водителя

image

Удаление водителя с полной информацией.

image

Удаление водителя по паспорту.

image

Удаление несуществующей записи.

Бренд машины

3. Разработать WebApi для получения отчета. Построение отчета в табличном виде: водитель, автомобиль, возраст авто, л.с., сумма налога, сортировка по сумме налога (по убыванию).

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages