UBDomain

@unitybase/cs-shared.UBDomain~ UBDomain

Domain object model (metadata) - in-memory representation of all *.meta files included in the application config.

Developer should never create UBDomain class directly, but instead use a:

  • App.domainInfo property inside server-side methods
  • SyncConnection.getDomainInfo method inside CLI scripts
  • UBConnection.domain property inside a browser

    // server-side example
    const UB = require('@unitybase/ub')
    const App = UB.App
    let ubaAuditPresent = App.domainInfo.has('uba_audit')

Constructor

new UBDomain(domainInfo)

Arguments:
  1. domainInfo (object)  getDomainInfo UB server method result
    Properties
    1. domain (object)  raw entities collection
    2. entityMethods (object)  entities methods access rights for current user
    3. models (object)  information about domain models
    4. i18n (object)  entities localization to current user language
    5. forceMIMEConvertors (object)  list of registered server-side MIME converters for document type attribute content

Members

dialectsPriority protected static

Priority to apply a mapping of a attributes/entities to the physical tables depending of connection dialect
Properties:
Name Type Description
MSSQL2012
MSSQL2008
MSSQL
Oracle11
Oracle10
Oracle9
Oracle
PostgreSQL
AnsiSQL
Firebird
SQLite3

EntityCacheTypes static

Properties:
Name Type Description
None
Entity
Session
SessionEntity

EntityDataSourceType: string static readonly

Entity dataSource types
Properties:
Name Type Description
Normal string
External string
System string
Virtual string

ExpressionType protected static readonly

Types of expressions in attribute mapping
Properties:
Name Type Description
Field
Expression

ubDataTypes static readonly

Possible types of the attributes
Properties:
Name Type Description
String Small string. MSSQL: NVARCHAR, ORACLE: NVARCHAR2, POSTGRE: VARCHAR
Int 32-bite Integer. MSSQL: INT, ORACLE: INTEGER, POSTGRE: INTEGER
BigInt 64-bite Integer. MSSQL: BIGINT, ORACLE: NUMBER(19), POSTGRE: BIGINT
Float Double. MSSQL: FLOAT, ORACLE: NUMBER(19, 4), POSTGRE: NUMERIC(19, 4)
Currency Currency. MSSQL: FLOAT, ORACLE: NUMBER(19, 2), POSTGRE: NUMERIC(19, 2)
Boolean Boolean. MSSQL: TINYINT, ORACLE: NUMBER(1), POSTGRE: SMALLINT
DateTime Date + Time in UTC (GMT+0) timezone. MSSQL: DATETIME, OARCLE: DATE, POSTGRE: TIMESTAMP WITH TIME ZONE
Text Long strint. MSSQL: NVARCHAR(MAX), ORACLE: CLOB, POSTGRE: TEXT
ID Alias for BigInt
Entity Reference to enother entity. BigInt
Document Store a JSON with information about Document place in blob store
Many
TimeLog Seconds since UNIX epoch, Int64. MSSQL: BIGINT, ORACLE: NUMBER(19), POSTGRE: BIGINT
Enum Enumertion (see ubm_enum)
BLOB Bynary data. MSSQL: VARBINARY(MAX), ORACLE: BLOB, POSTGRE: BYTEA
Date Date (without time) in UTC (GMT+0)
Json Json stored in database. Postgres: JSONB, _MSSQL: NVARCHAR(4000), ORACLE: NVARCHAR2(2000)

ubServiceFields static readonly

Service attribute names
Properties:
Name Type Description
dateFrom
dateTo

connections: Array.<DBConnectionConfig>

Connection collection (extended domain only)

defaultConnection: DBConnectionConfig

Default connection (extended domain only)

entities: Object.<string, UBEntity>

Map with keys is entity name, value is UBEntity

models: Object.<string, UBModel>

Models collection

orderedModels: Array.<UBModel>

Array of models, sorted by the order of loading

Methods

getPhysicalDataType(dataType)string static

Return physical type by UBDataType
Arguments:
  1. dataType (string)

eachEntity(cb)

Iterates over domain entities and invokes callBack for each entity. The iteratee is invoked with three arguments: (UBEntity, entityName, UBDomain.entities)
Arguments:
  1. cb (domainEntitiesIteratorCallback)

filterEntities(predicate) → Array.<UBEntity>

Filter entities by properties
Arguments:
  1. predicate (Object|function)  Either a function passed to lodash filter or object
Example
// sessionCachedEntities contains all entities with property cacheType === Session
     var sessionCachedEntities = domain.filterEntities({cacheType: 'Session'});

get(entityCode, raiseErrorIfNotExistsopt)UBEntity

Get entity by code
Arguments:
  1. entityCode (string)
  2. [raiseErrorIfNotExists=true] (Boolean)  If true(default) and entity does not exists throw error

has(entityCode)Boolean

Check entity present in domain & user has access right for at least one entity method
Arguments:
  1. entityCode (string)

isEntityMethodsAccessible(entityCode, methodNames)

Check all provided entity methods are accessible via RLS.

If entity does not exist in domain or at last one of provided methods is not accessible - return false

Arguments:
  1. entityCode (string)
  2. methodNames (String|Array)