init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View 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
}