feat: initialize Go module and implement domain layer
- Add go.mod (module tanabata/backend, Go 1.21) with uuid dependency - Implement internal/domain: File, Tag, TagRule, Category, Pool, PoolFile, User, Session, Permission, ObjectType, AuditEntry + all pagination types - Add domain error sentinels (ErrNotFound, ErrForbidden, etc.) - Add context helpers WithUser/UserFromContext for JWT propagation - Fix migration: remove redundant DEFAULT on exif jsonb column Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// ActionType is a reference entity for auditable user actions.
|
||||
type ActionType struct {
|
||||
ID int16
|
||||
Name string
|
||||
}
|
||||
|
||||
// AuditEntry is a single audit log record.
|
||||
type AuditEntry struct {
|
||||
ID int64
|
||||
UserID int16
|
||||
UserName string // denormalized
|
||||
Action string // action type name, e.g. "file_create"
|
||||
ObjectType *string
|
||||
ObjectID *uuid.UUID
|
||||
Details json.RawMessage
|
||||
PerformedAt time.Time
|
||||
}
|
||||
|
||||
// AuditPage is an offset-based page of audit log entries.
|
||||
type AuditPage struct {
|
||||
Items []AuditEntry
|
||||
Total int
|
||||
Offset int
|
||||
Limit int
|
||||
}
|
||||
|
||||
// AuditFilter holds filter parameters for querying the audit log.
|
||||
type AuditFilter struct {
|
||||
UserID *int16
|
||||
Action string
|
||||
ObjectType string
|
||||
ObjectID *uuid.UUID
|
||||
From *time.Time
|
||||
To *time.Time
|
||||
Offset int
|
||||
Limit int
|
||||
}
|
||||
Reference in New Issue
Block a user