- Notifications
You must be signed in to change notification settings - Fork0
A RESTful API for managing your Postgres. Fetch tables, add roles, and run queries
License
owaisahmad-dev/postgres-meta
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A RESTful API for managing your Postgres. Fetch tables, add roles, and run queries (and more).
https://supabase.github.io/postgres-meta/
Schema:
POST /query
(Execute SQL query)POST /format
(Format SQL query)POST /parse
(Parse SQL query into AST)POST /explain
(Explain SQL query)
/columns
- GET (List)
- POST (
alter table add column
) - PATCH (
alter table alter/rename column
) - DELETE (
alter table drop column
)
/extensions
- GET (List)
- POST (
create extension
) - PATCH (
alter extension
) - DELETE (
drop extension
)
/functions
- GET (List)
- POST (
create function
) - PATCH (
alter function
) - DELETE (
drop function
)
/publications
- GET (List)
- POST (
create publication
) - PATCH (
alter publication
) - DELETE (
drop publication
)
/roles
- GET (List)
- POST (
create role
) - PATCH (
alter role
) - DELETE (
drop role
)
/schemas
- GET (List)
- POST (
create schema
) - PATCH (
alter schema
) - DELETE (
drop schema
)
/tables
- GET (List)
- POST (
create table
) - PATCH (
alter table
) - DELETE (
drop table
)
/triggers
- GET (List)
- POST (
create trigger
) - PATCH (
alter trigger
) - DELETE (
drop trigger
)
/types
- GET (List)
- POST (
create type
) - PATCH (
alter type
) - DELETE (
drop type
)
Helpers:
/config
- GET
/version
: Postgres version
- GET
/generators
- GET
/openapi
: Generate Open API - GET
/typescript
: Generate Typescript types
- GET
Set the following ENV VARS:
PG_META_HOST="0.0.0.0"PG_META_PORT=8080PG_META_DB_HOST="postgres"PG_META_DB_NAME="postgres"PG_META_DB_USER="postgres"PG_META_DB_PORT=5432PG_META_DB_PASSWORD="postgres"
Then run any of the binaries in the releases.
Why?
This serves as a light-weight connection pooler. It also normalises the Postgres system catalog into a more readable format. While there is a lot of re-inventing right now, this server will eventually provide helpers (such as type generators). The server is multi-tenant, so it can support multiple Postgres databases from a single server.
What security does this use?
None. Please don't use this as a standalone server. This should be used behind a proxy in a trusted environment, on your local machine, or using this internally with no access to the outside world.
To start developing, runnpm run dev
. It will set up the database with Docker for you. The server will restart on file change.
If you are fixing a bug, you should create a new test case. To test your changes, add the-u/--updateSnapshot
flag tojest
on thetest:run
script, runnpm run test
, and then review the git diff of the snapshots. Depending on your change, you may seeid
fields being changed - this is expected and you are free to commit it, as long as it passes the CI. Don't forget to remove the-u/--updateSnapshot
flag when committing.
To make changes to the TypeScript type generation, runnpm run gen:types:typescript
while you havenpm run dev
running.To use your own database connection string instead of the provided test database, run:PG_META_DB_URL=postgresql://postgres:postgres@localhost:5432/postgres npm run gen:types:typescript
Apache 2.0
We are building the features of Firebase using enterprise-grade, open source products. We support existing communities wherever possible, and if the products don’t exist we build them and open source them ourselves.