# Class: Schema

Class which represent a PostgreSQL schema. Provides attributes and methods for details of the schema.

# Hierarchy

# Properties

# Readonly aggregateFunctions

aggregateFunctions: IndexableArray‹AggregateFunction, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:148

All aggregateFunctions of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const functionArray   = schema.aggregateFunctions;
const isAvailable     = schema.aggregateFunctions.has('some_function');
const function        = schema.aggregateFunctions.get('some_function');
const name            = aggregateFunctions.name;

schema.tables.forEach(table => console.log(table.name));

# Optional Readonly comment

comment? : undefined | string

Inherited from MaterializedView.comment

Defined in src/pg-structure/base/db-object.ts:75

Comment of the database object defined in database including {@link DbObject#commentData comment data}.


# Readonly materializedViews

materializedViews: IndexableArray‹MaterializedView, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:90

All materialized views of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const mViewArray   = schema.materializedViews;
const isAvailable  = schema.materializedViews.has('admin_person');
const mView        = schema.materializedViews.get('big_account');
const name         = mView.name;

schema.materializedViews.forEach(mView => console.log(mView.name));

# Readonly name

name: string

Inherited from MaterializedView.name

Defined in src/pg-structure/base/db-object.ts:42

Name of the database object.


# Readonly normalFunctions

normalFunctions: IndexableArray‹NormalFunction, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:122

All normalFunctions of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const functionArray   = schema.normalFunctions;
const isAvailable     = schema.normalFunctions.has('some_function');
const function        = schema.normalFunctions.get('some_function');
const name            = normalFunctions.name;

schema.tables.forEach(table => console.log(table.name));

# Readonly oid

oid: number

Defined in src/pg-structure/schema.ts:42

Object identifier for the Schema


# Readonly procedures

procedures: IndexableArray‹Procedure, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:135

All procedures of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const functionArray   = schema.procedures;
const isAvailable     = schema.procedures.has('some_procedure');
const function        = schema.procedures.get('some_procedure');
const name            = procedures.name;

schema.tables.forEach(table => console.log(table.name));

# Readonly schema

schema: Schema = this

Overrides Constraint.schema

Defined in src/pg-structure/schema.ts:200

Schema of the object.


# Readonly tables

tables: IndexableArray‹Table, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:64

All tables of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const tableArray   = schema.tables;
const isAvailable  = schema.tables.has('person');
const table        = schema.tables.get('account');
const name         = table.name;

schema.tables.forEach(table => console.log(table.name));

# Readonly typesIncludingEntities

typesIncludingEntities: IndexableArray‹Type, "name", "oid" | "classOid" | "internalName", true› = IndexableArray.throwingFrom([], "name", "oid", "classOid", "internalName")

Defined in src/pg-structure/schema.ts:174

All custom database types of the schema as an {@link IndexableArray indexable array} ordered by name. This list includes types originated from entities such as tables, views and materialized views. Entities are also composite types in PostgreSQL. To exclude types originated from entites use types method.

# Example

const typeArray    = schema.typesIncludingEntities;
const isAvailable  = schema.typesIncludingEntities.has('address');
const type         = schema.typesIncludingEntities.get('address');
const columns      = type.columns;

# Readonly views

views: IndexableArray‹View, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:77

All views of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const viewArray    = schema.views;
const isAvailable  = schema.views.has('admin_person');
const view         = schema.views.get('big_account');
const name         = view.name;

schema.views.forEach(view => console.log(view.name));

# Readonly windowFunctions

windowFunctions: IndexableArray‹WindowFunction, "name", never, true› = IndexableArray.throwingFrom([], "name")

Defined in src/pg-structure/schema.ts:161

All windowFunctions of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const functionArray   = schema.windowFunctions;
const isAvailable     = schema.windowFunctions.has('some_function');
const function        = schema.windowFunctions.get('some_function');
const name            = windowFunctions.name;

schema.tables.forEach(table => console.log(table.name));

# Accessors

# commentData

get commentData(): JSONData | undefined

Inherited from MaterializedView.commentData

Defined in src/pg-structure/base/db-object.ts:102

Data which is extracted from database object's comment. Data is extracted from text between special case-insesitive tag (default: [pg-structure][/pg-structure]) and converted to JavaScript object using JSON5. Token name can be specified by using commentDataToken arguments. For details of JSON5, see it's web site: https://json5.org.

# Example

// "Account details. [pg-structure]{ extraData: 2 }[/pg-structure] Also used for logging."
table.comment;               // "Account details. [pg-structure]{ extraData: 2 }[/pg-structure] Also used for logging."
table.commentWithoutData;    // "Account details.  Also used for logging."
table.commentData;           // { extraData: 2 }
table.commentData.extraData; // 2

Returns: JSONData | undefined


# commentWithoutData

get commentWithoutData(): string | undefined

Inherited from MaterializedView.commentWithoutData

Defined in src/pg-structure/base/db-object.ts:85

Description or comment of the database object defined in database. If comment contains {@link DbObject#commentData comment data}, it is removed.

# Example

// "Account details. [pg-structure]{ extraData: 2 }[/pg-structure] Also used for logging."
table.commentWithoutData;    // "Account details.  Also used for logging."

Returns: string | undefined


# db

get db(): Db

Inherited from MaterializedView.db

Defined in src/pg-structure/base/db-object.ts:68

Database of the database object.

Returns: Db


# entities

get entities(): IndexableArray‹Entity, "name", never, true›

Defined in src/pg-structure/schema.ts:49

All entities (tables and views) of the schema as an {@link IndexableArray indexable array} ordered by name.

Returns: IndexableArray‹Entity, "name", never, true›


# fullCatalogName

get fullCatalogName(): string

Inherited from MaterializedView.fullCatalogName

Defined in src/pg-structure/base/db-object.ts:35

Full name of the database object including database name.

Returns: string


# fullName

get fullName(): string

Overrides Constraint.fullName

Defined in src/pg-structure/schema.ts:202

Returns: string


# functions

get functions(): IndexableArray‹Func, "name", never, true›

Defined in src/pg-structure/schema.ts:104

All {@link Function functions} of the schema as an {@link IndexableArray indexable array} ordered by name.

# Example

const functionArray   = schema.functions;
const isAvailable     = schema.functions.has('some_function');
const function        = schema.functions.get('some_function');
const name            = function.name;

schema.tables.forEach(table => console.log(table.name));

Returns: IndexableArray‹Func, "name", never, true›


# nameCaseType

get nameCaseType(): CaseType

Inherited from MaterializedView.nameCaseType

Defined in src/pg-structure/base/db-object.ts:54

Letter casing (i.e snakeCase or camelCase) of the database object name.

# Example

const name = entity.name;                        // ProductDetail
const caseType = entity.nameCaseType;            // camelCase

const otherEntity = otherEntity.name;            // member_protocol
const otherCaseType = otherEntity.nameCaseType;  // snakeCase

Returns: CaseType


# separator

get separator(): string

Inherited from MaterializedView.separator

Defined in src/pg-structure/base/db-object.ts:61

Separator used in database object name. Empty string for came case and underscore for (_) snake case.

Returns: string


# types

get types(): IndexableArray‹Type, "name", "oid" | "classOid" | "internalName", true›

Defined in src/pg-structure/schema.ts:193

All custom database types of the schema as an {@link IndexableArray indexable array} ordered by name. This list excludes types originated from entities such as tables, views and materialized views. Entities are also composite types in PostgreSQL. To get all types including entites use typesIncludingEntities method.

# Example

const typeArray    = schema.types;
const isAvailable  = schema.types.has('address');
const type         = schema.types.get('address');
const columns      = type.columns;

Returns: IndexableArray‹Type, "name", "oid" | "classOid" | "internalName", true›

# Methods

# get

get(path: string): Entity | Column

Defined in src/pg-structure/schema.ts:218

Returns table, view or column on given path in schema. Path should be in dot (.) notation.

Note for TypeScript users: Since get() could return one of the many possible types, you may need to specify your expected type using as. i.e. const result = db.get("public.account") as Table;

# Example

const table  = db.get('contact');      // Returns contact table in public schema.
const column = db.get('contact.name'); // Returns name column of the contact table.

Parameters:

Name Type Description
path string is the path of the requested item in dot (.) notation such as 'public.contact'

Returns: Entity | Column

requested database object.