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,221 @@
package apperrorsx
import (
"context"
"errors"
"gorm.io/gorm"
afterflightinspection "wucher/internal/domain/after_flight_inspection"
"wucher/internal/service"
"wucher/internal/shared/pkg/apperrors"
)
// Translate is the single entrypoint for mapping domain/service errors to AppError.
func Translate(module string, err error) *AppError {
if err == nil {
return nil
}
switch module {
case ModuleAuth, ModulePIN:
if mapped := mapAuthPIN(err); mapped != nil {
return mapped
}
case ModuleHelicopter:
if mapped := mapHelicopter(err); mapped != nil {
return mapped
}
case ModuleHospital:
if mapped := mapHospital(err); mapped != nil {
return mapped
}
case ModuleTakeover:
if mapped := mapTakeover(err); mapped != nil {
return mapped
}
case ModuleFleetStatus:
if mapped := mapFleetStatus(err); mapped != nil {
return mapped
}
case ModuleComplaint:
if mapped := mapComplaint(err); mapped != nil {
return mapped
}
case ModuleAfterFlightInspection:
if mapped := mapAfterFlightInspection(err); mapped != nil {
return mapped
}
}
return mapGeneral(err)
}
func mapAfterFlightInspection(err error) *AppError {
switch {
case errors.Is(err, afterflightinspection.ErrInvalidFlightInspectionID):
return New(ErrAfterFlightInvalidID).WithCause(err)
case errors.Is(err, afterflightinspection.ErrFlightInspectionNotFound):
return New(ErrAfterFlightFlightInspectionNotFound).WithCause(err)
case errors.Is(err, afterflightinspection.ErrCapabilitiesUnavailable):
return New(ErrAfterFlightCapabilitiesUnavailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrNR1Required):
return New(ErrAfterFlightNR1Required).WithCause(err)
case errors.Is(err, afterflightinspection.ErrNR1NotAvailable):
return New(ErrAfterFlightNR1NotAvailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrNR2Required):
return New(ErrAfterFlightNR2Required).WithCause(err)
case errors.Is(err, afterflightinspection.ErrNR2NotAvailable):
return New(ErrAfterFlightNR2NotAvailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrLHRequired):
return New(ErrAfterFlightLHRequired).WithCause(err)
case errors.Is(err, afterflightinspection.ErrLHNotAvailable):
return New(ErrAfterFlightLHNotAvailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrRHRequired):
return New(ErrAfterFlightRHRequired).WithCause(err)
case errors.Is(err, afterflightinspection.ErrRHNotAvailable):
return New(ErrAfterFlightRHNotAvailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrMGBRequired):
return New(ErrAfterFlightMGBRequired).WithCause(err)
case errors.Is(err, afterflightinspection.ErrMGBNotAvailable):
return New(ErrAfterFlightMGBNotAvailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrIGBRequired):
return New(ErrAfterFlightIGBRequired).WithCause(err)
case errors.Is(err, afterflightinspection.ErrIGBNotAvailable):
return New(ErrAfterFlightIGBNotAvailable).WithCause(err)
case errors.Is(err, afterflightinspection.ErrTGBRequired):
return New(ErrAfterFlightTGBRequired).WithCause(err)
case errors.Is(err, afterflightinspection.ErrTGBNotAvailable):
return New(ErrAfterFlightTGBNotAvailable).WithCause(err)
}
if errors.Is(err, gorm.ErrRecordNotFound) {
return New(ErrAfterFlightInspectionNotFound).WithCause(err)
}
if mapped := mapMySQLError(ModuleAfterFlightInspection, err); mapped != nil {
return mapped
}
return nil
}
func mapFleetStatus(err error) *AppError {
if errors.Is(err, gorm.ErrRecordNotFound) {
return New(ErrFleetStatusNotFound).WithCause(err)
}
if _, ok := apperrors.AsDeleteConflict(err); ok {
return New(ErrFleetStatusRelationDelete).WithCause(err)
}
if mapped := mapMySQLError(ModuleFleetStatus, err); mapped != nil {
return mapped
}
return nil
}
func mapComplaint(err error) *AppError {
if errors.Is(err, gorm.ErrRecordNotFound) {
return New(ErrComplaintNotFound).WithCause(err)
}
if mapped := mapMySQLError(ModuleComplaint, err); mapped != nil {
return mapped
}
return nil
}
func mapGeneral(err error) *AppError {
switch {
case errors.Is(err, gorm.ErrRecordNotFound):
return New(ErrDataNotFound).WithCause(err)
case errors.Is(err, context.Canceled), errors.Is(err, context.DeadlineExceeded):
return New(ErrInvalidRequest).WithCause(err)
}
if mapped := mapMySQLError(ModuleGeneral, err); mapped != nil {
return mapped
}
switch {
case errors.Is(err, service.ErrInvalidReauthMethod):
return New(ErrValidation).WithCause(err)
default:
return New(ErrInternal).WithCause(err)
}
}
func mapAuthPIN(err error) *AppError {
switch {
case errors.Is(err, service.ErrInvalidToken):
return New(ErrTokenInvalid).WithCause(err)
case errors.Is(err, service.ErrInvalidCredentials):
return New(ErrUserUnauthorized).WithCause(err)
case errors.Is(err, service.ErrSecurityPINNotSet):
return New(ErrPINNotSet).WithCause(err)
case errors.Is(err, service.ErrSecurityPINLocked), errors.Is(err, service.ErrSecurityPINResetRequired):
return New(ErrPINBlocked).WithCause(err)
case errors.Is(err, service.ErrSecurityPINAttemptLimit):
return New(ErrPINBlocked).WithCause(err)
case errors.Is(err, service.ErrInvalidSecurityPIN):
return New(ErrPINIncorrect).WithCause(err)
case errors.Is(err, service.ErrInvalidPINAction):
return New(ErrPINVerificationRequired202).WithCause(err)
case errors.Is(err, service.ErrInvalidReauthMethod):
return New(ErrValidation).WithCause(err)
default:
return nil
}
}
func mapHelicopter(err error) *AppError {
if errors.Is(err, gorm.ErrRecordNotFound) {
return New(ErrHelicopterNotFound).WithCause(err)
}
if _, ok := apperrors.AsDeleteConflict(err); ok {
return New(ErrHelicopterRelationDelete).WithCause(err)
}
if mapped := mapMySQLError(ModuleHelicopter, err); mapped != nil {
return mapped
}
switch {
case errors.Is(err, service.ErrInvalidReauthMethod):
return New(ErrHelicopterInvalidPayload).WithCause(err)
default:
return nil
}
}
func mapHospital(err error) *AppError {
if errors.Is(err, gorm.ErrRecordNotFound) {
return New(ErrHospitalNotFound).WithCause(err)
}
if _, ok := apperrors.AsDeleteConflict(err); ok {
return New(ErrHospitalRelationDelete).WithCause(err)
}
if mapped := mapMySQLError(ModuleHospital, err); mapped != nil {
return mapped
}
return nil
}
func mapTakeover(err error) *AppError {
if errors.Is(err, gorm.ErrRecordNotFound) {
return New(ErrTakeoverNotFound).WithCause(err)
}
if mapped := mapMySQLError(ModuleTakeover, err); mapped != nil {
return mapped
}
return nil
}