52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package mysql
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
fleethistory "wucher/internal/domain/fleet_history"
|
|
)
|
|
|
|
type FleetHistoryRepository struct{ db *gorm.DB }
|
|
|
|
func NewFleetHistoryRepository(db *gorm.DB) *FleetHistoryRepository {
|
|
return &FleetHistoryRepository{db: db}
|
|
}
|
|
|
|
func (r *FleetHistoryRepository) Create(ctx context.Context, row *fleethistory.FleetHistory) error {
|
|
return r.db.WithContext(ctx).Create(row).Error
|
|
}
|
|
|
|
func (r *FleetHistoryRepository) ListByHelicopter(ctx context.Context, helicopterID []byte, limit, offset int) ([]fleethistory.FleetHistory, int64, error) {
|
|
rows := make([]fleethistory.FleetHistory, 0)
|
|
var total int64
|
|
base := r.db.WithContext(ctx).
|
|
Model(&fleethistory.FleetHistory{}).
|
|
Where("helicopter_id = ?", helicopterID)
|
|
if err := base.Count(&total).Error; err != nil {
|
|
return nil, 0, err
|
|
}
|
|
q := base.Order("created_at DESC")
|
|
if limit > 0 {
|
|
q = q.Limit(limit).Offset(offset)
|
|
}
|
|
err := q.Find(&rows).Error
|
|
return rows, total, err
|
|
}
|
|
|
|
func (r *FleetHistoryRepository) HelicopterIDByInspection(ctx context.Context, inspectionID []byte) ([]byte, error) {
|
|
var out []byte
|
|
err := r.db.WithContext(ctx).
|
|
Table("reserve_acs").
|
|
Select("helicopter_id").
|
|
Where("inspection_id = ?", inspectionID).
|
|
Limit(1).
|
|
Scan(&out).Error
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, nil
|
|
}
|
|
return out, err
|
|
}
|