An open API service indexing awesome lists of open source software.

https://github.com/danielivanovz/postez

Utility package for dynamically generate interfaces from PostgreSQL
https://github.com/danielivanovz/postez

automation interfaces postgresql types typescript

Last synced: 7 months ago
JSON representation

Utility package for dynamically generate interfaces from PostgreSQL

Awesome Lists containing this project

README

          

postez


Utility tool for dynamically generate interfaces and types from PostgreSQL using custom schema.

## Usage
Define a types schema as
```ts
typesSchema = {
'string': [ 'bpchar', 'char', 'varchar', 'text', 'citext', 'uuid' ],
'number': ['int2', 'int4', 'int8', 'float4', 'float8', 'numeric' ],
'boolean': ['bool', 'boolean'],
'Date': ['date', 'timestamp', 'timestamptz'],
'Array': ['_int2', '_int4', '_int8', '_float4', '_float8', '_numeric', '_money'],
'Array': ['_bool', '_boolean'],
'Array': ['_varchar', '_text', '_citext', '_uuid', '_bytea'],
'Object': ['json', 'jsonb'],
'Array': ['_json', '_jsonb'],
'Array': ['_timestamptz'],
'CustomTypes': [
{
name: 'point',
type: 'Coordinates',
definition: 'export interface Coordinates { x: number; y: number; }',
},
],
}
```

then just pass it as an argument with a database connection and output path.

``` ts
postez(db, path, typesSchema)
.then(() => console.log("Done."))
.catch((e) => console.error(e));
```

You can also specify the name of table schema you want to generate types.ts.

``` ts
postez(db, path, typesSchema, 'schema_name')
.then(() => console.log("Done."))
.catch((e) => console.error(e));
```

Otherwise you can use a default types schema (table schema name is 'public' by default if not specified) and `pg-promise` as simple as:

``` ts
import pg from 'postez/lib/db'
import { postez } from "postez";

const configuration = {
user: 'username',
password: 'password',
host: 'host',
port: 'port',
database: 'database'
}

const db = pg.db(configuration)
const path = process.cwd().replace('./dist', './output');

postez(db, path)
.then(() => console.log("Done."))
.catch((e) => console.error(e));
```

on successfull run it will prompt out the following:

```
Succesfully generated files in: /output/types.ts
```

## Todo

- add CLI usage

## License

Distributed under the MIT License. See `LICENSE` for more information.