feat(backend): 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,39 @@
|
||||
package domain
|
||||
|
||||
import "time"
|
||||
|
||||
// User is an application user.
|
||||
type User struct {
|
||||
ID int16
|
||||
Name string
|
||||
Password string // bcrypt hash; only populated when needed for auth
|
||||
IsAdmin bool
|
||||
CanCreate bool
|
||||
IsBlocked bool
|
||||
}
|
||||
|
||||
// Session is an active user session.
|
||||
type Session struct {
|
||||
ID int
|
||||
TokenHash string
|
||||
UserID int16
|
||||
UserAgent string
|
||||
StartedAt time.Time
|
||||
ExpiresAt *time.Time
|
||||
LastActivity time.Time
|
||||
IsCurrent bool // true when this session matches the caller's token
|
||||
}
|
||||
|
||||
// OffsetPage is a generic offset-based page of users.
|
||||
type UserPage struct {
|
||||
Items []User
|
||||
Total int
|
||||
Offset int
|
||||
Limit int
|
||||
}
|
||||
|
||||
// SessionList is a list of sessions with a total count.
|
||||
type SessionList struct {
|
||||
Items []Session
|
||||
Total int
|
||||
}
|
||||
Reference in New Issue
Block a user