firts commit
This commit is contained in:
parent
34cd1dd41e
commit
dbfca23691
1
.gitignore
vendored
1
.gitignore
vendored
@ -21,3 +21,4 @@
|
|||||||
# Go workspace file
|
# Go workspace file
|
||||||
go.work
|
go.work
|
||||||
|
|
||||||
|
.env
|
||||||
|
24
.gitignore copy
Normal file
24
.gitignore copy
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# ---> Go
|
||||||
|
# If you prefer the allow list template instead of the deny list, see community template:
|
||||||
|
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
|
||||||
|
#
|
||||||
|
# Binaries for programs and plugins
|
||||||
|
*.exe
|
||||||
|
*.exe~
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
.env
|
||||||
|
|
||||||
|
# Test binary, built with `go test -c`
|
||||||
|
*.test
|
||||||
|
|
||||||
|
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||||
|
*.out
|
||||||
|
|
||||||
|
# Dependency directories (remove the comment below to include it)
|
||||||
|
# vendor/
|
||||||
|
|
||||||
|
# Go workspace file
|
||||||
|
go.work
|
||||||
|
|
5
README copy.md
Normal file
5
README copy.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# track-company
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Задание](Task15.md)
|
14
Task15.md
Normal file
14
Task15.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# ВАРИАНТ 15
|
||||||
|
|
||||||
|
## БД «Транспортная компания»
|
||||||
|
|
||||||
|
Описание предметной области.
|
||||||
|
|
||||||
|
БД создается для информационного обслуживания сотрудников компании. Компания предоставляет услуги по доставке грузов воздушным, речным, морским путем, по железной дороге или автомобилем по различным маршрутам.
|
||||||
|
Готовые запросы:
|
||||||
|
Выдавать список маршрутов, обслуживаемых компанией и цену на них;
|
||||||
|
Выдавать список транспорта, занятого на данном маршруте;
|
||||||
|
Выдавать список вариантов проезда по данному маршруту (морской и т.д.);
|
||||||
|
Рассчитывать стоимость услуг, оказанных по перевозке данного груза. Постоянным клиентам предоставляется скидка.
|
||||||
|
Показывать грузооборот по данному маршруту.
|
||||||
|
|
13
cmd/api/main.go
Normal file
13
cmd/api/main.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gorilla/mux"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
r := mux.NewRouter()
|
||||||
|
|
||||||
|
http.ListenAndServe(":8080", r)
|
||||||
|
}
|
61
database/init/00init.sql
Normal file
61
database/init/00init.sql
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
-- Сначала создадим базу данных
|
||||||
|
CREATE DATABASE transport_company;
|
||||||
|
|
||||||
|
-- Переключаемся на базу данных
|
||||||
|
\c transport_company;
|
||||||
|
|
||||||
|
-- Таблица для водителей
|
||||||
|
CREATE TABLE drivers (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
name VARCHAR(100) NOT NULL,
|
||||||
|
license_number VARCHAR(50) UNIQUE NOT NULL,
|
||||||
|
phone VARCHAR(15),
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Таблица для автомобилей
|
||||||
|
CREATE TABLE vehicles (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
license_plate VARCHAR(20) UNIQUE NOT NULL,
|
||||||
|
model VARCHAR(50),
|
||||||
|
year INT,
|
||||||
|
driver_id INT REFERENCES drivers(id) ON DELETE CASCADE,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Таблица для маршрутов
|
||||||
|
CREATE TABLE routes (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
name VARCHAR(100) NOT NULL,
|
||||||
|
start_location VARCHAR(100),
|
||||||
|
end_location VARCHAR(100),
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Таблица для поездок
|
||||||
|
CREATE TABLE trips (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
vehicle_id INT REFERENCES vehicles(id) ON DELETE CASCADE,
|
||||||
|
route_id INT REFERENCES routes(id) ON DELETE CASCADE,
|
||||||
|
driver_id INT REFERENCES drivers(id) ON DELETE CASCADE,
|
||||||
|
trip_date TIMESTAMP NOT NULL,
|
||||||
|
status VARCHAR(20) CHECK (status IN ('scheduled', 'completed', 'canceled')),
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Пример заполнения начальных данных
|
||||||
|
INSERT INTO drivers (name, license_number, phone) VALUES
|
||||||
|
('Иван Петров', 'A1234567', '123456789'),
|
||||||
|
('Мария Иванова', 'B7654321', '987654321');
|
||||||
|
|
||||||
|
INSERT INTO vehicles (license_plate, model, year, driver_id) VALUES
|
||||||
|
('ABC123', 'Toyota Camry', 2019, 1),
|
||||||
|
('XYZ789', 'Honda Accord', 2020, 2);
|
||||||
|
|
||||||
|
INSERT INTO routes (name, start_location, end_location) VALUES
|
||||||
|
('Маршрут 1', 'Москва', 'Санкт-Петербург'),
|
||||||
|
('Маршрут 2', 'Казань', 'Екатеринбург');
|
||||||
|
|
||||||
|
INSERT INTO trips (vehicle_id, route_id, driver_id, trip_date, status) VALUES
|
||||||
|
(1, 1, 1, '2024-07-01 08:00:00', 'scheduled'),
|
||||||
|
(2, 2, 2, '2024-07-02 09:00:00', 'completed');
|
23
database/init/01insert.sql
Normal file
23
database/init/01insert.sql
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
INSERT INTO Clients (name, email, is_regular) VALUES
|
||||||
|
('Иван Иванов', 'ivan@example.com', TRUE),
|
||||||
|
('Петр Петров', 'petr@example.com', FALSE);
|
||||||
|
|
||||||
|
INSERT INTO Routes (name, start_point, end_point, price) VALUES
|
||||||
|
('Москва - Санкт-Петербург', 'Москва', 'Санкт-Петербург', 5000.00),
|
||||||
|
('Новосибирск - Владивосток', 'Новосибирск', 'Владивосток', 10000.00);
|
||||||
|
|
||||||
|
INSERT INTO Transport (type, capacity, status) VALUES
|
||||||
|
('Воздушный', 1000.00, 'free'),
|
||||||
|
('Морской', 5000.00, 'free');
|
||||||
|
|
||||||
|
INSERT INTO RouteTransport (route_id, transport_id, departure_time, arrival_time) VALUES
|
||||||
|
(1, 1, '2023-10-01 10:00:00', '2023-10-01 12:00:00'),
|
||||||
|
(2, 2, '2023-10-02 08:00:00', '2023-10-02 20:00:00');
|
||||||
|
|
||||||
|
INSERT INTO Cargo (name, weight, route_id) VALUES
|
||||||
|
('Электроника', 200.00, 1),
|
||||||
|
('Мебель', 1000.00, 2);
|
||||||
|
|
||||||
|
INSERT INTO Orders (client_id, cargo_id, total_cost) VALUES
|
||||||
|
(1, 1, 5000.00),
|
||||||
|
(2, 2, 10000.00);
|
0
deployments/dockerfile
Normal file
0
deployments/dockerfile
Normal file
22
docker-compose.yml
Normal file
22
docker-compose.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres:13
|
||||||
|
container_name: postgres
|
||||||
|
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB}
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
volumes:
|
||||||
|
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||||
|
networks:
|
||||||
|
- transport_network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
transport_network:
|
||||||
|
driver: bridge
|
5
go.mod
Normal file
5
go.mod
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module track-company
|
||||||
|
|
||||||
|
go 1.22.2
|
||||||
|
|
||||||
|
require github.com/gorilla/mux v1.8.1
|
2
go.sum
Normal file
2
go.sum
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
||||||
|
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
21
internal/handlers/handlers.go
Normal file
21
internal/handlers/handlers.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package handlers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gorilla/mux"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TruckCompanyHandler struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTruckCompanyHandler() *TruckCompanyHandler {
|
||||||
|
return &TruckCompanyHandler{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *TruckCompanyHandler) RegisterRoutes(router *mux.Router) {
|
||||||
|
|
||||||
|
// router.HandleFunc("/routes").Methods(http.MethodGet)
|
||||||
|
// router.HandleFunc("").Methods(http.MethodGet)
|
||||||
|
router.HandleFunc("/", http.NotFound)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user