# PostgreSQL Schema Codegen Main goal of this generator is to provide PostgreSQL database DDL script that drops and then creates database objects for the given OpenAPI application [PostgreSQL documentation](https://dev.postgresql.com/doc/) ## Requirements - PostgreSQL Server v9.4 or newer ## OpenAPI Data Type to PostgreSQL data type mapping | OpenAPI data type | OpenAPI data format | Dependent properties | PostgreSQL data types | Default PostgreSQL data type | | --- | --- | --- | --- | --- | | `integer` | `int32` | `minimum` / `maximum` / `minimumExclusive` / `maximumExclusive` | `SMALLINT` / `INT` / `BIGINT` | `INT` | | `integer` | `int64` | `minimum` / `maximum` / `minimumExclusive` / `maximumExclusive` | `SMALLINT` / `INT` / `BIGINT` | `BIGINT` | | `boolean` | | | `BOOLEAN` | `BOOLEAN` | | `number` | `float` | | `DECIMAL` | `DECIMAL` | | `number` | `double` | | `DECIMAL` | `DECIMAL` | | `string` | | `minLength` / `maxLength` | `VARCHAR` / `TEXT` | `TEXT` | | `string` | `byte` | | `BYTEA` | `BYTEA` | | `string` | `binary` | | `BYTEA` | `BYTEA` | | `file` | | | `BYTEA` | `BYTEA` | | `string` | `date` | | `DATE` | `DATE` | | `string` | `date-time` | | `TIMESTAMP` | `TIMESTAMP` | | `string` | `enum` | | `ENUM`
(via separate ENUM data type) | `ENUM`
(via separate ENUM data type) | | `array` | | | `JSON` / `JSONB` / `TEXT` | `JSON` | | `object` | | | `JSON` / `JSONB` / `TEXT` | `JSON` | | `\Model\User` (referenced definition) | | | `TEXT` | `TEXT` | ## How to use Produced files: 1. `postgresql_schema.sql` that contains: - `DROP ...` SQL statements for dropping every table and data type generated by this script; - `CREATE ...` SQL statements for creating every table and data types for them (for `ENUM` types). *Note: For safety reasons `DROP ...` SQL statements are commented out by default. Uncomment them before use.* *Note: `ENUM` data types are implemented by creating separate data types first using command `CREATE TYPE` (one data type for each `ENUM` column). Then created data type is used as data type for table column.* 2. `postgresql_schema_oauth2.sql` that contains table creation commands for Oauth2-related tables. 3. [Model folder](./Model) contains files with sample SQL queries for each table. Copy-paste them, edit and use. *Note: Important! Some of SQLs(`INSERT`/`UPDATE`) contains question marks(`?`) which are parameter placeholders. You need to bind values to these params to execute query.*