Class: DataSourceDef

@nginstack/engine/lib/datasource/DataSourceDef~ DataSourceDef


new DataSourceDef()

Definição de uma fonte de dados do sistema que poderá ser posteriormente instanciada por meio da classe DataSource.

Uma fonte de dados é declarada por meio de um arquivo da Virtual File System com extensão .ids. Ela pode ser declarada de duas formas:

  • declarativa: o conteúdo do arquivo é um objeto literal contendo as mesmas propriedades desta classe. Essa é forma tradicional de definição de uma fonte de dados e a mais utilizada.
  • imperativa: o conteúdo do arquivo é um script que cria uma instância da classe DataSourceDef, configura as suas propriedades e deixa o valor na pilha do script.
Examples
// Exemplo de uma definição declarativa
 {
   availableFilters: [
     {
       classKey: -1898187809, // Usuários
       prefix: 'U'
     }
   ],

   availableColumns: [
     {
       classKey: -1898187809, // Usuários
       prefix: 'U'
     }
   ],

   onGetQuery: function (dataSource, filters, columns) {
     var flts = filters.getIQueryFilters("U_*", "and");
     var cols = columns.getIQueryColumns("U_*");
     var iquery = IQuery.from(-1898187809) // Usuários
         .where(flts)
         .column(cols);
     return iquery.toSql();
   }
 };
var DataSourceDef = require('@nginstack/engine/lib/datasource/DataSourceDef');
var def = new DataSourceDef();
def.availableFilters = [
  {
    classKey: -1898187809, // Usuários
    prefix: 'U'
  }
];
def.availableColumns = [
  {
    classKey: -1898187809, // Usuários
    prefix: 'U'
  }
];
def.onGetQuery: function (dataSource, filters, columns) {
  var flts = filters.getIQueryFilters("U_*", "and");
  var cols = columns.getIQueryColumns("U_*");
  var iquery = IQuery.from(-1898187809) // Usuários
      .where(flts)
      .column(cols);
  return iquery.toSql();
};
def

Members


<non-null> availableColumns :Array.<Object>

Definição das colunas que estarão disponíveis no retorno das consultas que utilizam este DataSource.

Type:
  • Array.<Object>
See:
  • DataSourceColumnDef

<non-null> availableFilters :Array.<Object>

Definição dos filtros que estarão disponíveis nas consultas que utilizam este DataSource.

Type:
  • Array.<Object>
See:
  • DataSourceFilterDef

help :string

A ajuda do DataSource.

Type:
  • string

includes :Array.<(number|string)>

Chaves ou caminhos dos scripts que serão inclusos via __includeOnce. Utilizados geralmente quando os métodos #onCreate, #onGetQuery ou #onMountDataSet necessitam de bibliotecas externas.

Type:
  • Array.<(number|string)>

<nullable> onCreate :function

Se este método for declarado, será executado após a construção do DataSource. Recebe o próprio DataSource como único parâmetro.

Type:
  • function

<nullable> onDefineColumns :function

Método utilizado para uma declaração especializada das colunas do datasource. Caso não haja necessidade de acessar outros scripts ou recursos fora do próprio datasource, a propriedade availableColumns poderá ser alimentada diretamente. Se este método for declarado, será executado no início da construção do datasource, logo após a etapa de inclusão dos scripts definidos na propriedade includes e do método onDefineFilters. Recebe o próprio DataSource como único parâmetro e é responsável por alimentar a propriedade this.availableColumns.

Type:
  • function

<nullable> onDefineFilters :function

Método utilizado para uma declaração especializada dos filtros do datasource. Caso não haja necessidade de acessar outros scripts ou recursos fora do próprio datasource, a propriedade availableFilters poderá ser alimentada diretamente. Se este método for declarado, será executado no início da construção do datasource, logo após a etapa de inclusão dos scripts definidos na propriedade includes. Recebe o próprio DataSource como único parâmetro e é responsável por alimentar a propriedade this.availableFilters.

Type:
  • function

onGetQuery :function

Este método recebe como parâmetros o próprio DataSource, uma instância de DataSourceFilters e uma de DataSourceColumns. Os dois últimos parâmetros são objetos montados pelo DataSource a partir de suas definições.
Este método deve retornar uma query SQL. Será executado durante a execução do método getDataSet das instâncias do DataSource.

Type:
  • function

<nullable> onMountDataSet :function

Se este método for declarado, ele será executado após a obtenção do DataSet no método DataSource#getDataSet. O DataSet obtido é informado como parâmetro, e o retorno deste método substitui o retorno do método getDataSet.

Type:
  • function

public :boolean

Indica se a definição da fonte de dados é pública. Se a está propriedade for declarada como "true" outros sistemas poderão consumí-la. Optar por tornar uma fonte de dados pública é perigoso quando DataSourceDef#onGetQuery da definição da fonte de dados retorna uma consulta sql pois não serão testadas as permissões do usuário, no caso, recomenda-se definir como retorno, uma instância de IQuery em DataSourceDef#onGetQuery.

Type:
  • boolean

securityMode :DataSourceSecurityMode

Determina o modo de segurança definido. O modo de segurança é aplicado a filtragem da consulta e ao acesso aos dados pelo consumo da fonte de dados. Caso não seja definido, só haverá permissões sobre os filtros informados, isto é somente serão considerados os filtros que forem informados na permissão da fonte de dados.
Há três modos de segurança disponíveis, consulte DataSourceSecurityMode para saber mais a respeito.
É fortemente recomendado que o modo de segurança seja definido na definição da fonte de dados, uma das possíveis motivações é a permissão da fonte de dados para ser consumida por sistemas de terceiros.

Type:
  • DataSourceSecurityMode