sojorn/go-backend/internal/models/moderation.go
2026-02-15 00:33:24 -06:00

75 lines
2.6 KiB
Go

package models
import (
"time"
"github.com/google/uuid"
)
type Report struct {
ID uuid.UUID `json:"id"`
ReporterID uuid.UUID `json:"reporter_id"`
TargetUserID uuid.UUID `json:"target_user_id"`
PostID *uuid.UUID `json:"post_id,omitempty"`
CommentID *uuid.UUID `json:"comment_id,omitempty"`
ViolationType string `json:"violation_type"`
Description string `json:"description"`
Status string `json:"status"`
CreatedAt time.Time `json:"created_at"`
}
type AbuseLog struct {
ID uuid.UUID `json:"id"`
ActorID *uuid.UUID `json:"actor_id,omitempty"`
BlockedID uuid.UUID `json:"blocked_id"`
BlockedHandle string `json:"blocked_handle"`
ActorIP string `json:"actor_ip"`
CreatedAt time.Time `json:"created_at"`
}
type ModerationFlag struct {
ID uuid.UUID `json:"id"`
PostID *uuid.UUID `json:"post_id,omitempty"`
CommentID *uuid.UUID `json:"comment_id,omitempty"`
FlagReason string `json:"flag_reason"`
Scores map[string]float64 `json:"scores"`
Status string `json:"status"`
ReviewedBy *uuid.UUID `json:"reviewed_by,omitempty"`
ReviewedAt *time.Time `json:"reviewed_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type UserStatusHistory struct {
ID uuid.UUID `json:"id"`
UserID uuid.UUID `json:"user_id"`
OldStatus *string `json:"old_status,omitempty"`
NewStatus string `json:"new_status"`
Reason string `json:"reason"`
ChangedBy uuid.UUID `json:"changed_by"`
CreatedAt time.Time `json:"created_at"`
}
// ModerationQueueItem represents a simplified view for Directus moderation interface
type ModerationQueueItem struct {
ID uuid.UUID `json:"id"`
PostID *uuid.UUID `json:"post_id,omitempty"`
CommentID *uuid.UUID `json:"comment_id,omitempty"`
FlagReason string `json:"flag_reason"`
Scores map[string]float64 `json:"scores"`
Status string `json:"status"`
CreatedAt time.Time `json:"created_at"`
PostContent *string `json:"post_content,omitempty"`
CommentContent *string `json:"comment_content,omitempty"`
AuthorHandle *string `json:"author_handle,omitempty"`
}
// UserModeration represents user status for management
type UserModeration struct {
ID uuid.UUID `json:"id"`
Handle string `json:"handle"`
Email string `json:"email"`
Status string `json:"status"`
CreatedAt time.Time `json:"created_at"`
}