pg-structure / Options

# Interface: Options

Options for the pgStructure.

# Properties

# commentDataToken

Optional commentDataToken: undefined | string

Tag name to extract JSON data from from database object's comments. For example by default JSON data between [pg-structure][/pg-structure] is available imn database objects. Data can be retrieved with commentData method.

# Example

const config = {
  commentDataToken: "pg-structure"
}

// Assuming `[pg-structure]{ level: 3 }[/pg-structure]` is written in database table comment/description.
const someData = db.get("public.account").commentData; // { level: 3 }

Defined in: types/index.ts:222


# envPrefix

Optional envPrefix: undefined | string

Environment variable prefix to get database client details. If no client configuration is provided pg-structure tries to get client details from environment variables to populate node-postgres config (See ClientConfig (opens new window) of pg). All keys are built using this prefix in uppercase.

Environment Varibale ClientConfig (opens new window) Key
DB_DATABASE database
DB_USER user
DB_PASSWORD password
DB_HOST host
DB_PORT port
DB_CONNECTION_STRING connectionString
DB_SSL ssl
... ...

# Example

const config = { envPrefix: "DB" }

Defined in: types/index.ts:148


# excludeSchemas

Optional excludeSchemas: undefined | string | string[]

List of the schemas or a pattern similar to SQL's LIKE to select excluded schemas.

Defined in: types/index.ts:165


# foreignKeyAliasSeparator

Optional foreignKeyAliasSeparator: undefined | string

Character to separate {@link ForeignKey.sourceAlias source alias} and {@link ForeignKey.targetAlias target alias} in foreign key name.

Defined in: types/index.ts:171


# foreignKeyAliasTargetFirst

Optional foreignKeyAliasTargetFirst: undefined | boolean

Whether first part of the foreign key aliases contains target alias (i.e company_employees) or source alias (i.e. employee_company).

Defined in: types/index.ts:174


# includeSchemas

Optional includeSchemas: undefined | string | string[]

List of the schemas or a pattern similar to SQL's LIKE to select included schemas.

# Example 1

const config = { includeSchemas: "public_%" }; // include all schemas starting with "public_"

# Example 2

const config = { includeSchemas: ["public", "extra"] };

Defined in: types/index.ts:162


# includeSystemSchemas

Optional includeSystemSchemas: undefined | boolean

Whether to include PostgreSQL system schemas (i.e. pg_catalog) from database.

Defined in: types/index.ts:168


# keepConnection

Optional keepConnection: undefined | boolean

Prevents pg-structure to close given database connection.

Defined in: types/index.ts:225


# name

Optional name: undefined | string

Name of the database. This is inferred if possible from client or connection string.

Defined in: types/index.ts:151


# relationNameFunctions

Optional relationNameFunctions: undefined | string | RelationNameFunctions

Optional module that exports functions to generate names for relationships. If not provided, default naming functions are used. All necessary information such as table names, columns, foreign key, comment data can be accessed via passed relation parameter.

It is also possible to use one of the builtin naming functions: short, optimal or descriptive.

# Example 1

const config = {
  relationNameFunctions: "short",
}

# Example 2

const config = {
  relationNameFunctions: "custom-module",
}

# Example 3

const config = {
  relationNameFunctions: require.resolve("./my-module"),
}

# Example 4

const config = {
  relationNameFunctions: {
    o2m: (relation) => some_func(relation.foreignKey.name),
    m2o: (relation) => some_func(relation.foreignKey.name),
    m2m: (relation) => some_func(relation.foreignKey.name),
  },
}

Defined in: types/index.ts:208