Archive: Namaste PHP AMQP framework v1.0 (2017-2020)

952 days continuous production uptime, 40k+ tp/s single node.
Original corpo Bitbucket history not included — clean archive commit.
This commit is contained in:
2026-04-05 09:49:30 -07:00
commit 373ebc8c93
1284 changed files with 409372 additions and 0 deletions

711
common/dbCatalog.php Normal file
View File

@@ -0,0 +1,711 @@
<?php
/**
* this file holds all of the mongo template and config constants
*
* @author mike@givingassistant.org
* @version 1.0
*
*
* HISTORY:
* ========
* 06-07-17 mks original coding
*
*/
const TEMPLATE_DB = 'db';
const TEMPLATE_DB_AUTH = 'admin';
const TEMPLATE_DB_DDB = 'DynamoDB';
const TEMPLATE_DB_MONGO = 'mongoDB';
const TEMPLATE_DB_PDO = 'PDO';
const APPLICATION_BRAND = 'ga';
const DB_MASTER = 1;
const DB_SLAVE = 0;
const STRING_MYSQL = 'mysql';
const STRING_MONGO = 'mongo';
const STRING_PDO = 'PDO';
const STRING_SORT_ASC = 'ASC';
const STRING_SORT_DESC = 'DESC';
const STRING_WITH_ROLLUP = 'WITH ROLLUP';
const STRING_MULTI = 'multi';
const STRING_UPSERT = 'upsert';
const STRING_PROJECTION = 'projection';
const STRING_IN = 'IN';
const STRING_OUT = 'OUT';
const STRING_INOUT = 'INOUT';
const PKEY_GUID = 'guid'; // namaste pkey for external use
const PKEY_ID = 'id'; // traditional mysql pkey for internal use
// define the database service locations
const CONFIG_DATABASE_SERVICE_APPSERVER = 'appServer';
const CONFIG_DATABASE_SERVICE_ADMIN = 'admin';
const CONFIG_DATABASE_SERVICE_SEGUNDO = 'segundo';
const CONFIG_DATABASE_SERVICE_TERCERO = 'tercero';
// db history events
const DB_EVENT_SELECT = 'select';
const DB_EVENT_CREATE = 'create';
const DB_EVENT_BULK_CREATE = 'bulkCreate';
const DB_EVENT_UPDATE = 'update';
const DB_EVENT_UPSERT = 'upsert';
const DB_EVENT_BATCH_UPDATE = 'batchUpdate';
const DB_EVENT_FETCH = 'fetch';
const DB_EVENT_DELETE = 'delete';
const DB_EVENT_BATCH_DELETE = 'batchDelete';
const DB_EVENT_LOCK = 'lock';
const DB_EVENT_UNLOCK = 'releaseLock';
const DB_EVENT_WAREHOUSE = 'warehouse';
const DB_EVENT_NAMASTE_WRITE = 'internalWrite';
const DB_EVENT_NAMASTE_READ = 'internalRead';
const DB_EVENT_HK = 'houseKeeping';
const DB_EVENT_CALL_SP = 'storedProcedureCalled';
const DB_EVENT_NONE = 'none';
const DB_EVENT_SCI = 'subCollectionInsert';
const DB_EVENT_SCD = 'subCollectionDelete';
const DB_EVENT_SCF = 'subCollectionFetch';
const DB_EVENT_BI = 'batchInsert';
const DB_EVENT_MAIL = 'emailSent';
const DB_EVENT_DISABLED = 'recordDisabled';
const DB_EVENT_NULL = 'deleteField';
// DDB table decl constants
const DDB_TYPE_STRING = 'S';
const DDB_TYPE_STRING_SET = 'SS';
const DDB_TYPE_NUMBER = 'N';
const DDB_TYPE_NUMBER_SET = 'NS';
const DDB_TYPE_BINARY = 'B';
const DDB_TYPE_BINARY_SET = 'BS';
const DDB_TYPE_BOOLEAN = 'BOOL';
const DDB_TYPE_LIST = 'L';
const DDB_TYPE_MAP = 'M';
const DDB_TYPE_NULL = 'NULL';
const DDB_INDEX_HASH = 'HASH';
const DDB_INDEX_RANGE = 'RANGE';
const DDB_STRING_PROVISIONED_THROUGHPUT = 'ProvisionedThroughput';
const DDB_STRING_READ_CAPACITY_UNITS = 'ReadCapacityUnits';
const DDB_STRING_WRITE_CAPACITY_UNITS = 'WriteCapacityUnits';
const DDB_STRING_ATTRIBUTE_NAME = 'AttributeName';
const DDB_STRING_ATTRIBUTE_TYPE = 'AttributeType';
const DDB_STRING_ATTRIBUTE_VALUE_LIST = 'AttributeValueList';
const DDB_STRING_ATTRIBUTE_DEFINITIONS = 'AttributeDefinitions';
const DDB_STRING_KEY_TYPE = 'KeyType';
const DDB_STRING_TABLE_NAME = 'TableName';
const DDB_STRING_KEY_SCHEMA = 'KeySchema';
const DDB_METADATA = '@metadata';
const DDB_STATUS_CODE = 'statusCode';
const DDB_TABLE_NAMES = 'TableNames';
const DDB_TABLE_NAME = 'TableName';
const DDB_STRING_ITEM = 'Item';
const DDB_STRING_ITEMS = 'Items';
const DDB_STRING_KEY_CONDITIONS = 'KeyConditions';
const DDB_STRING_KEY_COND_EXPR = 'KeyConditionExpression';
const DDB_STRING_EXPR_ATTR_NAMES = 'ExpressionAttributeNames';
const DDB_STRING_EXPR_ATTR_VALS = 'ExpressionAttributeValues';
const DDB_STRING_CONSISTENT_READ = 'ConsistentRead';
const DDB_STRING_KEY = 'Key';
const DDB_STRING_QUERY = 'Query';
const DDB_STRING_COUNT = 'Count';
const DDB_STRING_NON_KEY_ATTRIBUTE = 'nka';
const DDB_STRING_NON_KEY_ATTRIBUTES = 'NonKeyAttributes';
const DDB_STRING_PROJECTION = 'Projection';
const DDB_STRING_PROJECTION_TYPE = 'ProjectionType';
const DDB_STRING_PT = 'projectionType';
const DDB_STRING_INDEX_NAME = 'IndexName';
const DDB_STRING_GLOBAL_SI = 'GlobalSecondaryIndexes';
const DDB_STRING_GSI = 'globalIndexes';
const DDB_STRING_LOCAL_SI = 'LocalSecondaryIndexes';
const DDB_STRING_LSI = 'localIndexes';
const DDB_PT_KEYS_ONLY = 'KEYS_ONLY';
const DDB_PT_INCLUDE = 'INCLUDE';
const DDB_PT_ALL = 'ALL';
const DDB_INDEX_TYPE_PRIMARY = 'primary';
const DDB_INDEX_TYPE_GLOBAL = 'globalSecondary';
const DDB_INDEX_TYPE_LOCAL = 'localSecondary';
// mongo table names
const NOSQL_TABLE_SEQUENCE = 'sequence_seq';
// mongo constants
const MONGO_ID = '_id';
const MONGO_DSN = 'mongodb://';
const MONGO_REPL_SET = 'replicaSet';
const MONGO_REPL_SET_LIST = 'replicaSetList';
const MONGO_URI_PORT = 'uriPort';
const MONGO_DATABASE = 'database';
const MONGO_MASTER = 'master';
const MONGO_WH_MASTER = 'whMaster';
const MONGO_SEGUNDO_MASTER = 'segundoMaster';
const MONGO_ADMIN_MASTER = 'adminMaster';
const MONGO_TERCERO_MASTER = 'terceroMaster';
const MONGO_LOG_MAX_LINES = 100;
const MONGO_QUERY_BULK_CREATE = 'Mongo bulkWrite query successfully executed for %d records';
const MONGO_BULK_WRITE_RESULTS = '%d documents matched, %d documents updated, %d documents upserted, %d documents inserted, %d documents deleted';
const MONGO_EQ = "\$eq";
const MONGO_DNE = "\$ne";
const MONGO_NIN = "\$nin";
const MONGO_IN = "\$in";
const MONGO_GT = "\$gt";
const MONGO_GTE = "\$gte";
const MONGO_LTE = "\$lte";
const MONGO_LT = "\$lt";
const MONGO_REGEX = "\$regex";
const MONGO_AND = "\$and";
const MONGO_NOT = "\$not";
const MONGO_OR = "\$or";
const MONGO_NOR = "\$nor";
const MONGO_SET = "\$set";
const MONGO_PUSH = "\$push";
const MONGO_PULL = "\$pull";
const MONGO_EXISTS = "\$exists";
const MONGO_ELEMENT_MATCH = "\$elemMatch";
const MONGO_STRING_BACKGROUND = 'background';
const MONGO_STRING_UNIQUE = 'unique';
const MONGO_STRING_NAME = 'name';
const MONGO_STRING_PARTIAL_FE = 'partialFilterExpression';
const MONGO_STRING_EXPIRE_SEC = 'expireAfterSeconds';
const MONGO_STRING_CREATE_INDEX = 'createIndex';
const MONGO_STRING_COUNT = 'count';
const MONGO_STRING_QUERY = 'query';
const MONGO_STRING_ORDERED = 'ordered';
const MONGO_COLLECTION_NAME = 'collectionName';
const MONGO_START_DATE = 'startDate';
const MONGO_END_DATE = 'endDate';
// index types
const MONGO_INDEX_TYPE_SINGLE = 'single';
const MONGO_INDEX_TYPE_COMPOUND = 'compound';
const MONGO_INDEX_TYPE_MULTIKEY = 'multikey';
// PDO constants
const PDO_ID = 'id';
const PDO_EVENTS = 'pdoEvents';
const PDO_PROCEDURES = 'pdoProcedures';
const PDO_FUNCTIONS = 'pdoFunctions';
const PDO_VIEWS = 'pdoViews';
const PDO_SQL = 'sql';
const PDO_SQL_FC = 'firstCommit';
const PDO_SQL_UPDATE = 'pdoUpdateStatements';
const PDO_VERSION = 'version';
const PDO_TABLE = 'pdoTableName';
const PDO_TRIGGERS = 'pdoTriggers';
const PDO_DATA_DEFINITION = 'dataDefinition';
const PDO_AVG_ROW_LEN = 'ARL';
const PDO_RECORDS_PER_PAGE = 'recordsPerPage'; // number of records
const PDO_RP_PRIMARY = 'primary';
const PDO_RP_PRIMARY_PREFERRED = 'primaryPreferred';
const PDO_RP_SECONDARY = 'secondary';
const PDO_RP_SECONDARY_PREFERRED = 'secondaryPreferred';
const PDO_RP_NEAREST = 'nearest';
const PDO_BULK_INSERT_RESULTS = '%d records inserted, %d records dropped';
const PDO_UP_DELETE_RESULTS = '%d records %sd';
// PDO constants used in the templates and deployment scripts
const PDO_SQL_HEADER = 'SET FOREIGN_KEY_CHECKS=0;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
SET time_zone = "+00:00";
START TRANSACTION;';
const PDO_SQL_FOOTER = 'SET FOREIGN_KEY_CHECKS = 1;
COMMIT;';
const PDO_START_TRANSACTION = 'start transaction;';
const PDO_COMMIT = 'commit;';
const PDO_ROLLBACK = 'rollback;';
// PDO view constants
const PDO_VIEW_BASIC = 'view_basic_';
const PDO_VIEW_AUDIT = 'view_audit_';
// PDO Operators
const PDO_EQ = '=';
const PDO_NE = '!=';
const PDO_LT = '<';
const PDO_LTE = '<=';
const PDO_GT = '>';
const PDO_GTE = '>=';
const PDO_NS = '<=>';
const PDO_NIN = 'NOT IN';
const PDO_IN = 'IN';
const PDO_NULL = 'IS NULL';
const PDO_NOT_NULL = 'IS NOT NULL';
// mysql/mariadb constants
const MYSQL_EVENT_META = 'meta';
const MYSQL_AVG_ROW_LENGTH = 'AVG_ROW_LENGTH';
const MYSQL_MAX_DATA_RETURNED = 410000; // max payload size in bytes
const MYSQL_COLUMN_KEY = 'Key';
const MYSQL_COLUMN_FIELD = 'Field';
const MYSQL_COLUMN_TYPE = 'Type'; // do not change case - used for mysql system table
const MYSQL_INDEX_PRIMARY = 'PRI';
const MYSQL_INDEX_UNIQUE = 'UNI';
const MYSQL_ROWS_AFFECTED = 'rows affected: ';
const MYSQL_COLUMN_NAME = 'Column_name';
// Template Classes
const TEMPLATE_CLASS_LOGS = 'Logs';
const TEMPLATE_CLASS_METRICS = 'Metrics';
const TEMPLATE_CLASS_GRAPHS = 'Graphs';
const TEMPLATE_CLASS_TEST_MONGO = 'TestMongo';
const TEMPLATE_CLASS_DONORS = 'Donors';
const TEMPLATE_CLASS_TRANSACTIONS = 'Transactions';
const TEMPLATE_CLASS_SMAXAPI = 'SMAXAPI';
const TEMPLATE_CLASS_SESSIONS = 'Sessions';
const TEMPLATE_CLASS_SYS_EVENTS = 'SystemEvents';
const TEMPLATE_CLASS_SYS_DATA = 'SystemData';
const TEMPLATE_CLASS_TEST_PDO = 'TestPDO';
const TEMPLATE_CLASS_PRODUCT_REG = 'ProductRegistrations';
const TEMPLATE_CLASS_PROD_REGS = 'ProdRegistrations'; // mysql version of the mongo class above
const TEMPLATE_CLASS_PRODUCT_SES = 'ProductSessions';
const TEMPLATE_CLASS_PRODUCT_SES_USR = 'ProductSessionUsers';
const TEMPLATE_CLASS_MIGRATIONS = 'Migrations';
const TEMPLATE_CLASS_WAREHOUSE = 'Warehouse';
const TEMPLATE_CLASS_WHC1_PROD_REG = 'WHC1ProdRegistrations';
const TEMPLATE_CLASS_AUDIT = 'Audit';
const TEMPLATE_CLASS_JOURNAL = 'Journaling';
const TEMPLATE_CLASS_USERS = 'Users';
const TEMPLATE_CLASS_FAILED_SESSIONS = 'failedSessions';
const TEMPLATE_CLASS_WBL = 'WBList';
const TEMPLATE_CLASS_CSL = 'ConsolidatedSanctionsList';
// Warehouse Collection Name Definitions (COOL Storage)
const WH_COOL_MONGO_PRODUCT_REGISTRATIONS = 'gaCoolProductRegistrations';
const WH_COOL_PDO_PROD_REGS = 'gaCoolProductRegistrations';
// mongo logs collection
const COLLECTION_MONGO_LOGS = 'gaLogs';
const COLLECTION_MONGO_LOGS_EXT = '_log';
// mongo systemEvents collection
const COLLECTION_MONGO_SYS_EVENTS = 'gaSystemEvents';
const COLLECTION_MONGO_SYS_EVENTS_EXT = '_sev';
// mongo test collection
const COLLECTION_MONGO_TEST = 'gaTest';
const COLLECTION_MONGO_TEST_EXT = '_tst';
// mongo donors collection
const COLLECTION_MONGO_DONORS = 'gaDonors';
const COLLECTION_MONGO_DONORS_EXT = '_don';
// mongo transactions collection
const COLLECTION_MONGO_TRANSACTIONS = 'gaTransactions';
const COLLECTION_MONGO_TRANSACTIONS_EXT = '_tra';
// mongo SMAXAPI collection
const COLLECTION_MONGO_SMAXAPI = 'gaSMAXAPI';
const COLLECTION_MONGO_SMAXAPI_EXT = '_api';
// mongo system data collection
const COLLECTION_MONGO_SYS_DATA = 'gaSystemData';
const COLLECTION_MONGO_SYS_DATA_EXT = '_syd';
const VALID_STATES = 'validStates';
const VALID_STATUS = 'validStatus';
const ROW_ID = 'rowID';
const DATA_KEY = 'key';
const DATA_VALUE = 'value';
// mongo sessions collection
const COLLECTION_MONGO_SESSIONS = 'gaSessions';
const COLLECTION_MONGO_SESS_EXT = '_ses';
// mongo users collection
const COLLECTION_MONGO_USERS = 'gaUsers';
const COLLECTION_MONGO_USERS_EXT = '_usr';
// mongo consolidated sanctions list
const COLLECTION_MONGO_CSL = 'gaConsolidatedSanctionsList';
const COLLECTION_MONGO_CSL_EXT = '_csl';
// mongo failed events collection
const COLLECTION_MONGO_FAILED_SESSIONS = 'gaFailedSessions';
const COLLECTION_MONGO_FAILED_SESSIONS_EXT = '_fse';
// mongo white-black list collection
const COLLECTION_MONGO_WBLIST = 'gaWhiteBlackList';
const COLLECTION_MONGO_WBLIST_EXT = '_wbl';
// mongo consolidated sanctions list collection
const COLLECTION_MONGO_CSL_ADDRESS = 'address';
const COLLECTION_MONGO_CSL_ADDRESS1 = 'address1';
const COLLECTION_MONGO_CSL_ADDRESS2 = 'address2';
const COLLECTION_MONGO_CSL_ADDRESS3 = 'address3';
const COLLECTION_MONGO_CSL_ADDR_LIST = 'addressList';
const COLLECTION_MONGO_CSL_AKA = 'aka';
const COLLECTION_MONGO_CSL_AKA_LIST = 'akaList';
const COLLECTION_MONGO_CSL_CATEGORY = 'category';
const COLLECTION_MONGO_CSL_CITIZENSHIP = 'citizenship';
const COLLECTION_MONGO_CSL_CITIZENSHIP_LIST = 'citizenshipList';
const COLLECTION_MONGO_CSL_CITY = 'city';
const COLLECTION_MONGO_CSL_COUNTRY = 'country';
const COLLECTION_MONGO_CSL_DOB = 'dateOfBirth';
const COLLECTION_MONGO_CSL_DOB_ITEM = 'dateOfBirthItem';
const COLLECTION_MONGO_CSL_DOB_LIST = 'dateOfBirthList';
const COLLECTION_MONGO_CSL_FN = 'firstName';
const COLLECTION_MONGO_CSL_ID = 'id';
const COLLECTION_MONGO_CSL_ID_COUNTRY = 'idCountry';
const COLLECTION_MONGO_CSL_ID_LIST = 'idList';
const COLLECTION_MONGO_CSL_ID_NUMBER = 'idNumber';
const COLLECTION_MONGO_CSL_ID_TYPE = 'idType';
const COLLECTION_MONGO_CSL_LN = 'lastName';
const COLLECTION_MONGO_CSL_MAIN_ENTRY = 'mainEntry';
const COLLECTION_MONGO_CSL_POB = 'placeOfBirth';
const COLLECTION_MONGO_CSL_POB_ITEM = 'placeOfBirthItem';
const COLLECTION_MONGO_CSL_POB_LIST = 'placeOfBirthList';
const COLLECTION_MONGO_CSL_POSTAL_CODE = 'postalCode';
const COLLECTION_MONGO_CSL_PRG = 'program';
const COLLECTION_MONGO_CSL_PRG_LIST = 'programList';
const COLLECTION_MONGO_CSL_REMARKS = 'remarks';
const COLLECTION_MONGO_CSL_SDN_ENTRY = 'sdnEntry';
const COLLECTION_MONGO_CSL_SDN_TYPE = 'sdnType';
const COLLECTION_MONGO_CSL_SOP = 'stateOrProvince';
const COLLECTION_MONGO_CSL_TYPE = 'type';
const COLLECTION_MONGO_CSL_UID = 'uid';
// mongo product registration collection
const COLLECTION_MONGO_PROD_REGS = 'gaProductRegistrations';
const COLLECTION_MONGO_PROD_REG_EXT = '_prg';
const PRG_TYPE = 'type';
const PRG_IID = 'iid';
const PRG_EAV = 'eav';
const PRG_PLATFORM = 'platform';
const PRG_BROWSER = 'browser';
const PRG_MAJOR_VERSION = 'majorVersion';
const PRG_MINOR_VERSION = 'minorVersion';
const PRG_IS_MOBILE = 'isMobile';
const PRG_IS_TABLET = 'isTablet';
const PRG_FIRST_SEEN = 'firstSeen';
const PRG_LAST_SEEN = 'lastSeen';
// mongo audit collection
const COLLECTION_MONGO_AUDIT = 'gaAudit';
const COLLECTION_MONGO_AUDIT_EXT = '_aud';
const AUDIT_SYS_EV_GUID = 'systemEventGUID';
const AUDIT_SESSION_GUID = 'sessionGUID';
const AUDIT_SESSION_IP = 'sessionIP';
const AUDIT_USER_GUID = 'userGUID';
const AUDIT_JOURNAL_GUID = 'journalGUID';
const AUDIT_SERVICE = 'serviceName';
const AUDIT_SCHEMA = 'schema';
const AUDIT_DB = 'dbName';
const AUDIT_TEMPLATE = 'templateName';
const AUDIT_COLLECTION = 'tableName';
const AUDIT_COLLECTION_EXT = 'collectionExtension';
const AUDIT_RECORD_TOKEN = 'recordToken';
const AUDIT_SNAPSHOT = 'recordSnapShot';
const AUDIT_QUERY = 'query';
const AUDIT_ACCESS_CLIENT = 'accessClient';
const AUDIT_ACCESS_USER = 'accessUser';
const AUDIT_USER_ROLE = 'accessUserRole';
const AUDIT_OPERATION = 'operation';
const AUDIT_ACCESS_ALLOWED = 'accessAllowed';
// mongo journaling collection
const COLLECTION_MONGO_JOURNAL = 'gaJournal';
const COLLECTION_MONGO_JOURNAL_EXT = '_jnl';
const JOURNAL_SYSEV_TOK = 'systemEventGUID';
const JOURNAL_AUD_TOK = 'auditToken';
const JOURNAL_RECORD_GUID = 'recordGUID';
const JOURNAL_RESTORE_QUERY = 'restoreQuery';
const JOURNAL_HISTORY = 'journalHistory';
const JOURNAL_HISTORY_DATE_RESTORED = 'restoredOn';
const JOURNAL_HISTORY_RESTORED_EVENT_GUID = 'restorationEventGUID';
const JOURNAL_HISTORY_RESTORED_BY = 'restoredBy';
const JOURNAL_HISTORY_RESTORED_REASON = 'restoredReason';
// mysql product registrations table (for testing migrations)
const COLLECTION_PDO_PROD_REGS = 'gaProductRegistrations';
const COLLECTION_PDO_PROD_REGS_EXT = '_prg';
// mongo product sessions collection
const COLLECTION_MONGO_PROD_SESS = 'gaProductSessions';
const COLLECTION_MONGO_PROD_SESS_EXT = '_pse';
const PSE_IID = 'iid';
const PSE_SID = 'sid';
const PSE_IP = 'ip';
const PSE_FIRST_SEEN = 'firstSeen';
const PSE_LAST_SEEN = 'lastSeen';
// mongo product session users collection
const COLLECTION_MONGO_PSU = 'gaProductSessionUsers';
const COLLECTION_MONGO_PSU_EXT = '_psu';
const PSU_SID = 'sid';
const PSU_UID = 'uid';
const PSU_FIRST_SEEN = 'firstSeen';
const PSU_LAST_SEEN = 'lastSeen';
// mongo warehouse collection (internal table)
const COLLECTION_MONGO_WAREHOUSE = 'gaWarehouse';
const COLLECTION_MONGO_WAREHOUSE_EXT = '_whd';
// mongo migrations collection (internal table)
const COLLECTION_MONGO_MIGRATIONS = 'gaMigrations';
const COLLECTION_MONGO_MIGRATIONS_EXT = '_mig';
// mongo constants for both migrations and warehousing
const MWH_SOURCE_SCHEMA = 'sourceSchema';
const MWH_SOURCE_TABLE = 'sourceTable';
const MWH_DEST_SCHEMA = 'destinationSchema';
const MWH_DEST_TABLE = 'destinationTable';
const MWH_DATE_STARTED = 'dateStarted';
const MWH_NUM_RECS_SOURCE = 'numRecsInSource';
const MWH_NUM_RECS_IN_QUERY = 'numRecsInQuery';
const MWH_NUM_RECS_MOVED = 'numRecsMigrated';
const MWH_NUM_RECS_DROPPED = 'numRecsDropped';
const MWH_LAST_REC_WRITTEN = 'lastRecordWritten';
const MWH_DATE_COMPLETED = 'dateCompleted';
const MWH_STOP_REASON = 'reasonProcessingStopped';
const MWH_ERROR_CAT = 'processingErrors';
const MWH_QUERY = 'mwhQuery';
const MWH_QUERY_DATA = 'mwhQueryData';
const MWH_DELETE_TYPE = 'deleteSourceType';
const MWH_SOURCE_URI = 'sourceURI';
const MWH_REPORT = 'resultsReport';
// mysql test collection
const COLLECTION_PDO_TEST = 'gaTest';
const COLLECTION_MYSQL_TEST_SQK = 'myPDOTest';
const COLLECTION_PDO_TEST_EXT = '_tst';
// metrics collection
const COLLECTION_MONGO_METRICS = 'gaMetrics';
const COLLECTION_MONGO_METRICS_EXT = '_met';
// graphs collection
const COLLECTION_MONGO_GRAPHS = 'gaGraphs';
const COLLECTION_MONGO_GRAPHS_EXT = '_gra';
// DB constants - same for all schemas
const DB_PKEY = 'id';
const DB_HISTORY = 'history';
const DB_STATUS = 'status';
const DB_TOKEN = 'token';
const DB_WH_TOKEN = 'whToken';
const DB_WH_EVENT_GUID = 'whEventGuid';
const DB_WH_CREATED = 'whCreated';
const DB_TIMER = 'timer';
const DB_CREATED = 'createdDate';
const DB_ACCESSED = 'lastAccessedDate';
const DB_EVENT_GUID = 'eventGUID';
// Logs/Metrics columns
const LOG_FILE = 'file';
const LOG_METHOD = 'method';
const LOG_LINE = 'line';
const LOG_CLASS = 'class';
const LOG_LEVEL = 'level';
const LOG_VALUE = 'levelValue';
const LOG_MESSAGE = 'message';
const LOG_STACK_TRACE = 'stackTrace';
const LOG_TIMER = 'timer';
const LOG_MAX_LINES = 100;
const LOG_EVENT_GUID = 'eventGUID';
const LOG_EVENT = 'event';
const LOG_CREATED = 'created';
// Graphs constants
const GRAPH_KEY = 'key';
const GRAPH_VALUE = 'value';
const GRAPH_SCHEMA = 'schema';
const GRAPH_SERVICE = 'service';
const GRAPH_LOCATION = 'location';
const GRAPH_COMMENT = 'comment';
const GRAPH_LABEL = 'label';
const GRAPH_COLLECTION = 'collection';
const GRAPH_DBO = 'dbo';
const GRAPH_EVENT = 'event';
const GRAPH_BROKER = 'broker';
const GRAPH_TIMER = 'timer';
const GRAPH_DATE = 'date';
const GRAPH_FILE = 'file';
const GRAPH_METHOD = 'method';
const GRAPH_LINE = 'line';
// SystemEvents columns
const SYSTEM_EVENT_NAME = 'eventName';
const SYSTEM_EVENT_STATUS = 'eventStatus';
const SYSTEM_EVENT_TYPE = 'eventType';
const SYSTEM_EVENT_CLASS = 'eventClass';
const SYSTEM_EVENT_START = 'eventStart';
const SYSTEM_EVENT_END = 'eventEnd';
const SYSTEM_EVENT_PEAK = 'eventPeak';
const SYSTEM_EVENT_TIMER = 'eventTimer';
const SYSTEM_EVENT_AT_RESULTS = 'atJobData';
const SYSTEM_EVENT_DURATION = 'eventDuration';
const SYSTEM_EVENT_BROKER_EVENT = 'brokerEvent';
const SYSTEM_EVENT_BROKER_GUID = 'brokerGUID';
const SYSTEM_EVENT_COUNT = 'eventCount';
const SYSTEM_EVENT_COUNT_TOTAL = 'eventCountTotal';
const SYSTEM_EVENT_OGUID = 'originalGUID';
const SYSTEM_EVENT_FK_SESSION_GUID = 'idses';
const SYSTEM_EVENT_FK_USER_GUID = 'idusr';
const SYSTEM_EVENT_BROKER_ROOT_GUID = 'brokerRootGUID';
const SYSTEM_EVENT_NUM_EVENTS = 'numberEventsProcessed';
const SYSTEM_EVENT_CODE_LOC = 'eventCodeLocation';
const SYSTEM_EVENT_ERROR_STACK = 'eventErrorStack';
const SYSTEM_EVENT_META_DATA = 'eventMetaData';
const SYSTEM_EVENT_NOTES = 'eventNotes';
const SYSTEM_EVENT_KEY = 'eventKey';
const SYSTEM_EVENT_VAL = 'eventValue';
const SYSTEM_EVENT_DATA = 'sysEvData'; // used to piggyback sysEv data in an audit payload
// warehousing data template vars (consistent across schemas)
const WH_SUPPORTED = 'supported';
const WH_REMOTE_SUPPORT = 'remoteSupport';
const WH_AUTOMATED = 'automated';
const WH_DYNAMIC = 'dynamic';
const WH_INTERVAL = 'interval';
const WH_QUALIFIER = 'qualifier';
const WH_OVERRIDE = 'override';
const WH_DELETE = 'deleteState';
const WH_INDEXES = 'whIndexes';
const WH_TEMPLATE = 'whTemplate';
// donors fields/constants
const DONORS_TRANS_COUNT = 'transactionCount';
const DONORS_DTCC = 'donationsToCurrentCause';
CONST DONORS_TOTAL_DONATIONS = 'totalDonations';
const DONORS_SDWC = 'shareDataWithCause';
const DONORS_CID = 'idcau';
const DONORS_CAUSE_TITLE = 'causeTitle';
const DONORS_UNK_FOREIGN_ID = 'idxxx'; // todo - change this
// transactions fields/constants
const TRANSACTIONS_ORDER_ID = 'idord';
const TRANSACTIONS_TYPE = 'type';
const TRANSACTIONS_DESCRIPTION = 'description';
const TRANSACTIONS_AMOUNT = 'amount';
const TRANSACTIONS_EVENT_DATE = 'eventDate';
const TRANSACTIONS_START_DATE = 'startDate';
const TRANSACTIONS_END_DATE = 'endDate';
const TRANSACTIONS_META_DATA = 'metaData';
const TRANSACTIONS_MD_TRAVEL_END_DATE = 'travelEndDate';
const TRANSACTIONS_MD_PARTNER = 'partner';
const TRANSACTION_MD_PRODUCT_ID = 'idprd';
const TRANSACTIONS_MD_TRAVEL_START_DATE = 'travelStartDate';
const TRANSACTIONS_MD_CUSTOMER_ID = 'idcus';
const TRANSACTIONS_MD_OFFER_NUMBER = 'offerNum';
const TRANSACTIONS_MD_ENV = 'env';
const TRANSACTIONS_DEST_CITY_NAME = 'destCityName';
const TRANSACTIONS_DEST_STATE_CODE = 'destStateCode';
const TRANSACTIONS_DEST_COUNTRY_CODE = 'destCountryCode';
const TRANSACTIONS_DONOR_ID = 'iddon';
const TRANSACTIONS_CID = 'idxxx'; // todo - change this
const TRANSACTIONS_CAUSE_TITLE = 'causeTitle';
// SMAX API fields
const SMAX_COMPANY_NAME = 'companyName';
const SMAX_COMPANY_CONTACT_INFO = 'companyContactInfo';
const SMAX_COMPANY_CONTACT_INFO_ADDRESS1 = 'companyAddress1';
const SMAX_COMPANY_CONTACT_INFO_ADDRESS2 = 'companyAddress2';
const SMAX_COMPANY_CONTACT_INFO_CITY = 'companyCity';
const SMAX_COMPANY_CONTACT_INFO_STATE = 'companyState';
const SMAX_COMPANY_CONTACT_INFO_ZIP = 'companyZIP';
const SMAX_COMPANY_PHONES = 'companyPhones';
const SMAX_COMPANY_PHONES_VOICE = 'companyPhonesVoice';
const SMAX_COMPANY_PHONES_FAX = 'companyPhonesFax';
const SMAX_COMPANY_CONTACTS = 'companyContacts';
const SMAX_COMPANY_CONTACTS_EMPLOYEE_NAME = 'employeeName';
const SMAX_COMPANY_CONTACTS_EMPLOYEE_EMAIL = 'employeeEmail';
const SMAX_COMPANY_CONTACTS_EMPLOYEE_PHONE_VOICE = 'employeePhoneVoice';
const SMAX_COMPANY_CONTACTS_EMPLOYEE_PHONE_FAX = 'employeePhoneFax';
const SMAX_COMPANY_REGISTERED = 'dateRegistered';
const SMAX_COMPANY_LICENSE_DURATION = 'licenseDuration';
const SMAX_COMPANY_AUTHORIZED_BY = 'authorizedBy';
const SMAX_COMPANY_INTERNAL_NOTES = 'internalNotes';
const SMAX_LICENSE_TYPE = 'licenseType';
const SMAX_TLTI = 'tlti'; // two letter template identifier
// API license types
const SMAX_API_LICENSE_TYPE_PAID = 'PAID';
const SMAX_API_LICENSE_TYPE_EVAL = 'EVAL';
const SMAX_API_LICENSE_TYPE_BETA = 'BETA'; // includes alpha
const SMAX_API_LICENSE_TYPE_PART = 'PARTNER';
const SMAX_API_LICENSE_TYPE_TEST = 'TEST'; // for internal testing/development
// session fields/constants
const SESSION_EXPIRES = 'sessionExpires';
const SESSION_CLOSED = 'sessionClosed';
const SESSION_DURATION = 'sessionDuration';
const SESSION_CUSTOM_FIELD = 'sessionCustomField';
const SESSION_CUSTOM_VALUE = 'sessionCustomValue';
const SESSION_FK_USER = 'idusr';
const SESSION_LEVEL = 'sessionLevel';
const SESSION_CREATED_WITH = 'createdWith';
const SESSION_ACTION = 'action';
const SESSION_AUTH_PROVIDER = 'authProvider';
// users fields/constants
const USER_ACCOUNT_SSO = 'accountSSO';
const USER_AUTH_DATA = 'authData';
const USER_EMAIL_VERIFIED = 'emailVerified';
const USER_FBID = 'fbid';
const USER_VERIFIED_HUMAN = 'humanVerified';
const USER_MEMBERSHIP_PLAN = 'membershipPlan';
const USER_NOTES = 'notes';
const USER_PASSWORD = 'password';
const USER_PASSWORD_UPDATED = 'passwordLastUpdated';
const USER_PASSWORD_LAST_THREE = 'lastThreePasswords';
const USER_PARTNER_API_KEY = 'partnerAPIKey';
const USER_PROMO_SIGN_UP_ID = 'promoSignUpId';
const USER_TEMP_PASSWORD = 'tempPassword';
const USER_TZ = 'timezone';
const USER_LEAP_CONVERTED = 'userLeapConverted';
const USER_USERNAME = 'username';
const USER_SECONDARY_EMAIL = 'secondaryEmail';
const USER_WEBHOOK_RETRIES = 'webhookRetries';
const USER_TYPE = 'userType';
const USER_FINANCIALS = 'userFinancials'; // sub-collection heading
const USER_FINANCIALS_TOTAL_DONATIONS = 'totalDonations';
const USER_FINANCIALS_TOTAL_EARNINGS = 'totalEarnings';
const USER_FINANCIALS_CASHBACK_BANK = 'cashbackBank';
const USER_FINANCIALS_CASHBACK_DONATION = 'cashbackDonations';
const USER_FINANCIALS_CURRENT_BALANCE = 'currentBalance';
const USER_FINANCIALS_EARNING_TIER = 'earningTier';
const USER_FINANCIALS_PAYMENTS = 'Payments'; // sub-collection heading
const USER_FINANCIALS_PAYMENTS_ADDRESS1 = 'paymentAddress1';
const USER_FINANCIALS_PAYMENTS_ADDRESS2 = 'paymentsAddress2';
const USER_FINANCIALS_PAYMENTS_CITY = 'paymentCity';
const USER_FINANCIALS_PAYMENTS_COUNTRY = 'paymentCountry';
const USER_FINANCIALS_PAYMENTS_FULL_NAME = 'paymentFullName';
const USER_FINANCIALS_PAYMENTS_PLAN = 'paymentPlan';
const USER_FINANCIALS_PAYMENTS_STATE = 'paymentState';
const USER_FINANCIALS_PAYMENTS_STATUS = 'paymentStatus';
const USER_FINANCIALS_PAYMENTS_ZIP = 'paymentsZip';
const USER_FINANCIALS_PAYMENTS_VERIFIED = 'paymentVerified';
const USER_FINANCIALS_PAYMENTS_META = 'paymentMeta';
const USER_FINANCIALS_PAYMENTS_TYPE = 'paymentType';
const USER_FINANCIALS_PENDING_BALANCE = 'pendingBalance';
const USER_FINANCIALS_CUSTOMER_ID = 'customerId';
const USER_FINANCIALS_STRIPE_RECIPIENT_VERIFIED = 'stripeRecipientVerified';
const USER_FINANCIALS_TIN_FINGERPRINT = 'tinFingerprint';
const USER_FINANCIALS_TIN_TYPE = 'tinType';
const USER_SPORTS = 'sports'; // sub-collection heading
const USER_SPORTS_FAV_ATHLETES = 'favoriteAthletes';
const USER_SPORTS_FAV_TEAMS = 'favoriteTeams';
const USER_SPORTS_FAV_SPORTS = 'favoriteSports';
const USER_CHARITIES = 'charities'; // sub-collection heading
const USER_CHARITIES_SELECTED_CAMPAIGN = 'selectedCampaign';
const USER_CHARITIES_SELECTED_CAMPAIGN_META = 'selectedMeta';
const USER_CHARITIES_SELECTED_CAMPAIGN_TITLE = 'selectedTitle';
const USER_REFERRALS = 'referrals'; // sub-collection heading
const USER_REFERRALS_EARNINGS = 'earnings';
const USER_REFERRALS_CLICKS = 'clicks';
const USER_REFERRALS_EARNINGS_PENDING = 'earningsPending';
const USER_REFERRALS_SIGNUPS = 'signups';
const USER_REFERRALS_RID = 'rid';
const USER_PII = 'personalInformation'; // sub-collection heading
const USER_PII_ADDRESS = 'address';
const USER_PII_AGE_RANGE = 'ageRange'; // should be derived from the next field
const USER_PII_BIRTHDAY = 'dob';
const USER_PII_COUNTRY_CODE = 'countryCode';
const USER_PII_EMAIL = 'email';
const USER_PII_SECONDARY_EMAIL = 'altEmail';
const USER_PII_FNAME = 'firstName';
const USER_PII_GENDER = 'gender';
const USER_PII_HOMETOWN = 'homeTown';
const USER_PII_LANGUAGES = 'languages';
const USER_PII_LNAME = 'lastName';
const USER_PII_LEGAL_NAME = 'legalName';
const USER_PII_LOCALE = 'locale';
const USER_PII_LOCATION = 'location';