refactor(backend): strengthen domain layer types and add missing page types
- DomainError struct with Code() string method replaces plain errors.New sentinels; errors.Is() still works via pointer equality - UUIDCreatedAt(uuid.UUID) time.Time helper extracts timestamp from UUID v7 - Add TagOffsetPage, CategoryOffsetPage, PoolOffsetPage - FileListParams fields grouped with comments matching openapi.yaml params - Fix mismatched comment on UserPage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,13 +1,21 @@
|
||||
package domain
|
||||
|
||||
import "errors"
|
||||
// DomainError is a typed domain error with a stable machine-readable code.
|
||||
// Handlers map these codes to HTTP status codes.
|
||||
type DomainError struct {
|
||||
code string
|
||||
message string
|
||||
}
|
||||
|
||||
// Sentinel domain errors. Handlers map these to HTTP status codes.
|
||||
func (e *DomainError) Error() string { return e.message }
|
||||
func (e *DomainError) Code() string { return e.code }
|
||||
|
||||
// Sentinel domain errors. Use errors.Is(err, domain.ErrNotFound) for matching.
|
||||
var (
|
||||
ErrNotFound = errors.New("not found")
|
||||
ErrForbidden = errors.New("forbidden")
|
||||
ErrUnauthorized = errors.New("unauthorized")
|
||||
ErrConflict = errors.New("conflict")
|
||||
ErrValidation = errors.New("validation error")
|
||||
ErrUnsupportedMIME = errors.New("unsupported MIME type")
|
||||
ErrNotFound = &DomainError{"not_found", "not found"}
|
||||
ErrForbidden = &DomainError{"forbidden", "forbidden"}
|
||||
ErrUnauthorized = &DomainError{"unauthorized", "unauthorized"}
|
||||
ErrConflict = &DomainError{"conflict", "conflict"}
|
||||
ErrValidation = &DomainError{"validation_error", "validation error"}
|
||||
ErrUnsupportedMIME = &DomainError{"unsupported_mime", "unsupported MIME type"}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user