# Database

You can use any SQL database but I recommend Postgres.

Fell free to use any provider you like:

* [Supabase](https://supabase.com/)
* [NeonDB](https://neon.tech/)
* Your own server!

### Setup

1. Get your URI (a string starting with *"postgres:"*)

```sql
postgres://user:password@postgres:5432/dbname
```

2. Paste it to your .env:

{% code title=".env" %}

```
# Database URL
POSTGRES_URL="postgres://user:password@postgres:6543/dbname?pgbouncer=true&connection_limit=1"
POSTGRES_URL_NON_POOLING=""postgres://user:password@postgres:5432/dbname"
```

{% endcode %}

{% hint style="info" %}
Prefer a Pooling URL (PORT 6543) for Serverless environnements.

If you don't have a pooling URL, fill the 2 lines with your standard URI (PORT 5432)
{% endhint %}

### Database Init

Simply run these commands:

{% code title="Terminal" lineNumbers="true" %}

```bash
npx prisma generate
npx prisma migrate dev --skip-seed # push the schema to the database without seeds
```

{% endcode %}

### Database Queries

Prisma greatly simplify the database queries, here's an example:

{% code lineNumbers="true" %}

```typescript
const product = await prisma.product.findUnique({
    where: {
      slug: params.slug,
    },
    include: {
      ratings: true,
      category: true,
      collections: {
        include: {
          user: true,
          products: true,
        },
      },
    },
  });
```

{% endcode %}

Learn more by checking the [official Prisma documentation](https://www.prisma.io/docs). 📖
