Заказы в течение жизни переходят по статусам. Нужен слой работы с БД, который сохраняет историю статусов заказа, с учётом партиционирования. Позже (за рамками задачи) появятся методы «статусы за период», «полная история заказа» и т.п. Отрефакторьте и исправьте приложенный код.
Как на собесе: 30 минут, ищи всё — гонки, утечки, ошибки, безопасность, стиль. Ссылайся на строки.
review.gogo
1packagedomain23import(4"database/sql"5"fmt"6)78typeOrderStatusHistoryStorestruct{9db*sql.DB10}1112funcNewStore(dbsql.DB)(OrderStatusHistoryStore,error){13db,err:=sql.Open("postgres",connStr)14iferr!=nil{15returnnil,fmt.Errorf("failed open db: %w",err)16}1718iferr:=db.Ping();err!=nil{19returnnil,fmt.Errorf("Ping failed: %w",err)20}2122return&OrderStatusHistoryStore{db:db},nil23}2425func(s*OrderStatusHistoryStore)SaveOrderStatusHistory(orderId,status){26Query:=insertintoorderstatushistory(orderid,status,insertedat)values($1,$2,$3,$4)2728_,err:=s.db.Exec(query,orderid,status,time.Now())2930iferr!=nil{31returnfmt.Errorf("failed save order: %w",err)32}33returnnil34}