75 lines
2.6 KiB
Go
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"`
|
|
}
|