Ctrl K
ComunidadGuías…

internal/domain/broadcast.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package domain

import (
	"errors"
	"time"
)

type BroadcastTargetMode string

const (
	BroadcastTargetAll      BroadcastTargetMode = "all"
	BroadcastTargetSelected BroadcastTargetMode = "selected"
)

type BroadcastRecipientStatus string

const (
	BroadcastRecipientPending    BroadcastRecipientStatus = "pending"
	BroadcastRecipientProcessing BroadcastRecipientStatus = "processing"
	BroadcastRecipientSent       BroadcastRecipientStatus = "sent"
	BroadcastRecipientFailed     BroadcastRecipientStatus = "failed"
)

const (
	MaxBroadcastMessageBytes       = 4096
	MaxBroadcastSelectedRecipients = 200
	MaxBroadcastRecipientAttempts  = 5
)

type Broadcast struct {
	ID                int64
	Message           string
	Entities          []MessageEntity
	TargetMode        BroadcastTargetMode
	TargetCount       int64
	MaterializedCount int64
	SentCount         int64
	FailedCount       int64
	EnumerationDone   bool
	CreatedBy         string
	CreatedAt         time.Time
}

var (
	ErrBroadcastInvalid          = errors.New("broadcast invalid")
	ErrBroadcastMessageEmpty     = errors.New("broadcast message is empty")
	ErrBroadcastMessageTooLong   = errors.New("broadcast message is too long")
	ErrBroadcastNoRecipients     = errors.New("broadcast has no recipients")
	ErrBroadcastRecipientInvalid = errors.New("broadcast recipient invalid")
	ErrBroadcastLeaseLost        = errors.New("broadcast recipient lease lost")
)