| Hey HN, I built OmniQL — an open-source Go library that compiles
a universal query syntax into native database commands. You write:
:GET User WHERE id = 42 It becomes:
PostgreSQL → SELECT * FROM "users" WHERE "id" = 42;
MongoDB → db.users.find({ id: 42 });
Redis → HGETALL users:42 It's a compiler, not a wrapper. Your query becomes an AST, then
translates to native commands. No runtime overhead — it generates
the same query you'd write by hand. Works for DDL too:
:CREATE TABLE User WITH id:AUTO, name:STRING:NOTNULL Becomes native CREATE TABLE for Postgres/MySQL or
db.createCollection for MongoDB. Why I built this: I run a multi-database platform and got tired of
maintaining four different query syntaxes. OmniQL started as an
internal tool and we're open-sourcing it. GitHub: https://github.com/omniql-engine/omniql
Docs: https://docs.omniql.com Happy to answer questions about the compiler architecture, AST
design, or how we handle the semantic gaps between SQL and NoSQL. |