Class: LobStorage

@nginstack/engine/lib/database/LobStorage~ LobStorage


new LobStorage(classKey)

Classe que possibilita armazenar no banco de dados grandes documentos que não demandam a hierarquia e atributos de um sistema de arquivos, como a VFS.

Esta classe não cria registros no cache local, ao contrário da VFS, sendo mais apropriada para armazenar grandes volumes de dados.

Outra vantagem da LobStorage sobre a VirtualFS é que os dados são comprimidos antes serem gravados, reduzindo o espaço necessário para armazenagem no banco de dados.

Parameters:
Name Type Description
classKey number | DBKey

Chave da classe filha de "/Dados/Sistema/Large Objects" onde serão gravados os dados.

Members


classKey :number

Classe onde serão gravados os documentos salvos. Possui a finalidade de agrupar os documentos com a mesma finalidade na tabela iLob.

Type:
  • number

Methods


addLob(fileName, content [, options])

Adiciona um documento no banco de dados.

Para fins de compatibilidade, este método também aceita a seguinte assinatura:

addLob(fileName, content, mimeType?, key?);

Parameters:
Name Type Argument Description
fileName string

Nome do arquivo. A extensão do arquivo será utilizada para identificar o tipo do arquivo caso o parâmetro mimeType não seja informado.

content string

Conteúdo do documento que será gravado.

options Object <optional>

Opções de inserção do documento.

Properties
Name Type Argument Description
mimeType number | DBKey <optional>

Chave filha da classe "Mime Types" que determinará o tipo do documento armazenado. O tipo do arquivo será utilizado para determinar os algoritmos de compressão e codificação adequados.

key number <optional>

Possibilita informar a chave do lob a ser criado. Quando não for informado, será gerada uma nova chave.

extraAttributes Object <optional>

Objeto que contém a lista dos atributos e valores a serem configurados.

Returns:

Chave que identifica o documento armazenado.

Type
number
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const fileName = 'myDoc.xml';
const myLobClass = -1898144063; // Large Objects
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass)
const key = lobStorage.addLob(fileName, file.read());
ds.setField('iLob', key);

beginBatch()

Após a chamada desse método, todas as modificações solicitadas aos métodos addLob e updateLob serão armazenadas num DataSet, até que seja chamado o método endBatch.

See:

deleteLob(key)

Apaga um documento do banco de dados previamente armazenado pelo método addLob().

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

Retornará true se o documento existir e tenha sido apagado.

Type
boolean
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const fileName = 'myDoc.xml';
const myLobClass = -1898144063; // Large Objects
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass);
const key = lobStorage.addLob(fileName, file.read());
ds.setField('iLob', key);
// ....
const lobStorage = new LobStorage(myLobClass);
lobStorage.deleteLob(ds.dbkey('iLob'));

endBatch()

Retorna um dataset com as modificações realizadas pelos métodos addLob e updateLob. Após isso as modificações feitas passam a ser efetuadas diretamente no banco.

See:
Returns:

Dataset com os registros inseridos e atualizados.

Type
Dataset

getLob(key)

Lê um documento do banco de dados previamente armazenado pelo método addLob(). Irá gerar um erro caso a chave informada não exista no banco de dados.

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

Instância da classe module:@nginstack/engine/lib/database/LargeObject contendo o nome, conteúdo e mimeType do lob.

Type
LargeObject
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const lobStorage = new LobStorage(-1898144063) // Large Objects
const lob = lobStorage.getLob(lobKey);
const file = new File(lob.name);
file.write(lob.content);
file.close();

getLobExtraAttributes(key)

Obtém os atributos extras de um documento do banco de dados.

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

objeto com o atributos extras armazenados como propriedades.

Type
Object
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const myLobClass = -1898144063; // Large Objects
const lobStorage = new LobStorage(myLobClass);
const attr = lobStorage.getLobExtraAttributes(123456);
attr.origem; // SONY DSC 40

setLobExtraAttributes(key, extraAttributes)

Preenche os atributos extras em um documento do banco de dados.

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

extraAttributes Object

Objeto que contém a lista dos atributos e valores a serem configurados.

Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const myLobClass = -1898144063; // Large Objects
const lobStorage = new LobStorage(myLobClass);
lobStorage.setLobExtraAttributes(123456, {origem: "SONY DSC 40", autor: "User Name"});

tryGetLob(key)

Tenta ler um documento do banco de dados previamente armazenado pelo método addLob() e retorna null caso ele não exista.

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

Instância da classe module:@nginstack/engine/lib/database/LargeObject contendo o nome, conteúdo e mimeType do lob ou null caso não exista um lob com a chave informada.

Type
LargeObject
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const lobStorage = new LobStorage(-1898144063); // Large Objects
const lob = lobStorage.tryGetLob(lobKey);
if (lob) {
  const file = new File(lob.name);
  file.write(lob.content);
} else {
  throw new Error('O arquivo foi excluído por um outro usuário.');
}

updateLob(key, content [, options])

Atualiza um documento existente no banco de dados.

Para fins de compatibilidade, este método também aceita a seguinte assinatura:

  • updateLob(key, content, fileName?, mimeType?);
Parameters:
Name Type Argument Description
key number

Chave do lob. Esta chave é gerada pelo método addLob().

content string

Conteúdo do documento que será gravado.

options Object <optional>

Opções de atualização do documento.

Properties
Name Type Argument Description
fileName string <optional>

Nome do arquivo. Caso não seja informado, será mantido o nome atual. A extensão do arquivo será utilizada para identificar o tipo do arquivo caso o parâmetro mimeType não seja informado.

mimeType number | DBKey <optional>

Chave filha da classe "Mime Types" que determinará o tipo do documento armazenado. O tipo do arquivo será utilizado para determinar os algoritmos de compressão e codificação adequados.

extraAttributes Object <optional>

Objeto que contém a lista dos atributos e valores a serem configurados.

Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const fileName = 'myDoc.xml';
const myLobClass = -1898144063; // Large Objects
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass);
const key = lobStorage.addLob(fileName, file.read());
ds.setField('iLob', key);
// ....
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass);
lobStorage.updateLob(ds.ilob, file.read());