> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# DrizzleORM: como conectar ao PostgreSQL

# Como conectar o DrizzleORM ao PostgreSQL hospedado na Square Cloud

## Introdução

Este tutorial irá guiá-lo pelos passos para conectar seu DrizzleORM ao seu banco de dados PostgreSQL hospedado na Square Cloud.
*   Primeiro, você precisa ter um plano pago ativo na sua conta. Você pode ver nossos planos e adquirir um conforme sua necessidade [aqui](https://squarecloud.app/pt-br/pricing).
*   Em seguida, você precisará de um banco de dados PostgreSQL hospedado na Square Cloud. Se ainda não criou um, você pode criá-lo [aqui](https://squarecloud.app/pt-br/dashboard/databases).

## Pré-requisitos

*   Antes de começar, certifique-se de ter criado um banco de dados na Square Cloud e conectado a ele com algum cliente de gerenciamento como DBeaver ou outro para criar bancos e tabelas.

![Criando um banco de dados PostgreSQL na Square Cloud](https://storage.crisp.chat/users/helpdesk/website/-/d/a/4/9/da49f867735c6000/download_ubih4v.gif)

*   Também será necessário ter o Drizzle configurado no seu projeto. Se ainda não fez isso, você pode seguir a documentação oficial do DrizzleORM [aqui](https://orm.drizzle.team/docs/get-started).

## Conectando o Drizzle com o PostgreSQL

Para conectar o Drizzle ao PostgreSQL, você precisará obter as informações de conexão: a URL e os certificados.

### URL do banco de dados

A URL do banco de dados que você obtém nas configurações de conexão fornece usuário, senha, host e porta para a conexão.

```bash
postgresql://username:password@host:port/dbname
```

> **Nota:** Se você não criou um banco específico, pode usar `squarecloud` como `dbname`.
> postgresql://username:password@host:port/squarecloud

### Certificados

Nas configurações de conexão do banco, baixe o arquivo `certificate.pem`. Usaremos esse arquivo como `ca`, `cert` e `key` para conectar ao banco.

![Baixando o certificado PEM na Square Cloud](https://storage.crisp.chat/users/helpdesk/website/-/d/a/4/9/da49f867735c6000/download_16y38uy.gif)

### Conectando

Para realizar a conexão, você precisa configurar o arquivo `drizzle.config.ts`. Neste momento você pode usar as credenciais separadamente.
Configure os parâmetros de conexão como no exemplo abaixo:

```ts
// drizzle.config.ts
import { defineConfig } from 'drizzle-kit'
import fs from "fs";
import path from "path";

const fullPath = path.join(process.cwd(), "certs/certificate.pem")
const cert = fs.readFileSync(fullPath, "utf-8")

export default defineConfig({
  dialect: "postgresql",
  dbCredentials: {
    host: "square-cloud-db-{id}.squareweb.app",
    port: 7171,
    user: "squarecloud",
    password: "password",
    database: "squarecloud",
    ssl: {
        ca: cert,
        key: cert,
        cert: cert
    }
  },

  schema: "path/to/schema.ts",
  out: "./drizzle",
  migrations: {
    table: '__drizzle_migrations',
    schema: 'drizzle'
  }
});
```

Você também precisa configurar o `client.ts` para usar os certificados de maneira similar.

```ts
// client.ts
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import * as schema from './schema';
import fs from "fs";
import path from "path";

const fullPath = path.join(process.cwd(), "certs/certificate.pem")
const cert = fs.readFileSync(fullPath, "utf-8")

const connection = Pool({
    host: "square-cloud-db-{id}.squareweb.app",
    port: 7171,
    user: "squarecloud",
    password: "password",
    database: "squarecloud",
    ssl: {
        ca: cert,
        key: cert,
        cert: cert
    }
});
export default drizzle({client: connection, schema});
```
