Unigraph SQL Examples
These examples show the same queries two ways: in raw SQL (any PostgreSQL client, any language) and with the typed @ensnode/ensdb-sdk for TypeScript projects.
SQL access requires connecting to your own self-hosted ENSDb instance.
Performing SQL queries on the ENS Unigraph requires that you have the unigraph plugin activated in your ENSNode instance. Learn more
Connect
Section titled “Connect”The Unigraph lives in ENSDb, a PostgreSQL database. Each ENSDb Writer instance writes to its own ENSDb Writer Schema (e.g. ensindexer_0). Each instance of ENSDb Metadata Writer writes to a shared operational metadata table in the ensnode schema.
Connect to your ENSDb instance:
psql postgresql://user:password@host:5432/ensdb_devnetDiscover the available ENSDb Writer Schemas:
SELECT DISTINCT ens_indexer_schema_nameFROM ensnode.metadata;| # | ens_indexer_schema_name |
|---|---|
| 1 | ensindexer_0 |
| 2 | ensindexer_1 |
Install ENSDb SDK from NPM registry:
npm install @ensnode/ensdb-sdkThe EnsDbReader object enables you to build custom queries against the Unigraph data model in ENSDb. Use the ensDb field to build queries with the Drizzle ORM, and the ensIndexerSchema field to reference database objects (i.e. the Unigraph tables) within the ENSIndexer Schema in a type-safe way.
Connect to your ENSDb instance:
import { EnsDbReader } from "@ensnode/ensdb-sdk";
// Connect by providing a connection string and the ENSIndexer Schema Name to queryconst ensDbReader = new EnsDbReader(ensDbConnectionString, ensIndexerSchemaName);const { ensDb, ensIndexerSchema, ensNodeSchema } = ensDbReader;Discover the available ENSDb Writer Schemas:
const availableEnsDbWriterSchemas = await ensDb .selectDistinct({ ensIndexerSchemaName: ensNodeSchema.metadata.ensIndexerSchemaName, }) .from(ensNodeSchema.metadata);
console.log(availableEnsDbWriterSchemas);| # | ensIndexerSchemaName |
|---|---|
| 1 | ensindexer_0 |
| 2 | ensindexer_1 |