Faaaala galera, tudo bem com vocês?
Infelizmente o Docker pode ser um problema para alguns usuários, principalmente aqueles que estão utilizando o Windows. Nesse guia rápido, vamos mostrar pra vocês a como trocar do PostgreSQL para o SQLite (banco em arquivo) e utilizar um serviço online para o Redis.
Se tiver a pasta prisma/migrations
, apague ela. (está tudo bem se não tiver)
No arquivo prisma/schema
, troque o valor de provider
para sqlite
datasource db {
provider = "sqlite" // Essa linha
url = env("DATABASE_URL")
}
No arquivo .env
troque a URL de conexão para um novo caminho:
DATABASE_URL="file:./app.db"
Recomendamos colocar no .gitignore
esses valores:
*.db
*.db-journal
Executar o comando npx prisma migrate dev
para criar as migrations. Informe o nome que preferir.
Por fim, no arquivo src/http/routes/create-poll.ts
, não é possível utilizar o createMany
com o SQLite, vamos então trocar para:
// ...
// Primeiro, criar a poll, sem options.
const poll = await prisma.poll.create({
data: {
title,
}
})
// Em seguida, utilizar um Promise.all para criar todas as options:
await Promise.all(options.map((option) => {
return prisma.pollOption.create({
data: {
title: option,
pollId: poll.id
}
})
}))
Antes de tudo, o que é o Upstash? Upstash é uma plataforma com diversos serviços para ambiente serverless (outro tipo de aplicação que não precisa se preocupar agora, foco jovem gafanhoto), e um desses serviços é um Banco Redis. O plano free é bem generoso.
Crie uma conta no site: Upstash: Serverless Data Platform
No menu ao topo da página, selecione Redis
e clique em “Create Database”.
Esse modal deverá ser aberto:
Coloque o nome de sua preferência, mantenha a opção Regional
selecionada e no select abaixo escolha us-east-1
.
Não precisa marcar nenhuma das outras opções. Clique em Create
.
Ao criar sua Database, acesse ela e terá uma página parecida com essa:
Clique no botão informado e copie toda a URL de conexão.
De volta ao seu projeto, no arquivo .env
, crie uma nova variável com o nome REDIS_URL
DATABASE_URL="file:./app.db"
REDIS_URL="URL_AQUI"
Por fim, no arquivo src/lib/redis.ts
, vamos configurar para utilizar essa variável:
import { Redis } from "ioredis";
if (!process.env.REDIS_URL) {
throw new Error("Missing REDIS_URL env var");
}
export const redis = new Redis(process.env.REDIS_URL)
Você consegue visualizar os dados do banco na aba “Data Browser”
Concluindo todos esses passos a aplicação já irá funcionar sem precisar do Docker. Nice! 🚀
Segue o link do commit com todas essas alterações para caso queira comparar:
GitHub - rocketseat-education/nlw-expert-nodejs at 0f1a0f1e8343963ff72b523c5105de3d375e2b7f