> ## 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: cómo conectar a PostgreSQL

# Cómo conectar DrizzleORM al PostgreSQL alojado en Square Cloud

## Introducción

Este tutorial te guiará por los pasos para conectar tu DrizzleORM a tu base de datos PostgreSQL alojada en Square Cloud.
*   Primero, necesitas tener un plan de pago activo en tu cuenta. Puedes ver nuestros planes y adquirir uno según tu necesidad [aquí](https://squarecloud.app/pt-br/pricing).
*   Después, necesitarás una base de datos PostgreSQL alojada en Square Cloud. Si aún no creaste una, puedes crearla [aquí](https://squarecloud.app/pt-br/dashboard/databases).

## Requisitos previos

*   Antes de empezar, asegúrate de haber creado una base de datos en Square Cloud y de haberte conectado a ella con algún cliente de gestión como DBeaver u otro para crear bases y tablas.

![Creando una base de datos PostgreSQL en Square Cloud](https://storage.crisp.chat/users/helpdesk/website/-/d/a/4/9/da49f867735c6000/download_ubih4v.gif)

*   También será necesario tener Drizzle configurado en tu proyecto. Si aún no lo has hecho, puedes seguir la documentación oficial de DrizzleORM [aquí](https://orm.drizzle.team/docs/get-started).

## Conectando Drizzle con PostgreSQL

Para conectar Drizzle a PostgreSQL, necesitarás obtener la información de conexión: la URL y los certificados.

### URL de la base de datos

La URL de la base de datos que obtienes en las configuraciones de conexión proporciona usuario, contraseña, host y puerto para la conexión.

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

> **Nota:** Si no creaste una base específica, puedes usar `squarecloud` como `dbname`.
> postgresql://username:password@host:port/squarecloud

### Certificados

En las configuraciones de conexión de la base de datos, descarga el archivo `certificate.pem`. Usaremos ese archivo como `ca`, `cert` y `key` para conectar a la base.

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

### Conectando

Para realizar la conexión, debes configurar el archivo `drizzle.config.ts`. En este momento puedes usar las credenciales por separado.
Configura los parámetros de conexión como en el ejemplo de abajo:

```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'
  }
});
```

También necesitas configurar el `client.ts` para usar los certificados de manera 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});
```