UBConnection

@unitybase/base/UBConnection~ UBConnection

new UBConnection(options)

Using instance of this class you can execute a authorized UnityBase server methods.

The most used method is UBConnection.query - a authorized request to ubql endpoint.

 var UBConnection = require('UBConnection');
 var conn = new UBConnection({host: 'localhost', port: '888', path: 'autotest', keepAlive: true});
 // alternative way is:
 // var conn = new UBConnection('http://localhost:888/orm');
 // but in this case keepAlive is false
 conn.onRequestAuthParams = function(){ return {authSchema: 'UB', login: 'admin', password: 'admin'} }
 var domain = conn.getDomainInfo();
 if (domain.has('my_entity')){
           ..
  }
Arguments:
  1. options (Object)  Connection parameters. See http.request for details

Members

_domain: UBDomain inner

clientRequest: ClientRequest protected readonly

Internal instance of HTTP client

servicePath: String readonly

Root path to all application-level method

appName: String readonly

Name of UnityBase application

onRequestAuthParams: function

Callback for resolving user credential. Take a UBConnection as a parameter, must return authorization parameters object:

 {authSchema: authType, login: login, password: password, [apiKey: ]}

For a internal usage (requests from a locahost or other systems, etc.) and in case authShema == 'UB' it is possible to pass a apiKey instead of a password. apiKey is actually a uba_user.uPasswordHashHexa content

queryMethod: string

Endpoint name for query (runList before 1.12, ubql after 1.12)

encryptContent: Boolean readonly

Is server require content encryption

serverCertificate: Boolean readonly

base64 encoded server certificate used for cryptographic operation

sessionKeyLifeTime: Number readonly

Lifetime (in second) of session encryption

authMethods: Array.<string> readonly

Possible server authentication method

authNeed: Boolean readonly

Is UnityBase server require authorization

appConfig: Object

AdminUI settings

Methods

getAppInfo()Object

Return information about how application is configured as returned by getAppInfo endpoint

getDomainInfo(isExtendedopt)UBDomain

Retrieve application domain information.
Arguments:
  1. [isExtended=false] (Boolean)  For member of admin group cen return a addinitonal domain information, such as mappings, connection details, indexes

isAuthorized()boolean

Check is current connection already perform authentication request

userLogin()String

Return current user logon or 'anonymous' in case not logged in

userLang()String

Return current user language or 'en' in case not logged in

userData(keyopt) → *

Return custom data for logged in user, or {lang: 'en'} in case not logged in

If key is provided - return only key part of user data:

 $App.connection.userData('lang');
 // or the same but dedicated alias
 $App.connection.userLang()
Arguments:
  1. [key] (String)  Optional key

lookup(aEntity, lookupAttribute, aCondition, doNotUseCacheopt) → *

Lookup value in entity using aCondition.

 // create condition using Repository
 var myID = conn.lookup('ubm_enum', 'ID',
      conn.Repository('ubm_enum').where('eGroup', '=', 'UBA_RULETYPE').where('code', '=', 'A').ubql().whereList
     );
 // or pass condition directly
 var adminID = conn.lookup('uba_user', 'ID', {
        expression: 'name', condition: 'equal', values: {nameVal: 'admin'}
     });
Arguments:
  1. aEntity (String)  entity to lookup
  2. lookupAttribute (String)  attribute to lookup
  3. aCondition (String|Object)  lookup condition. String in case of custom expression, or whereListItem {expression: condition: values: }, or whereList {condition1: {expression: condition: values: }, condition2: {}, ....}
  4. [doNotUseCache=false] (Boolean)

query(ubq)Object|Array

Perform authorized UBQL request. Can take one QB Query or an array of UB Query and execute it at once.
Arguments:
  1. ubq (Object|Array.<Object>)

xhr(options)ArrayBuffer|Object|String|Array.<Object>

HTTP request to UB server. In case of success response return body parsed to {Object} or {ArrayBuffer} depending of Content-Type response header
Arguments:
  1. options (Object)
    Properties
    1. endpoint (String)
    2. [UBMethod] (String)  This parameter is DEPRECATED. Use options.endpoint instead
    3. [HTTPMethod='POST'] (String)
    4. [headers] (Object)  Optional request headers in format {headerName: headerValue, ..}
    5. [simpleTextResult=false] (Boolean)  do not parse response and return it as is even if response content type is JSON
    6. [URLParams] (*)  Optional parameters added to URL using http.buildURL
    7. [data] (ArrayBuffer|Object|String)  Optional body
    8. [responseType] (String)  see responseType. Currently only arraybuffer suported.
Example
conn.xhr({
     endpoint: 'runSQL',
     URLParams: {CONNECTION: 'dba'},
     data: 'DROP SCHEMA IF EXISTS ub_autotest CASCADE; DROP USER IF EXISTS ub_autotest;'
 });

get(endpoint, URLParamsopt)ArrayBuffer|Object|String

Perform get request to endpoint with optional URLParams.
Arguments:
  1. endpoint (String)
  2. [URLParams] (*)

post(endpoint, data)ArrayBuffer|Object|String|Array.<object>

Shortcut method to perform authorized POST request to application we connected
Arguments:
  1. endpoint (String)
  2. data (ArrayBuffer|Object|String)

runCustom() → *

Send request to any endpoint. For entity-level method execution (ubql endpoint) better to use UBConnection.query

run(request)Object

Shortcut method to perform authorized POST request to ubql endpoint. Can take one ubRequest and wrap it to array
Arguments:
  1. request (ubRequest)
Deprecated:
  • Since UB 1.11 use UBConnection.query

logout()

Logout from server if logged in

setDocument(entity, attribute, id, data, origName, fileNameopt)string

Set document method saves a file content as a potential value of the specified entity instance attribute, the value is saved to temp store. Call this function before entity insert of update. Result of this function is what shall be assigned to the attribute value, to "execParams".
Arguments:
  1. entity (string)  Entity name
  2. attribute (string)  Entity attribute name
  3. id (number)  ID of the record
  4. data (ArrayBuffer)  File content
  5. origName (string)
  6. [fileName] (string)  If not specified, origName will be used.
Example
const myObj = conn.Repository(entityName)
    .attrs('ID', 'mi_modifyDate')
    .where('code', '=', code)
    .selectSingle();
const {ID, mi_modifyDate} = myObj;
const data = fs.readFileSync(fileName, {encoding: 'bin'});
const tempStoreResult = conn.setDocument(entityName, 'configuration', ID, data, fn);
conn.query({
     entity: entityName,
		method: 'update',
		execParams: {ID, configuration: tempStoreResult, mi_modifyDate}
	});

insert(ubq) → *

Execute insert method by add method: 'insert' to ubq query (if req.method not already set)

If ubq.fieldList contain only ID return inserted ID, else return array of attribute values passed to fieldList. If no field list passed at all - return response.resultData (null usually).

    var testRole = conn.insert({
        entity: 'uba_role',
        fieldList: ['ID', 'mi_modifyDate'],
        execParams: {
            name: 'testRole1',
            allowedAppMethods: 'runList'
        }
    });
    console.log(testRole); //[3000000000200,"2014-10-21T11:56:37Z"]

    var testRoleID = conn.insert({
        entity: 'uba_role',
        fieldList: ['ID'],
        execParams: {
            name: 'testRole1',
            allowedAppMethods: 'runList'
        }
    });
    console.log(testRoleID); //3000000000200
Arguments:
  1. ubq (ubRequest)

Repository(entityName)ServerRepository

Create a new instance of repository
Arguments:
  1. entityName (String)  name of Entity we create for