CodeGym /Cursos /SQL SELF /Instalando o plugin CodeGym

Instalando o plugin CodeGym

SQL SELF
Nível 4, Lição 4
Disponível

O plugin se integra com a sua IDE favorita: Intellij IDEA, WebStorm ou PyCharm, e deixa você trabalhar com as tarefas do curso CodeGym direto nela. Por exemplo, dá pra escrever o código da solução, mandar pra checagem, comparar com a solução "default" e muito mais. O progresso das tarefas no plugin fica sincronizado com sua conta CodeGym, então vai aparecer igualzinho tanto no site quanto na IDE.

Você pode baixar o plugin CodeGym direto do marketplace da Jetbrains, dentro da sua IDE. Aqui vamos mostrar os passos usando o WebStorm, mas é igual pra outras IDEs também.

Pra usar o plugin, você precisa de uma versão da IDE Jetbrains 2023.1 ou mais nova.

  1. Vai em "Configurações", no Windows/Linux File - Settings, no MacOS WebStorm - Preferences. Se não achar a seção de configurações, abre qualquer projeto ou cria um novo.

  2. No menu lateral da janela que abrir, escolhe Plugins e depois clica na aba Marketplace. Na barra de busca digita codegym

  3. Escolhe o plugin e clica no botão Install.
  4. Reinicia (Restart IDE) o WebStorm pra começar a usar o plugin.

Plugin instalado!

Entrando na sua conta e baixando tarefas

  1. Você vai ver a interface um pouco diferente e um botão Entrar na conta na barra horizontal lá em cima.

    Quando clicar, vai abrir uma janela pra você entrar na sua conta, aí é só colocar sua chave secreta:

    Lembrando que você acha sua chave secreta em Configurações → Segurança e login.

  2. Pra abrir uma nova tarefa, clica em Tasks no painel vertical à esquerda, depois na tarefa na barra lateral, e clica em Abrir:

  3. Quando abrir uma nova tarefa, vai aparecer uma área de trabalho com alguns arquivos importantes:
    • Solution — esse é seu arquivo principal. É aqui que você vai escrever o SQL pra resolver a tarefa.
    • init.sql — esse é um script pra preparar seu banco de dados local. Ele tem os comandos pra criar as tabelas necessárias e preencher com dados.
    • A aba com o enunciado da tarefa.
  4. No arquivo Solution, é igual ao site. Escreve sua solução e clica no botão Checar/Validate

Rodando a solução localmente

  1. Primeiro, você precisa criar as tabelas e dados da tarefa no seu banco local. Pra isso, abre o arquivo init.sql, clica com o botão direito nele e escolhe Run 'init.sql'.
  2. Na janela "Edit Configuration" que abrir, você precisa dizer onde o script vai rodar. Na seção "Target data source / schema" clica no +, escolhe sua conexão configurada e depois o schema (tipo university). Depois de escolher, clica em Run.
  3. Se tudo der certo, vai aparecer uma mensagem na console lá embaixo. Pra ver a tabela criada, atualiza a visualização do banco na aba "Database" (ícone com duas setinhas). Você deve ver a nova tabela (tipo products) no seu schema.
  4. Agora que o banco tá pronto, volta pro arquivo solution.sql. Escreve seu SQL. Pra testar local, escolhe seu schema no menu acima do editor e clica no botão verde "Run". Seu SQL vai rodar no banco local e você vê o resultado.

Reexecutar o init.sql ou resolver o problema de dependências

Ao trabalhar nas tarefas, irá frequentemente executar o script init.sql para preparar a sua base de dados local. Mas o que acontece se o executar uma segunda vez, quando a tabela já foi criada?

Poderia parecer que o comando DROP TABLE IF EXISTS employees;, frequentemente encontrado em tais scripts, deveria resolver este problema, eliminando a tabela antiga antes de criar uma nova. No entanto, nem sempre é o caso. Pode deparar-se com um erro que impede a eliminação da tabela. Isto acontece se outros objetos da base de dados fizerem referência à sua tabela, como Chaves Estrangeiras (Foreign Keys) de outras tabelas ou sequências (sequences), usadas para campos com autoincremento. O sistema protege estas relações, impedindo a eliminação da tabela "mãe".

A opção CASCADE

Para esses casos, o PostgreSQL tem uma extensão para o comando DROP — a opção CASCADE. Ela diz ao servidor: "Elimina esta tabela e elimina automaticamente todos os objetos que dependem dela". Isto permite limpar "forçadamente" tudo o que está associado à tabela que está a ser eliminada.

Exemplo de código


-- Esta versão pode causar um erro se houver referências à tabela employees
DROP TABLE IF EXISTS employees;

-- OPÇÃO para scripts educativos
-- Irá eliminar a tabela employees e todos os seus objetos dependentes (chaves, sequências).
-- O IF EXISTS previne um erro se a tabela ainda não existir.
DROP TABLE IF EXISTS employees CASCADE;

-- Depois disto, pode criar a tabela novamente em segurança
CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    full_name TEXT NOT NULL
    -- ... outras colunas
);

Importante! Para fins educativos e em desenvolvimento local, onde precisa de recriar frequentemente a estrutura da BD, o CASCADE é o seu melhor amigo. No entanto, em bases de dados de produção reais, este comando deve ser usado com extrema cautela, pois pode levar à eliminação não intencional de dados e objetos relacionados importantes.

Sincronizando tarefas site — plugin

A lista de tarefas e status atualiza sozinha, a cada cinco minutos ou depois que você manda qualquer tarefa pra checagem (servidor CodeGym).

Então, se você resolveu uma tarefa no site, no plugin ela também vai aparecer como resolvida. Se quiser atualizar o status das tarefas agora, clica no seu avatar (canto superior direito) e no menu escolhe Sincronizar tarefas:

Modo iniciante no plugin

Essa é uma versão mais simples pra quem não tem (ou tem pouca) experiência com WebStorm e outras IDEs. Algumas funções do WebStorm ficam escondidas. Pra desativar esse modo, clica no seu avatar (canto superior direito) e no menu escolhe Configurações:

Como esconder o painel de navegação do plugin no modo PRO

Clica em Configurações (⚙️) e desmarca a opção "Mostrar painel de navegação do plugin":

2
Tarefa
SQL SELF, nível 4, lição 4
Bloqueado
Calcule uma soma simples
Calcule uma soma simples
2
Tarefa
SQL SELF, nível 4, lição 4
Bloqueado
Transformando uma string para letras maiúsculas
Transformando uma string para letras maiúsculas
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION