> For the complete documentation index, see [llms.txt](https://struct.gitbook.io/struct/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://struct.gitbook.io/struct/projetos-develop/execucao/prisma-js/local.md).

# Configurando local

{% hint style="info" %}
Trecho voltado à gerência
{% endhint %}

Adicionar o prisma CLI (Command Line Interface) ao projeto como dependência de desenvolvimento:

```bash
yarn add -D prisma
```

Então inicializar o prisma:

```bash
yarn prisma init --datasource-provider postgresql
```

Adicione `.env` ao `.gitignore`

#### Integrando com banco de dados externo (e.g. do rails):

{% hint style="info" %}
O prisma pode cuidar da criação do banco de dados, mas por enquanto vamos usar o banco de dados do rails. Para isso, precisamos configurar o prisma para usar um banco de dados externo.
{% endhint %}

Adicionar ao arquivo `.env.example` (criá-lo caso não exista) o seguinte conteúdo:

```
# Variáveis de ambiente para o prisma:

DATABASE_URL="postgresql://user:password@localhost:5432/<database>"
# DATABASE_URL="postgresql://<db_user>:<db_password>@localhost:5432/<db_name>?schema=public"
```

Substitua acima o \<db\_name> pelo nome do banco de dados. O rails por padrão pega o nome do projeto e coloca adiciona um pósfixo `_development`. Então, se o nome do projeto for `projeto-api`, o banco de dados de desenvolvimento será `Projeto_api_development`, e o arquivo ficaria assim:

```
DATABASE_URL="postgresql://<user>:<password>@localhost:5432/Projeto_api_development"
```

A url de conexão com o banco de dados tem o seguinte padrão, caso seja necessário mudar alguma parte:

```
postgresql://<user>:<password>@<host>:<port>/<database>?schema=<schema>
```

#### Criando o client do prisma:

Adicionar isso, adicionar aos script em `package.json`:

```json
"scripts": {
    // ...scripts anteriores
    "prisma:update": "yarn prisma db pull && yarn prisma generate",
},
```

Então, na pasta `prisma`, criar um arquivo chamado client.js, com o seguinte conteúdo:

```js
import { PrismaClient } from "@prisma/client";

// Permite que BigInt seja serializável para JSON, e funcione corretamente
// caso existam tais campos no banco de dados
// O rails por padrão usa BigInt para os ids
BigInt.prototype.toJSON = function () {
  return this.toString();
};

export const prisma = new PrismaClient({
  log: ['query', 'info', 'warn', 'error'],
});
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://struct.gitbook.io/struct/projetos-develop/execucao/prisma-js/local.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
