X2 Framework for Node.js | DB Table Record Collections Monitor
Record collections monitor implementation for the x2node-dbos module that uses a database table to keep track of the record collection updates.
See module's API Reference Documentation.
Usage
To add the monitor to a DBO factory, the following code can be used:
const mysql = ;const dbos = ;const rcMonitor = ;... // record types libraryconst recordTypes = ... // create the DBO factoryconst dboFactory = dbos; // get the standardized data source for the MySQL connection poolconst pool = mysql;const ds = dboFactory; // add record collections monitor to the DBO factoryrcMonitor;
The assignTo()
function exposed by the module takes two arguments: the DBO factory, to which to assign the monitor, and a data source object, which it needs in order to initialize the monitor and make sure that the record collections version info table exists.
The monitor uses the same debug logging section as the DBOs module, so to see what SQL it runs against the database add "X2_DBO" to the NODE_DEBUG
environment variable (see Node.js API docs for details).
The Table
When the monitor is initialized, it will try to automatically create the record collections version info table if it does not exists. That often requires certain priviledges for the user used by the application to connect to the database. It may make sense to pre-create the table as a part of the database initialization instead. The table name is x2rcinfo
and by default it has the following definition for MySQL:
( name VARCHAR(64) PRIMARY KEY, version INTEGER UNSIGNED NOT NULL, modified_on TIMESTAMP(3) DEFAULT 0)
and the following definition for PostgreSQL:
( name VARCHAR(64) PRIMARY KEY, version INTEGER NOT NULL, modified_on TIMESTAMP NOT NULL)
The monitor will automatically insert a row for each record type (with the name
column used for the record type name) as it encounters them. Once inserted, the row is updated whenever the corresponding records collection gets updated.