DEV Community

Cover image for Get started with Drizzle ORM and Xata's Postgres service
Cezzaine Zaher for Xata

Posted on • Originally published at xata.io

Get started with Drizzle ORM and Xata's Postgres service

Drizzle ORM is a very popular TypeScript ORM that provides type safe access to your database, automated migrations, and a custom data model definition.

With the recent beta release of Xata's Postgres service you are now able to connect to your Xata database with Drizzle over the Postgres wire protocol too with the drizzle-orm/node-postgres or drizzle-orm/postgres-js drivers.

Also, we are excited to announce that we have added support for the drizzle-orm/xata-http driver. This driver allows you to connect to your Xata database using the Xata HTTP API. This is a great option if you are using Drizzle in a serverless environment or if you are using a language that does not have a native Postgres driver.

Setting up with Xata

Before starting you will need an empty Xata database that has direct access to Postgres enabled.

Creating a new database

You will first need to enable direct access to Postgres in your workspace settings.

Enable direct access for your workspace

You will also need to enable direct access to Postgres when you create your new database.

Enable direct access for your database

After this point you will want to update your Xata SDK to the next release to ensure you have the latest beta features.

$ npm install @xata.io/client@next # yarn install or pnpm install
Enter fullscreen mode Exit fullscreen mode

Setting up Drizzle

There are two ways to set up Drizzle: using the native Postgres adapters or the Xata HTTP adapter.

node-postgres

To use Drizzle with the node-postgres driver, you will need to install the drizzle-orm and pg packages.

$ npm install drizzle-orm pg # yarn install or pnpm install
Enter fullscreen mode Exit fullscreen mode

After that, you can use Drizzle as you normally would, but with the node-postgres driver.

import { drizzle } from 'drizzle-orm/node-postgres';
import { getXataClient } from './xata'; // Generated client
import { Client } from 'pg';

const xata = getXataClient();
const client = new Client({ connectionString: xata.sql.connectionString });
const db = drizzle(client);
Enter fullscreen mode Exit fullscreen mode

postgres-js

To use Drizzle with the postgres-js driver, you will need to install the drizzle-orm and postgres-js packages.

$ npm install drizzle-orm postgres # yarn install or pnpm install
Enter fullscreen mode Exit fullscreen mode

After that, you can use Drizzle as you normally would, but with the postgres-js driver.

import { drizzle } from 'drizzle-orm/postgres-js';
import { getXataClient } from './xata'; // Generated client
import postgres from 'postgres';

const xata = getXataClient();
const client = postgres(xata.sql.connectionString);
const db = drizzle(queryClient);
Enter fullscreen mode Exit fullscreen mode

xata-http

To use Drizzle with the xata-http driver, you will need to install the drizzle-orm package.

$ npm install drizzle-orm # yarn install or pnpm install
Enter fullscreen mode Exit fullscreen mode

After that, you can use Drizzle as you normally would, but with the xata-http driver.

import { drizzle } from 'drizzle-orm/xata-http';
import { getXataClient } from './xata'; // Generated client

const xata = getXataClient();
const db = drizzle(xata);
Enter fullscreen mode Exit fullscreen mode

Get started

And that's it, it's that easy to connect Drizzle to your Xata database. This functionality is currently only available with the public beta of our Postgres service.

Sign up today to get started! We're always around if you have any questions. Pop into Discord and say hi or reach out on X | Twitter. Happy building 🦋

Top comments (0)