init push
This commit is contained in:
104
internal/repository/mysql/easa_release_repo.go
Normal file
104
internal/repository/mysql/easa_release_repo.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package mysql
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
easarelease "wucher/internal/domain/easa_release"
|
||||
)
|
||||
|
||||
type EASAReleaseRepository struct{ db *gorm.DB }
|
||||
|
||||
func NewEASAReleaseRepository(db *gorm.DB) *EASAReleaseRepository {
|
||||
return &EASAReleaseRepository{db: db}
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) Create(ctx context.Context, row *easarelease.EASARelease) error {
|
||||
return r.db.WithContext(ctx).Create(row).Error
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) Update(ctx context.Context, row *easarelease.EASARelease) error {
|
||||
return r.db.WithContext(ctx).Save(row).Error
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) Delete(ctx context.Context, id []byte, deletedBy []byte) error {
|
||||
return r.db.WithContext(ctx).Model(&easarelease.EASARelease{}).
|
||||
Where("id = ? AND deleted_at IS NULL", id).
|
||||
Updates(map[string]any{"deleted_at": gorm.Expr("NOW(3)"), "deleted_by": deletedBy, "updated_by": deletedBy}).Error
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) GetByID(ctx context.Context, id []byte) (*easarelease.EASARelease, error) {
|
||||
var row easarelease.EASARelease
|
||||
err := r.db.WithContext(ctx).
|
||||
Where("id = ? AND deleted_at IS NULL", id).
|
||||
First(&row).Error
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return &row, err
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) GetByFlightID(ctx context.Context, flightID []byte) (*easarelease.EASARelease, error) {
|
||||
var row easarelease.EASARelease
|
||||
err := r.db.WithContext(ctx).
|
||||
Where("flight_id = ? AND deleted_at IS NULL", flightID).
|
||||
Order("created_at DESC").
|
||||
First(&row).Error
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return &row, err
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) GetByComplaintID(ctx context.Context, complaintID []byte) (*easarelease.EASARelease, error) {
|
||||
var row easarelease.EASARelease
|
||||
err := r.db.WithContext(ctx).
|
||||
Where("complaint_id = ? AND deleted_at IS NULL", complaintID).
|
||||
Order("created_at DESC").
|
||||
First(&row).Error
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return &row, err
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) ListByHelicopter(ctx context.Context, helicopterID []byte) ([]easarelease.EASARelease, error) {
|
||||
rows := make([]easarelease.EASARelease, 0)
|
||||
err := r.db.WithContext(ctx).
|
||||
Where("helicopter_id = ? AND deleted_at IS NULL", helicopterID).
|
||||
Order("created_at DESC").
|
||||
Find(&rows).Error
|
||||
return rows, err
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) GetLatestByHelicopter(ctx context.Context, helicopterID []byte) (*easarelease.EASARelease, error) {
|
||||
var row easarelease.EASARelease
|
||||
err := r.db.WithContext(ctx).
|
||||
Where("helicopter_id = ? AND deleted_at IS NULL", helicopterID).
|
||||
Order("created_at DESC").
|
||||
First(&row).Error
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return &row, err
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) GetActiveByHelicopter(ctx context.Context, helicopterID []byte) (*easarelease.EASARelease, error) {
|
||||
var row easarelease.EASARelease
|
||||
err := r.db.WithContext(ctx).
|
||||
Where("helicopter_id = ? AND signed_at IS NOT NULL AND deleted_at IS NULL", helicopterID).
|
||||
Order("signed_at DESC").
|
||||
First(&row).Error
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return &row, err
|
||||
}
|
||||
|
||||
func (r *EASAReleaseRepository) VoidByID(ctx context.Context, id []byte, reason string, actor []byte) error {
|
||||
return r.db.WithContext(ctx).Model(&easarelease.EASARelease{}).
|
||||
Where("id = ? AND deleted_at IS NULL", id).
|
||||
Updates(map[string]any{"deleted_at": gorm.Expr("NOW(3)"), "deleted_by": actor, "updated_by": actor}).Error
|
||||
}
|
||||
Reference in New Issue
Block a user