# `Celery.Result.GroupResult`
[🔗](https://github.com/hacktobeer/celery-elixir/blob/v0.1.0/lib/celery/result.ex#L178)

Result handle for a group of tasks (`GroupResult` in Python Celery).

# `t`

```elixir
@type t() :: %Celery.Result.GroupResult{
  app: Celery.t() | Celery.Config.t() | nil,
  id: String.t(),
  parent: Celery.Result.t() | nil,
  results: [Celery.Result.t()]
}
```

# `completed_count`

```elixir
@spec completed_count(t()) :: non_neg_integer()
```

Returns the number of completed tasks in the group.

# `delete`

```elixir
@spec delete(t()) :: :ok
```

Deletes the saved group metadata from Redis.

# `failed?`

```elixir
@spec failed?(t()) :: boolean()
```

Returns `true` if any child result in the group failed.

# `get`

```elixir
@spec get(t(), keyword()) :: [term()]
```

Waits for all tasks in the group to complete and returns their results in order.

# `join`

```elixir
@spec join(t(), keyword()) :: [term()]
```

Alias for `get/2` (matches `GroupResult.join` in Python Celery).

# `new`

```elixir
@spec new(String.t(), [Celery.Result.t()], keyword()) :: t()
```

Creates a new `%Celery.Result.GroupResult{}`.

# `ready?`

```elixir
@spec ready?(t()) :: boolean()
```

Returns `true` when all child results in the group are ready.

# `restore`

```elixir
@spec restore(String.t(), keyword()) :: t() | nil
```

Restores a `%Celery.Result.GroupResult{}` from the Redis backend.

# `save`

```elixir
@spec save(t()) :: :ok | {:error, term()}
```

Saves the group result IDs to the Redis backend under `celery-taskset-meta-<id>`.

# `successful?`

```elixir
@spec successful?(t()) :: boolean()
```

Returns `true` when all child results in the group succeeded.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
