Como reutilizar valores no SQL em homologação e produção sem reescrever a query?

Troque limites, filtros e valores de teste entre Homologação e Produção sem reescrever a query. Os valores ficam no painel Variáveis e acompanham o ambiente da aba.

Em Homologação a mesma consulta pede um LIMIT pequeno, um id de teste, um e-mail falso ou um filtro mais apertado. Em Produção esses valores são outros.

Sem um lugar para guardá-los, o número vai colado em cada statement. Quando a aba passa de Homologação para Produção, você altera à mão. Um bind nativo do SQL ($1, ?) resolve um parâmetro naquela execução. Ele não guarda um valor por ambiente e não acompanha a aba.

O Kerry Studio trata isso com variáveis no SQL: um nome associado a um valor, a um literal, a um gerador $faker. ou a um trecho de SQL. O valor fica no painel Variáveis. Na execução, o Kerry troca o token e envia ao banco o SQL já resolvido. A query no editor continua a mesma.

Isso não é bind nativo do motor. É substituição no cliente. O banco recebe o SQL com o valor já no lugar.

Como criar a variável

Você precisa de um workspace aberto e de uma aba SQL.

Pelo editor

  1. Escreva :variavel na query, por exemplo :limite.
  2. Pressione espaço.
  3. Clique no + ao lado do nome.
  4. O painel Variáveis abre nessa linha. Informe o valor e o tipo, se não for texto.

Pelo painel

  1. Abra o painel Variáveis: ícone na barra lateral direita, ou paleta (⌘K / CtrlK) → Abrir Painel de Variáveis.
  2. Clique em Nova Variável.
  3. Informe o identificador sem o :.
  4. Escolha tipo, escopo (Local ou Global) e o ambiente cujo valor você está editando (Padrão ou um ambiente do projeto).
  5. Preencha o valor. No editor, use :variavel.

Local vale num workspace. Global vale em todos.

Um valor por ambiente

Há dois jeitos de escrever a variável.

:variavel, por exemplo :limite, usa o valor do ambiente em que a aba está. Se nesse ambiente o painel estiver vazio, entra o valor Padrão.

:variavel:ambiente, por exemplo :limite:production, usa o valor daquele ambiente mesmo que a aba esteja em outro. O : fica só entre o nome e o ambiente.

No Postgres, dois pontos seguidos são cast: :limite::text significa “a variável limite, convertida para text”. Isso não escolhe um ambiente. Para Produção, use :limite:production.

No painel, uma linha é um nome. O seletor de ambiente não cria outra variável. Ele só troca qual valor daquela linha você está editando.

Se limite vale 50 em Homologação e 500 em Produção:

No SQLAba emO banco recebe
:limiteHomologação50
:limite:productionHomologação500
sql
SELECT id, total
FROM pedidos
WHERE total >= :limite
ORDER BY total DESC;

Se você alterar o valor no painel, a query continua a mesma. Se a aba passar de Homologação para Produção e o SQL usar :limite sem ambiente travado, o banco recebe 500 no lugar de 50.

Texto, número ou um trecho de SQL

TipoO que o banco recebe
Texto, Número, Booleano, NuloLiteral correspondente
SQLTrecho na query sem aspas

Tipo SQL guarda um WHERE, um JOIN ou uma expressão e encaixa na statement sem aspas. Se várias queries compartilham o mesmo critério de ativos:

:filtro_ativos (SQL) = status = 'active'

sql
SELECT *
FROM pedidos
WHERE :filtro_ativos;

Gerar dados de teste com $faker.

$faker. no valor da variável gera um dado novo a cada execução. Um e-mail de teste, por exemplo:

:email_teste (Texto) = $faker.internet.email

sql
INSERT INTO clientes (email)
VALUES (:email_teste);

$faker. também funciona direto no SQL ($faker.person.fullName). Na variável, o mesmo gerador fica reutilizável. Comentários e strings no SQL não são tratados como variável.