new DatabaseSchema( [database])
Classe que permite obter informações do esquema de uma base de dados de forma padronizada em todos os SGBDs suportados pelo Engine.
Os nomes das tabelas, colunas, índices, visões e triggers retornados pelos métodos desta classe são normalizados em caixa baixa.
Parameters:
Name | Type | Argument | Description |
---|---|---|---|
database |
Database |
<optional> |
Base de dados que terá o seu esquema de dados consultado ou alterado. |
Members
-
database :Database
-
Base de dados que terá o seu esquema de dados consultado ou alterado.
Type:
Methods
-
<static> deregisterObserver(observer)
-
Remove um observador registrado previamente pela função
registerObserver
.Parameters:
Name Type Description observer
module:@nginstack/engine/lib/schema/DatabaseSchemaObserver~DatabaseSchemaObserver Observador que irá parar de observar as alterações no esquema da base de dados.
-
<static> registerObserver(observer)
-
Registra um observador das alterações no esquema da base de dados realizadas por meio desta classe.
Observadores também podem ser registrados de forma global no sistema por meio da propriedade `databaseSchemaObservers´ na classe de configuração "/Configuração/Base de dados".
Parameters:
Name Type Description observer
module:@nginstack/engine/lib/schema/DatabaseSchemaObserver~DatabaseSchemaObserver Observador a ser registrado.
-
addTableColumns(tableName, columns [, options])
-
Adiciona as colunas na tabela informada.
Parameters:
Name Type Argument Description tableName
string Nome da tabela que terá as colunas adicionadas.
columns
Array.<ColumnDef> Colunas a serem adicionadas na tabela.
options
Object <optional>
Opções da adição das colunas na tabela.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
Returns:
Comando de adição das colunas na tabela informada.
- Type
- string
-
alterTable(tableName, options)
-
Altera as configurações gerais de uma tabela.
Atualmente somente é possível alterar a chave primária. Para modificar as colunas de uma tabela, utilize #alterTableColumns.
Dependendo das modificações realizadas, este método poderá retornar um ou vários comandos separados por ";". No caso do Oracle, múltiplos comandos serão contidos em um bloco PL/SQL.
Parameters:
Name Type Description tableName
string Nome da tabela que será modificada.
options
Object Opções de alteração da tabela.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
primaryKey
Array.<string> Colunas que definem a chave primária da tabela.
indexTablespace
string Tablespace onde o índice da chave primária deve ser criado.
Returns:
Comando de alteração da tabela informada.
- Type
- string
-
alterTableColumns(tableName, columns [, options])
-
Altera as colunas da tabela informada.
Dependendo das modificações realizadas, este método poderá retornar um ou vários comandos separados por ";". No caso do Oracle, múltiplos comandos serão contidos em um bloco PL/SQL.
Observações:
- O Microsoft SQL Server não permite modificar o tipo de uma coluna que participa de índices, incluindo o índice utilizado para validar a chave primária. No caso da chave primária, ela será removida antes da alteração do tipo e restaurada logo após a mudança. Enquanto durar a conversão e caso o comando de alteração de tipo falhe, a tabela ficará sem chave primária. Em caso de falha, ela precisará ser restaurada via método #alterTable. No caso dos demais índices, eles serão removidos e precisarão ser recriados posteriormente utilizando o método #createTableIndex.
- O Oracle não permite a alteração do tipo de dado de uma coluna se ela possuir valores não
nulos. É permitido apenas alterar o tamanho de colunas do tipo
char
ouvarchar
e a precisão e escala dos tipos numéricos.
Parameters:
Name Type Argument Description tableName
string Nome da tabela que terá as colunas alteradas.
columns
Array.<ColumnDef> Novas definições das colunas que serão alteradas na tabela. As colunas não informadas serão preservadas.
options
Object <optional>
Opções da alteração das colunas na tabela.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
indexTablespace
string Tablespace que deve ser utilizado pelo índice da chave primária, caso ele precise ser recriado.
Returns:
Comando de alteração das colunas na tabela informada.
- Type
- string
-
createTable(tableName, columns [, options])
-
Cria uma tabela na base de dados.
Parameters:
Name Type Argument Description tableName
string Nome da tabela a ser criada.
columns
Array.<ColumnDef> Colunas da tabela a ser criada.
options
Object <optional>
Opções da criação da tabela.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
primaryKey
Array.<string> Colunas que definem a chave primária da tabela.
tablespace
string Tablespace onde a tabela deverá ser criada.
indexTablespace
string Tablespace onde o índice da chave primária deve ser criado.
Returns:
Comando DDL de criação da tabela.
- Type
- string
-
createTableIndex(tableName, indexDef [, options])
-
Cria um índice na base de dados.
Parameters:
Name Type Argument Description tableName
string Nome da tabela na qual o índice será criado.
indexDef
IndexDef Definição do índice que será criado.
options
Object <optional>
Opções da criação do índice.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
online
boolean Indica que o índice deve ser criado sem bloquear a leitura da tabela indexada. Esse recurso não é suportado em todas as versões dos SGBDs, sendo uma funcionalidade exclusiva da versão "Enterprise" do Oracle e do Microsoft SQL Server.
Returns:
Comando DDL de criação do índice.
- Type
- string
-
dropTable(tableName [, options])
-
Remove a tabela da base de dados.
Parameters:
Name Type Argument Description tableName
string Nome da tabela a ser removida.
options
Object <optional>
Opções da remoção da tabela.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
Returns:
Comando de remoção da tabela.
- Type
- string
-
dropTableColumns(tableName, columns [, options])
-
Remove as colunas na tabela informada.
Observação: no Oracle as colunas são apenas marcadas como não utilizadas, não sendo removidas fisicamente da tabela. Para reclamar o espaço utilizado por essas colunas, deve ser utilizado o comando:
ALTER TABLE <table_name> DROP UNUSED COLUMNS
. Esse comando irá bloquear a tabela durante a remoção das colunas. Avalie utilizar a opçãoCHECKPOINT
para minimizar o tamanho do undo log durante a operação. Mais detalhes em https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ALTER-TABLE.html.Parameters:
Name Type Argument Description tableName
string Nome da tabela que terá as colunas removidas.
columns
Array.<string> Nome das colunas a serem removidas.
options
Object <optional>
Opções da remoção de colunas na tabela.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
Returns:
Comando de remoção das colunas na tabela informada.
- Type
- string
-
dropTableIndex(tableName, indexName [, options])
-
Remove um índice da base de dados.
Parameters:
Name Type Argument Description tableName
string Nome da tabela que contém o índice que será removido.
indexName
string Nome do índice que será removido.
options
Object <optional>
Opções da remoção do índice.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
online
boolean Indica que o índice deve ser removido sem bloquear a leitura da tabela indexada. Esse recurso não é suportado em todas as versões dos SGBDs, sendo uma funcionalidade exclusiva da versão "Enterprise" do Oracle (12c ou superior) e do Microsoft SQL Server.
Returns:
Comando DDL de remoção do índice.
- Type
- string
-
dropView(viewName [, options])
-
Remove a visão da base de dados.
Parameters:
Name Type Argument Description viewName
string Nome da visão a ser removida.
options
Object <optional>
Opções da remoção da visão.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
Returns:
Comando de remoção da visão.
- Type
- string
-
getAllTablesAndViewsColumns()
-
Obtém as informações das colunas de todas as tabelas e visões da base de dados.
Returns:
Objeto cujas propriedades serão os nomes das tabelas ou visões, e os valores serão um array com as informações das colunas da tabela ou visão associada.
- Type
- Record.<string, Array.<ColumnInfo>>
-
getAllTablesIndexes()
-
Obtém informações dos índices de todas as tabelas da base de dados.
Returns:
Objeto cujas propriedades serão os nomes das tabelas que possuem índices e os valores serão um array com as informações dos índices da tabela associada.
- Type
- Record.<string, Array.<IndexInfo>>
-
getTableColumns(tableName)
-
Obtém informações das colunas de uma tabela da base de dados.
Parameters:
Name Type Description tableName
string Nome da tabela que será consultada.
Returns:
Informações sobre as colunas de uma tabela da base de dados.
- Type
- Array.<ColumnInfo>
Example
const DatabaseSchema = require('@nginstack/engine/lib/schema/DatabaseSchema'); const schema = new DatabaseSchema(database); const columns = schema.getTableColumns('iGroupUser'); let info = columns.find(function (elem) { return elem.name === 'ikey'; }); info.name; // => 'ikey' info.dataType; // => 'integer' info.nullable; // => false
-
getTableIndexes(tableName)
-
Obtém informações dos índices de uma tabela da base de dados.
Parameters:
Name Type Description tableName
string Nome da tabela que será consultada.
Returns:
Informações sobre os índices de uma tabela da base de dados.
- Type
- Array.<IndexInfo>
-
getTables( [tableNames])
-
Obtém informações das tabelas públicas do esquema padrão da base de dados.
Não serão retornadas informações das visões de tabelas. Para isso, utilize o método #getViews.
Parameters:
Name Type Argument Description tableNames
Array.<string> <optional>
Nomes das tabelas cuja informação de esquema de ser obtida. Caso não seja informado, serão retornadas as informações de todas as tabelas do esquema corrente.
Returns:
Informações das tabelas da base de dados.
- Type
- Array.<TableInfo>
Example
const DatabaseSchema = require('@nginstack/engine/lib/schema/DatabaseSchema'); const schema = new DatabaseSchema(database); const tables = schema.getTables(); const info = tables.find(function (elem) { return elem.name === 'igroupuser'; }); info.name; => 'igroupuser' info.primaryKey; // => ['ikey']
-
getTableTriggers(tableName)
-
Obtém informações dos triggers de uma tabela da base de dados.
Parameters:
Name Type Description tableName
string Nome da tabela que será consultada.
Returns:
Informações sobre os triggers de uma tabela da base de dados.
- Type
- Array.<TriggerInfo>
-
getViewColumns(tableName)
-
Obtém informações das colunas de uma visão da base de dados.
Observação: o SGBD PostgreSQL tem limitações na rastreabilidade das restrições de colunas das visões e a propriedade
nullable
não preserva o valor deste atributo da coluna de origem.Parameters:
Name Type Description tableName
string Nome da visão que será consultada.
Returns:
Informações sobre as colunas de uma visão da base de dados.
- Type
- Array.<ColumnInfo>
-
getViews( [viewNames])
-
Obtém informações das visões de tabelas públicas do esquema padrão da base de dados.
Parameters:
Name Type Argument Description viewNames
Array.<string> <optional>
Nomes das visões cuja informação de esquema de ser obtida. Caso não seja informado, serão retornadas as informações de todas as visões do esquema corrente.
Returns:
Informações das visões de tabelas da base de dados.
- Type
- Array.<ViewInfo>
-
renameTableColumn(tableName, columnName, newColumnName [, options])
-
Altera o nome de uma coluna de uma tabela da base de dados.
Parameters:
Name Type Argument Description tableName
string Nome da tabela que terá a coluna renomeada.
columnName
string Nome atual da coluna
newColumnName
string Nome da coluna após ser renomeada.
options
Object <optional>
Opções da alteração da coluna.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
Returns:
Comando DDL de alteração da coluna.
- Type
- string
-
renameTableIndex(tableName, indexName, newIndexName [, options])
-
Altera o nome um índice na base de dados.
Parameters:
Name Type Argument Description tableName
string Nome da tabela que contém o índice que será renomeado.
indexName
string Nome atual do índice.
newIndexName
string Nome que o índice terá após ser renomeado.
options
Object <optional>
Opções da alteração do índice.
Properties
Name Type Description dryRun
boolean Indica que o comando será gerado e retornado por esta função, mas não será executado na base de dados.
Returns:
Comando DDL de alteração do índice.
- Type
- string
-
supportsOnlineIndexCreation()
-
Indica se a base de dados suporta a criação de índices sem bloqueio das tabelas indexadas.
Returns:
True se a base de dados suportar a criação de índices concorrentemente com a utilização das tabelas.
- Type
- boolean
-
supportsOnlineIndexDrop()
-
Indica se a base de dados suporta a remoção de índices sem bloqueio das tabelas indexadas.
Returns:
True se a base de dados suportar a remoção de índices concorrentemente com a utilização das tabelas.
- Type
- boolean