task

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2026 License: EUPL-1.2 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrBadRequest                 = errors.New("bad request")
	ErrTaskNotFound               = errors.New("task not found")
	ErrStatisticNotFound          = errors.New("user statistic not found")
	ErrTaskRewardNotFound         = errors.New("task reward not found")
	ErrTaskAlreadyCompleted       = errors.New("task already completed")
	ErrTaskCompletedDelete        = errors.New("cannot delete completed task")
	ErrEmptyTitle                 = errors.New("title cannot be empty")
	ErrEmptyTag                   = errors.New("tag cannot be empty")
	ErrPokemonSpeciesUnavailable  = errors.New("pokemon species unavailable")
	ErrCollectionEntryNotFound    = errors.New("collection entry not found")
	ErrRewardGeneratorUnavailable = errors.New("reward generator unavailable")
)

Functions

This section is empty.

Types

type BulkResponseInternal added in v0.9.0

type BulkResponseInternal struct {
	Results      []ItemResultInternal `json:"results"`
	SuccessCount int                  `json:"successCount"`
	FailureCount int                  `json:"failureCount"`
}

type CollectionEntry

type CollectionEntry struct {
	FirstCaughtAt time.Time
	LastCaughtAt  time.Time
	PokemonName   string
	ID            int64
	UserID        int64
	PokemonID     int64
	Count         int
	Rarity        int
	Shiny         bool
}

type Health

type Health struct {
	Status   string `json:"status"`
	Version  string `json:"version"`
	Database string `json:"database"`
}

type ItemResultInternal added in v0.9.0

type ItemResultInternal struct {
	Error  error  `json:"error,omitempty"`
	Task   *Task  `json:"task,omitempty"`
	Status string `json:"status"`
	Index  int    `json:"index"`
}

type Pokemon

type Pokemon struct {
	Sprites Sprites `json:"sprites"`
	Name    string  `json:"name"`
	ID      int64   `json:"id"`
}

type PokemonAPIRewardGenerator added in v0.9.0

type PokemonAPIRewardGenerator struct {
	// contains filtered or unexported fields
}

func NewPokemonAPIRewardGenerator added in v0.9.0

func NewPokemonAPIRewardGenerator(client *http.Client, cfg PokemonAPIRewardGeneratorConfig) *PokemonAPIRewardGenerator

func (*PokemonAPIRewardGenerator) Generate added in v0.9.0

type PokemonAPIRewardGeneratorConfig added in v0.9.0

type PokemonAPIRewardGeneratorConfig struct {
	BaseURL        string
	RequestTimeout time.Duration
	ShinyOdds      int
}

func DefaultPokemonAPIRewardGeneratorConfig added in v0.9.0

func DefaultPokemonAPIRewardGeneratorConfig() PokemonAPIRewardGeneratorConfig

type Rarity

type Rarity struct {
	IsLegendary bool `json:"is_legendary"`
	IsMythical  bool `json:"is_mythical"`
}

type Repository

type Repository struct {
	// contains filtered or unexported fields
}

func NewRepository

func NewRepository(sqlDB *sql.DB) Repository

func (Repository) CompleteTask

func (r Repository) CompleteTask(ctx context.Context, id, userID int64) (Task, error)

func (Repository) CreateCollectionEntry

func (r Repository) CreateCollectionEntry(ctx context.Context, userID int64, reward TaskReward) (CollectionEntry, error)

func (Repository) CreateTaskWithReward added in v0.9.0

func (r Repository) CreateTaskWithReward(ctx context.Context, t Task, reward TaskReward) (Task, error)

func (Repository) DeleteTask

func (r Repository) DeleteTask(ctx context.Context, userID, id int64) error

func (Repository) GetDataForStatistic

func (r Repository) GetDataForStatistic(ctx context.Context, userID int64) (UserStatisticDataUpdate, error)

func (Repository) GetStatistic

func (r Repository) GetStatistic(ctx context.Context, userID int64) (UserStatistic, error)

func (Repository) GetTaskForUpdate added in v0.9.0

func (r Repository) GetTaskForUpdate(ctx context.Context, id, userID int64) (Task, error)

func (Repository) GetTaskState added in v0.9.0

func (r Repository) GetTaskState(ctx context.Context, id, userID int64) (Task, error)

func (Repository) GetTaskWithReward added in v0.9.0

func (r Repository) GetTaskWithReward(ctx context.Context, id, userID int64) (Task, error)

func (Repository) ListCollection

func (r Repository) ListCollection(ctx context.Context, userID int64) ([]CollectionEntry, error)

func (Repository) ListCompletedTasksByUser added in v0.9.0

func (r Repository) ListCompletedTasksByUser(ctx context.Context, userID int64) ([]Task, error)

func (Repository) ListOpenTasksByUser added in v0.9.0

func (r Repository) ListOpenTasksByUser(ctx context.Context, userID int64) ([]Task, error)

func (Repository) ListTasksByUser

func (r Repository) ListTasksByUser(ctx context.Context, userID int64) ([]Task, error)

func (Repository) RevealTaskReward added in v0.9.0

func (r Repository) RevealTaskReward(ctx context.Context, taskID int64) (TaskReward, error)

func (Repository) UpdateTask

func (r Repository) UpdateTask(ctx context.Context, t Task) (Task, error)

func (Repository) UpdateUserStatisticOnCreate

func (r Repository) UpdateUserStatisticOnCreate(ctx context.Context, userID int64) (UserStatistic, error)

func (Repository) UpdateUserStatisticOnDelete

func (r Repository) UpdateUserStatisticOnDelete(ctx context.Context, userID int64) (UserStatistic, error)

func (Repository) UpdateUserStatisticOnTaskCompleted added in v0.9.0

func (r Repository) UpdateUserStatisticOnTaskCompleted(ctx context.Context, data UserStatisticDataUpdate) (UserStatistic, error)

func (Repository) WithTx added in v0.9.0

func (r Repository) WithTx(ctx context.Context, fn func(Repository) error) error

type RewardGenerator added in v0.9.0

type RewardGenerator interface {
	Generate(ctx context.Context) (TaskReward, error)
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

func NewService

func NewService(repo Repository, rewardGenerator RewardGenerator) Service

func (Service) CompleteTask

func (s Service) CompleteTask(ctx context.Context, id, userID int64, timezone string) (Task, error)

func (Service) CreateTask

func (s Service) CreateTask(ctx context.Context, t Task) (Task, error)

func (Service) CreateTaskBulk added in v0.9.0

func (s Service) CreateTaskBulk(ctx context.Context, tasks []Task) BulkResponseInternal

func (Service) DeleteTask

func (s Service) DeleteTask(ctx context.Context, id, userID int64) error

func (Service) GetHealth

func (s Service) GetHealth() (Health, error)

func (Service) GetStatistic

func (s Service) GetStatistic(ctx context.Context, userID int64, timezone string) (UserStatistic, error)

func (Service) GetTaskWithReward added in v0.9.0

func (s Service) GetTaskWithReward(ctx context.Context, id, userID int64) (Task, error)

func (Service) ListCollection

func (s Service) ListCollection(ctx context.Context, userID int64) ([]CollectionEntry, error)

func (Service) ListCompletedTasksByUser added in v0.9.0

func (s Service) ListCompletedTasksByUser(ctx context.Context, userID int64) ([]Task, error)

func (Service) ListOpenTasksByUser added in v0.9.0

func (s Service) ListOpenTasksByUser(ctx context.Context, userID int64) ([]Task, error)

func (Service) ListTasksByUser

func (s Service) ListTasksByUser(ctx context.Context, userID int64) ([]Task, error)

func (Service) UpdateTask

func (s Service) UpdateTask(ctx context.Context, dueAtSent bool, update TaskUpdate) (Task, error)

type Sprites

type Sprites struct {
	FrontDefault string `json:"front_default"`
	FrontShiny   string `json:"front_shiny"`
}

type Task

type Task struct {
	CreatedAt   time.Time  `json:"createdAt"`
	DueAt       *time.Time `json:"dueAt"`
	CompletedAt *time.Time `json:"completedAt"`
	Title       string     `json:"title"`
	Description string     `json:"description"`
	Tag         string     `json:"tag"`
	Reward      TaskReward
	ID          int64 `json:"id"`
	UserID      int64 `json:"userID"`
	Completed   bool  `json:"completed"`
}

type TaskReward

type TaskReward struct {
	GeneratedAt time.Time
	RevealedAt  *time.Time
	PokemonName string
	Sprite      string
	ID          int64
	TaskID      int64
	PokemonID   int64
	Rarity      int
	Shiny       bool
	Revealed    bool
}

type TaskUpdate

type TaskUpdate struct {
	Title       *string    `json:"title,omitempty"`
	Description *string    `json:"description"`
	DueAt       *time.Time `json:"dueAt,omitempty"`
	Tag         *string    `json:"tag,omitempty"`
	ID          int64      `json:"id"`
	UserID      int64      `json:"userID"`
}

type UserStatistic

type UserStatistic struct {
	UserID         int64
	TasksCompleted int
	PokemonCaught  int
	TasksOpened    int
	TasksDeleted   int
	ShinyCaught    int
	UniquePokemon  int
	CurrentStreak  int
	LongestStreak  int
}

type UserStatisticDataUpdate added in v0.9.0

type UserStatisticDataUpdate struct {
	CompletionTimes    []time.Time
	UserID             int64
	LongestStreak      int
	CurrentStreak      int
	ShinyCaughtTotal   int
	UniquePokemonTotal int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL