Слой работы с БД для истории статусов заказа

Код-ревьюMiddle30 минпроверка — Спринт14-t031

Заказы в течение жизни переходят по статусам. Нужен слой работы с БД, который сохраняет историю статусов заказа, с учётом партиционирования. Позже (за рамками задачи) появятся методы «статусы за период», «полная история заказа» и т.п. Отрефакторьте и исправьте приложенный код.

Как на собесе: 30 минут, ищи всё — гонки, утечки, ошибки, безопасность, стиль. Ссылайся на строки.

review.gogo
1package domain2 3import (4	"database/sql"5	"fmt"6)7 8type OrderStatusHistoryStore struct {9	db *sql.DB10}11 12func NewStore(db sql.DB) (OrderStatusHistoryStore, error) {13	db, err := sql.Open("postgres", connStr)14	if err != nil {15		return nil, fmt.Errorf("failed open db: %w", err)16	}17 18	if err := db.Ping(); err != nil {19		return nil, fmt.Errorf("Ping failed: %w", err)20	}21 22	return &OrderStatusHistoryStore{db: db}, nil23}24 25func (s *OrderStatusHistoryStore) SaveOrderStatusHistory(orderId, status) {26	Query := insert into orderstatushistory (orderid, status, insertedat) values($1, $2, $3, $4)27 28	_, err := s.db.Exec(query, orderid, status, time.Now())29 30	if err != nil {31		return fmt.Errorf("failed save order: %w", err)32	}33		return nil34}
⌘ Enter — проверить