Search by

elavora / api-redis

Felipe-Cavalca

Cliente Redis reutilizavel para extensoes opcionais do framework Elavora

Package info

github.com/Elavora/api-redis

Language:JavaScript

pkg:composer/elavora/api-redis

Statistics

Installs: 22

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 1


README

Packagist Version PHP Version Qualidade CodeQL License

Cliente Redis opcional, encapsulado e reutilizável para extensões do framework Elavora.

  • Versão 1.0.0: exige elavora/api-framework ^2.0, PHP >=8.3 e ext-redis. Dependentes devem exigir "elavora/api-redis": "^1.0".
  • Para o framework ^0.3.1, use a versão 0.2.0.

Use este pacote quando uma extensão precisar de Redis sem depender da classe nativa Redis. RedisConnectionManager reutiliza o mesmo cliente para configurações iguais e permite trocar a factory por uma implementação futura de cluster, roteamento de leitura/escrita ou balanceamento.

use Elavora\Api\Extension\Redis\Contracts\RedisConnectionFactory;
use Elavora\Api\Extension\Redis\RedisConfig;
use Elavora\Api\Extension\Redis\RedisExtension;

$application->extend(new RedisExtension());

$redis = $application->container()
    ->get(RedisConnectionFactory::class)
    ->connect(RedisConfig::fromArray([
        'host' => 'redis',
        'port' => 6379,
        'database' => 0,
    ]));

A especificação completa (API, normalização, compatibilidade e testes) está em docs/USO.md.

Instalação

composer require elavora/api-redis

Requisitos: PHP 8.3 ou superior, ext-redis e elavora/api-framework ^2.0.

Desenvolvimento e testes

Você só precisa de Docker. O ambiente é a imagem ghcr.io/elavora/php-dev:8.3-latest: abra o repositório no VS Code com Dev Containers: Reopen in Container, ou rode no PowerShell:

docker run --rm --mount "type=bind,source=$($PWD.Path),target=/workspace" -w /workspace ghcr.io/elavora/php-dev:8.3-latest sh -lc 'git config --global --add safe.directory /workspace && composer install --no-interaction --prefer-dist --ignore-platform-req=ext-redis && composer check'

A imagem não traz ext-redis, por isso o --ignore-platform-req=ext-redis. Os testes não precisam da extensão nem de um servidor Redis: usam clientes falsos. Detalhes, e o que isso significa para o CI, em Desenvolvimento e testes.

Scripts do Composer:

composer check     # lint, testes e PHPStan
composer test      # testes PHPUnit
composer lint      # sintaxe (elavora-standards lint)
composer analyse   # PHPStan, nível 8

O código segue o padrão PER-CS, com as regras do pacote elavora/code-standards. No devcontainer, o arquivo é formatado ao salvar; no PR, o CI formata o que faltou e commita a correção (style: organiza o código). Os testes rodam no CI, no workflow Qualidade, em todo PR. O passo a passo, o que roda no CI e como reproduzi-lo estão em Desenvolvimento e testes.

Como contribuir

  1. Crie uma branch a partir da main (feat/..., fix/... ou docs/...).
  2. Faça commits em português do Brasil, no padrão Conventional Commits (feat: ..., fix: ..., docs: ...).
  3. Rode composer check antes de abrir o PR.
  4. Abra o PR para a main, preencha o template e aplique as labels que definem a versão (Versões e release).
  5. Confira o comentário do pipeline de qualidade no PR. Ele não bloqueia o merge, mas quem revisa olha o resultado.

Versões

Cada PR integrado na main gera uma versão automaticamente, conforme as labels do PR: sem a label release sai uma beta (1.1.0-beta.1), com ela sai a estável (1.1.0). A 1.0.0 sai do PR de upgrade e adoção do pipeline (upgrade mais release, a partir da 0.2.0). As tags novas não têm o prefixo v, e as notas de cada GitHub Release são geradas em português a partir dos PRs. Veja Versões e release.

Documentação

  1. Guia de uso: a especificação do pacote, com a API pública e exemplos.
  2. Desenvolvimento e testes: ambiente, como rodar os testes e o que roda no CI.
  3. Automação do repositório: workflows, Dependabot, estilo de código, labels e versões.

Licença

MIT