pg-access-apply
Idempotent postgres database and role management
Docs

Loosely, this manages resources that are configured and then handed
over to an application to use. Eg: you create a database and a role,
then pass this configuration over to an application which creates and
manages tables etc within that database. The goal of this library is
to manage things like databases and roles.
Getting started
import { Client } from 'pg';
import { pg_applier } from 'pg-access-apply';
const client = new Client({ ... });
client.connect();
try {
const applier = pg_applier({
query: client.query.bind(client),
});
await applier.database({
name: 'mydatabase',
});
await applier.role({
name: 'myrole',
properties: {
password: 'mypassword',
login: true,
},
});
await applierDb.grantOnDatabase({
roles: ['myrole'],
properties: {
allPrivileges: true,
databases: ['mydatabase'],
},
});
} finally {
client.end();
}
Supported Postgres resources