package repository import ( "database/sql" "errors" domain "truck-company/internal/domain" ) type AppRepo struct { db *sql.DB } func NewAppRepo(db *sql.DB) *AppRepo { return &AppRepo{ db: db, } } func (r *AppRepo) GetAllRoutes() ([]domain.Route, error) { if r.db == nil { return nil, errors.New("Ошибка подключения к бд. *db == nil") } rows, err := r.db.Query("SELECT id, name, price FROM route") if err != nil { return nil, err } defer rows.Close() var routes []domain.Route for rows.Next() { var route domain.Route if err := rows.Scan(&route.ID, &route.Name, &route.Price); err != nil { return nil, err } routes = append(routes, route) } return routes, nil } func (t *AppRepo) GetTransportByRoute(routeID int64) ([]domain.Transport, error) { rows, err := t.db.Query(` SELECT t.id, t.model, t.capacity, tt.name FROM transport t JOIN shipment s ON t.id = s.transport_id JOIN transport_type tt ON t.type_id = tt.id WHERE s.route_id = $1`, routeID) if err != nil { return nil, err } defer rows.Close() var transports []domain.Transport for rows.Next() { var transport domain.Transport if err := rows.Scan(&transport.ID, &transport.Model, &transport.Capacity, &transport.Type); err != nil { return nil, err } transports = append(transports, transport) } return transports, nil }