EdgeDB is a database that replaces SQL with EdgeQL — a more expressive, composable query language. Built on PostgreSQL, it gives you schemas, migrations, and type safety without the ORM.
Why EdgeDB?
- EdgeQL — more readable and powerful than SQL
- Schema-first — define schema with SDL, auto-generate migrations
- Built-in auth — user management included
- Type generation — generates TypeScript types from schema
Quick Start
curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh
edgedb project init
Schema
# dbschema/default.esdl
module default {
type User {
required name: str;
required email: str {
constraint exclusive;
};
multi posts: Post;
}
type Post {
required title: str;
required content: str;
required author: User;
created_at: datetime {
default := datetime_current();
};
tags: array<str>;
}
}
edgedb migration create
edgedb migrate
EdgeQL Queries
# Insert
insert User {
name := 'Alice',
email := 'alice@example.com'
};
# Select with nested data
select User {
name,
email,
posts: {
title,
created_at
} order by .created_at desc
} filter .email = 'alice@example.com';
# Update
update User filter .id = <uuid>$id
set { name := 'Alice Smith' };
# Delete
delete Post filter .id = <uuid>$id;
TypeScript Client
npm install edgedb
npx @edgedb/generate edgeql-js
import { createClient } from 'edgedb';
import e from './dbschema/edgeql-js';
const client = createClient();
// Fully typed query builder
const users = await e.select(e.User, (user) => ({
name: true,
email: true,
posts: (post) => ({
title: true,
created_at: true,
order_by: { expression: post.created_at, direction: e.DESC },
}),
filter_single: e.op(user.email, '=', 'alice@example.com'),
})).run(client);
// Insert
const newUser = await e.insert(e.User, {
name: 'Bob',
email: 'bob@example.com',
}).run(client);
Computed Properties
type User {
required first_name: str;
required last_name: str;
full_name := .first_name ++ ' ' ++ .last_name;
post_count := count(.posts);
}
Need a powerful database for scraped data? Check out my Apify actors for web scraping, or email spinov001@gmail.com for custom database solutions.
EdgeDB, PostgreSQL, or MongoDB — which database do you use? Share below!
Top comments (0)