$darkmode
Qore DataProvider Module Reference 2.7.5
AbstractDataProvider.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
3 
27 namespace DataProvider {
33 const UpsertResultInserted = "inserted";
34 
36 const UpsertResultUpdated = "updated";
37 
39 const UpsertResultVerified = "verified";
40 
42 const UpsertResultUnchanged = "unchanged";
43 
45 const UpsertResultDeleted = "deleted";
47 
49 public struct AllowedValueInfo {
51  auto value;
52 
54  string desc;
55 };
56 
58 public struct DataProviderOptionInfo {
60  softlist<AbstractDataProviderType> type;
61 
63  bool required = False;
64 
66  string desc;
67 
70 
72  bool sensitive = False;
73 
75  *softlist<hash<AllowedValueInfo>> allowed_values;
76 };
77 
79 public struct DataProviderSummaryInfo {
81  string name;
82 
84  string desc;
85 
87  string type;
88 
91 
94 
97 
100 
103 
106 
108 
112 
114 
118 
120 
124 
127 
130 
133 
136 
139 
141 
145 
147 
155 
157 
160 
162 
165 
167 
170 
172 
175 
177 
180 };
181 
183 public struct DataProviderMessageInfo {
185 
187  string desc;
188 
191 };
192 
202 
204 const MSG_None = "NONE";
205 
207 
211 const MSG_Sync = "SYNC";
212 
214 
216 const MSG_Async = "ASYNC";
218 
225 const ST_Any = 1;
226 
228 const ST_Value = 2;
229 
231 
234 const ST_Field = 3;
236 
239  ST_Any: "any",
240  ST_Value: "value",
241  ST_Field: "field reference",
242 };
243 
245 const SignatureTypeDescMap = map {$1.value: $1.key.toInt()}, SignatureTypeCodeMap.pairIterator();
246 
253 const ER_Search = (1 << 0);
254 
256 const ER_Field = (1 << 1);
257 
261 
263 const RoleCodeMap = {
264  ER_Search: "search",
265 };
266 
268 const RoleDescMap = map {$1.value: $1.key.toInt()}, RoleCodeMap.pairIterator();
269 
276 const LC_And = (1 << 0);
277 
279 const LC_Or = (1 << 1);
280 
282 const LC_All = (LC_And | LC_Or);
284 
286 const LogicCodeMap = {
287  LC_And: "AND",
288  LC_Or: "OR",
289 };
290 
292 const LogicDescMap = map {$1.value: $1.key.toInt()}, LogicCodeMap.pairIterator();
293 
298 
301 };
302 
305  "type": AbstractDataProviderTypeMap."any",
306  "type_code": ST_Field,
307 };
308 
311  "type": AbstractDataProviderTypeMap."any",
312  "type_code": ST_Any,
313 };
314 
317  "type": AbstractDataProviderTypeMap."string",
318  "type_code": ST_Value,
319 };
320 
323  "type": AbstractDataProviderTypeMap."*string",
324  "type_code": ST_Value,
325 };
326 
329  "type": AbstractDataProviderTypeMap."int",
330  "type_code": ST_Value,
331 };
332 
335  "type": AbstractDataProviderTypeMap."*int",
336  "type_code": ST_Value,
337 };
338 
341  "type": AbstractDataProviderTypeMap."list",
342  "type_code": ST_Value,
343 };
344 
347  "type": AbstractDataProviderTypeMap."hash",
348  "type_code": ST_Value,
349 };
350 
353  "type": AbstractDataProviderTypeMap."bool",
354  "type_code": ST_Any,
355 };
356 
359  "type": AbstractDataProviderTypeMap."string",
360  "type_code": ST_Any,
361 };
362 
365  "type": AbstractDataProviderTypeMap."date",
366  "type_code": ST_Any,
367 };
368 
375 const DET_Operator = 1;
376 
378 const DET_Function = 2;
380 
383  DET_Operator: "operator",
384  DET_Function: "function",
385 };
386 
388 const ExpressionTypeDescMap = map {$1.value: $1.key.toInt()}, ExpressionTypeCodeMap.pairIterator();
389 
393  int type;
394 
396 
398  string label;
399 
401  string name;
402 
404  string desc;
405 
407  string symbol;
408 
410 
412  int role = ER_All;
413 
415  softlist<hash<DataProviderSignatureTypeInfo>> args;
416 
419 
421  bool varargs = False;
422 };
423 
427  string field;
428 };
429 
431 public struct DataProviderExpression {
433  string exp;
434 
436 
439  softlist<auto> args;
440 };
441 
443 public struct DataProviderInfo {
445 
447  string name;
448 
450 
452  string type;
453 
455 
458 
460 
463 
465 
468 
470 
473 
475 
478 
480 
483 
485 
491 
493 
499 
501 
507 
509 
512 
514 
517 
519 
522 
524 
527 
529 
532 
534 
539 
541 
546 
548 
553 
555 
560 
562 
567 
569 
574 
576 
581 
583 
588 
590 
598 
600 
603 
605 
608 
610 
613 
615 
618 
620 
623 
625 
628  *string schema_type;
629 
631 
633  *hash<string, hash<DataProviderOptionInfo>> constructor_options;
634 
636 
638  *hash<string, hash<DataProviderOptionInfo>> create_options;
639 
641 
643  *hash<string, hash<DataProviderOptionInfo>> upsert_options;
644 
646 
648  *hash<string, hash<DataProviderOptionInfo>> search_options;
649 
651 
653  *hash<string, hash<DataProviderOptionInfo>> request_options;
654 
656 
660  *hash<string, hash<DataProviderOptionInfo>> child_create_options;
661 
663 
667  *hash<string, hash<DataProviderOptionInfo>> child_delete_options;
668 
670 
674  *hash<string, hash<DataProviderOptionInfo>> add_field_options;
675 
677 
681  *hash<string, hash<DataProviderOptionInfo>> update_field_options;
682 
684 
688  *hash<string, hash<DataProviderOptionInfo>> delete_field_options;
689 
691 
695  *hash<string, hash<DataProviderOptionInfo>> send_message_options;
696 
698 
702  *hash<string, hash<DataProviderExpressionInfo>> expressions;
703 
705 
709  *hash<string, hash<DataProviderMessageInfo>> events;
710 
712 
716  *hash<string, hash<DataProviderMessageInfo>> messages;
717 
719 
722 
724 
728  hash<string, hash<MapperRuntimeKeyInfo>> mapper_keys = Mapper::MapperKeyInfo;
729 
731 
733  *string desc;
734 
736 
738  *list<string> children;
739 };
740 
742 class AbstractDataProvider : public Logger::LoggerWrapper {
743 
744 public:
747  DP_OP_AND: {
749  "type": DET_Operator,
750  "label": DP_OP_AND,
751  "name": "and (&&)",
752  "desc": "logical AND operation supporting logic short-circuiting",
753  "symbol": "&&",
755  "varargs": True,
756  "return_type": AbstractDataProviderTypeMap."bool",
757  },
758  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
759  foreach auto arg in (exp.args) {
761  return False;
762  }
763  }
764  return True;
765  },
766  },
767  DP_OP_OR: {
769  "type": DET_Operator,
770  "label": DP_OP_OR,
771  "name": "or (||)",
772  "desc": "logical OR operation supporting logic short-circuiting",
773  "symbol": "||",
775  "varargs": True,
776  "return_type": AbstractDataProviderTypeMap."bool",
777  },
778  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
779  foreach auto arg in (exp.args) {
781  return True;
782  }
783  }
784  return False;
785  },
786  },
787  DP_SEARCH_OP_EQ: {
789  "type": DET_Operator,
790  "label": DP_SEARCH_OP_EQ,
791  "name": "equals (=)",
792  "desc": "a value for equality comparisons; the type of the value should correspond to the field "
793  "type",
794  "symbol": "==",
796  "return_type": AbstractDataProviderTypeMap."bool",
797  },
798  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
799  auto arg0 = AbstractDataProvider::evalGenericExpressionValue(rec, exp.args[0]);
800  auto arg1 = AbstractDataProvider::evalGenericExpressionValue(rec, exp.args[1]);
801  // for backwards compatibility, if the first argument is a field reference, and the second is a
802  # hash
803 
804  return arg0 == arg1;
805  },
806  },
807  DP_SEARCH_OP_NE: {
809  "type": DET_Operator,
810  "label": DP_SEARCH_OP_NE,
811  "name": "not equals (!=)",
812  "desc": "a value for not-equals comparisons; the type of the value should correspond to the "
813  "field type",
814  "symbol": "!=",
816  "return_type": AbstractDataProviderTypeMap."bool",
817  },
818  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
821  },
822  },
823  DP_SEARCH_OP_LT: {
825  "type": DET_Operator,
826  "label": DP_SEARCH_OP_LT,
827  "name": "less than (<)",
828  "desc": "a value for less than comparisons; if the field value is less than the argument, then "
829  "the operation returns true; the type of the value should correspond to the field type",
830  "symbol": "<",
832  "return_type": AbstractDataProviderTypeMap."bool",
833  },
834  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
837  },
838  },
839  DP_SEARCH_OP_LE: {
841  "type": DET_Operator,
842  "label": DP_SEARCH_OP_LE,
843  "name": "less than or equals (<=)",
844  "desc": "a value for less than or equals comparisons; if the field value is less than or equal "
845  "to the argument, then the operation returns true; the type of the value should correspond "
846  "to the field type",
847  "symbol": "<=",
849  "return_type": AbstractDataProviderTypeMap."bool",
850  },
851  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
854  },
855  },
856  DP_SEARCH_OP_GT: {
858  "type": DET_Operator,
859  "label": DP_SEARCH_OP_GT,
860  "name": "greater than (>)",
861  "desc": "a value for less than comparisons; if the field value is less than the argument, then "
862  "the operation returns true; the type of the value should correspond to the field type",
863  "symbol": ">",
865  "return_type": AbstractDataProviderTypeMap."bool",
866  },
867  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
870  },
871  },
872  DP_SEARCH_OP_GE: {
874  "type": DET_Operator,
875  "label": DP_SEARCH_OP_GE,
876  "name": "greater than or equals (>=)",
877  "desc": "a value for greater than or equals comparisons; if the field value is greater than or "
878  "equal to the argument, then the operation returns true; the type of the value should "
879  "correspond to the field type",
880  "symbol": ">=",
882  "return_type": AbstractDataProviderTypeMap."bool",
883  },
884  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
887  },
888  },
891  "type": DET_Operator,
892  "label": DP_SEARCH_OP_BETWEEN,
893  "name": "between",
894  "desc": "A list with two elements giving the lower and upper bounds of the field value; the list "
895  "element value types must be equal to the field's type",
896  "symbol": "between",
897  "args": (
901  ),
902  "return_type": AbstractDataProviderTypeMap."bool",
903  },
904  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
905  auto arg0 = AbstractDataProvider::evalGenericExpressionValue(rec, exp.args[0]);
906  return arg0 > AbstractDataProvider::evalGenericExpressionValue(rec, exp.args[1])
908  },
909  },
910  DP_SEARCH_OP_IN: {
912  "type": DET_Operator,
913  "label": DP_SEARCH_OP_IN,
914  "name": "in",
915  "desc": "A list giving possible values of the field; if the field's value matches any of the "
916  "values in the list, then the operation returns true; element value types must be equal to "
917  "the field's type",
918  "symbol": "in",
920  "return_type": AbstractDataProviderTypeMap."bool",
921  "varargs": True,
922  },
923  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
926  },
927  },
930  "type": DET_Operator,
931  "label": DP_SEARCH_OP_NOT,
932  "name": "logical not (!)",
933  "desc": "This operator reverses the logcal value of the operator expression given as an argument",
934  "symbol": "!",
936  "return_type": AbstractDataProviderTypeMap."bool",
937  },
938  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
940  },
941  },
944  "type": DET_Operator,
945  "label": DP_SEARCH_OP_REGEX,
946  "name": "regular expression match",
947  "desc": "regular expression operator; the first argument will be processed with the second as a "
948  "regular expression pattern",
949  "symbol": "regex",
950  "args": (
953  "type": (new HashDataType())
954  .addField(new QoreDataField("pattern", "the regular expression pattern",
955  AbstractDataProviderTypeMap."string"))
956  .addField(new QoreDataField("options", "regular expression options",
958  },
959  ),
960  "return_type": AbstractDataProviderTypeMap."bool",
961  },
962  "impl": auto sub (hash<auto> rec, hash<DataProviderExpression> exp) {
963  auto arg1 = AbstractDataProvider::evalGenericExpressionValue(rec, exp.args[1]);
964  return regex(AbstractDataProvider::evalGenericExpressionValue(rec, exp.args[0]).toString(),
965  arg1.pattern, arg1.options);
966  },
967  },
968  };
969 
971 
976  const GenericExpressions = map {$1.key: $1.value.exp}, GenericExpressionImplementations.pairIterator();
977 
979  const DataProviderSummaryInfoKeys = map $1.getName(), TypedHash::forName("DataProviderSummaryInfo").getMembers();
980 
981 protected:
983  static bool callbacks_locked = False;
984 
987 
989  static code cb_resolve_value;
990 
992 
998  "columns": <DataProviderOptionInfo>{
999  "type": AbstractDataProviderTypeMap."any",
1000  "desc": "allows a subset of fields to be output in searches",
1001  },
1002  "limit": <DataProviderOptionInfo>{
1003  "type": AbstractDataProviderType::get(IntType),
1004  "desc": "the maximum number of records to return",
1005  },
1006  "offset": <DataProviderOptionInfo>{
1007  "type": AbstractDataProviderType::get(IntType),
1008  "desc": "the offset number in records to return",
1009  },
1010  };
1011 
1012 public:
1013 
1016 
1017 
1019  constructor(LoggerInterface logger) ;
1020 
1021 
1023 
1027  hash<auto> getInfoAsData(*bool with_type_info);
1028 
1029 
1031  hash<DataProviderInfo> getInfo();
1032 
1033 
1035  hash<DataProviderSummaryInfo> getSummaryInfo();
1036 
1037 
1039  *string getDesc();
1040 
1041 
1043 
1053  *hash<auto> createRecord(hash<auto> rec, *hash<auto> create_options);
1054 
1055 
1057 
1064  string upsertRecord(hash<auto> rec, *hash<auto> upsert_options);
1065 
1066 
1068 
1075  *hash<auto> searchFirstRecord(hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1076 
1077 
1079 
1084  *hash<auto> searchFirstRecord(hash<auto> where_cond, *hash<auto> search_options);
1085 
1086 
1088 
1096  *hash<auto> searchSingleRecord(hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1097 
1098 
1100 
1106  *hash<auto> searchSingleRecord(hash<auto> where_cond, *hash<auto> search_options);
1107 
1108 
1110 
1115 
1116 
1118 
1126  AbstractDataProviderBulkRecordInterface getBulkRecordInterface(int block_size = 1000, *hash<auto> search_options);
1127 
1128 
1130 
1141  AbstractDataProviderBulkRecordInterface searchRecordsBulk(int block_size = 1000, *hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1142 
1143 
1145 
1154  AbstractDataProviderBulkRecordInterface searchRecordsBulk(int block_size = 1000, *hash<auto> where_cond, *hash<auto> search_options);
1155 
1156 
1158 
1165  AbstractDataProviderRecordIterator searchRecords(*hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1166 
1167 
1169 
1174  AbstractDataProviderRecordIterator searchRecords(*hash<auto> where_cond, *hash<auto> search_options);
1175 
1176 
1178 
1188  AbstractDataProviderRecordIterator requestSearchRecords(auto req, *hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1189 
1190 
1192 
1200  AbstractDataProviderRecordIterator requestSearchRecords(auto req, *hash<auto> where_cond, *hash<auto> search_options);
1201 
1202 
1204 
1215  bool updateSingleRecord(hash<auto> set, hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1216 
1217 
1219 
1228  bool updateSingleRecord(hash<auto> set, hash<auto> where_cond, *hash<auto> search_options);
1229 
1230 
1232 
1244  int updateRecords(hash<auto> set, *hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1245 
1246 
1248 
1258  int updateRecords(hash<auto> set, *hash<auto> where_cond, *hash<auto> search_options);
1259 
1260 
1262 
1274  int deleteRecords(*hash<DataProviderExpression> where_cond, *hash<auto> search_options);
1275 
1276 
1278 
1288  int deleteRecords(*hash<auto> where_cond, *hash<auto> search_options);
1289 
1290 
1292 
1300  auto doRequest(auto req, *hash<auto> request_options);
1301 
1302 
1304 
1315  AbstractDataProvider createChildProvider(string name, hash<string, AbstractDataField> fields, *hash<auto> child_create_options);
1316 
1317 
1319 
1327  deleteChildProvider(string name, *hash<auto> child_delete_options);
1328 
1329 
1331 
1340  addField(AbstractDataField field, *hash<auto> field_add_options);
1341 
1342 
1344 
1353  updateField(string name, AbstractDataField field, *hash<auto> field_update_options);
1354 
1355 
1357 
1365  deleteField(string name, *hash<auto> field_delete_options);
1366 
1367 
1369 
1380  sendMessage(string message_id, auto msg, *hash<auto> send_message_options);
1381 
1382 
1384 
1391 
1392 
1394 
1399 
1400 
1402 
1407 
1408 
1410 
1414  *hash<string, AbstractDataProviderType> getErrorResponseTypes();
1415 
1416 
1418 
1426 
1427 
1429 
1438  hash<DataProviderMessageInfo> getEventInfo(string event_id);
1439 
1440 
1442 
1448  hash<string, hash<DataProviderMessageInfo>> getEventTypes();
1449 
1450 
1452 
1461  hash<DataProviderMessageInfo> getMessageInfo(string message_id);
1462 
1463 
1465 
1471  hash<string, hash<DataProviderMessageInfo>> getMessageTypes();
1472 
1473 
1475 
1478  *list<hash<DataProviderSummaryInfo>> getChildProviderSummaryInfo();
1479 
1480 
1482 
1484  *list<string> getChildProviderNames();
1485 
1486 
1488 
1495 
1496 
1498 
1505 
1506 
1508 
1517 
1518 
1520 
1524 
1525 
1527 
1536 
1537 
1539 
1546 
1547 
1549 
1556 
1557 
1559 
1564 
1565 
1567 
1572 
1573 
1575 
1579  *hash<string, hash<MapperRuntimeKeyInfo>> getMapperRuntimeKeys();
1580 
1581 
1583 
1587 
1588 
1590 
1594 
1595 
1597 
1601 
1602 
1604 
1608 
1609 
1611 
1615 
1616 
1618 
1622 
1623 
1625 
1631 
1632 
1634 
1640 
1641 
1643 
1649 
1650 
1652 
1658 
1659 
1661 
1667 
1668 
1670 
1676 
1677 
1679 
1685 
1686 
1688 
1694 
1695 
1697 
1703 
1704 
1706 
1714  *hash<auto> getSearchExpression(*hash<auto> where_cond, *hash<auto> search_options);
1715 
1716 
1718 
1721 protected:
1722  hash<DataProviderExpression> getSimpleArgumentIntern(int role, hash<DataProviderInfo> info, hash<DataProviderExpressionInfo> expinfo, string key, auto value);
1723 public:
1724 
1725 
1727 
1732 protected:
1733  hash<DataProviderExpression> getEqualityComparisonExpression(int role, hash<DataProviderInfo> info, string key, auto value);
1734 public:
1735 
1736 
1738 
1741 protected:
1742  static hash<DataProviderExpressionInfo> getExpression(int role, string exp, *hash<string, hash<DataProviderExpressionInfo>> expmap);
1743 public:
1744 
1745 
1747 
1752 
1754 
1757  static auto evalGenericExpressionValue(hash<auto> rec, auto val);
1758  return rv;
1759  };
1760  if (val instanceof hash<DataProviderExpression>);
1761 
1762  return val;
1763  };
1764 
1766 
1769  static auto evalGenericExpression(hash<auto> rec, hash<DataProviderExpression> exp);
1770 
1772 
1782  static bool setDynamicValueCallbacks(code value_needs_resolution, code resolve_value);
1783 
1785 
1793  static verifyExpression(int role, *hash<string, hash<DataProviderExpressionInfo>> expmap, int caps, AbstractDataProviderType expected_type, hash<DataProviderExpression> exp);
1794 
1796 
1804  static verifyExpression(int role, hash<DataProviderExpressionInfo> expinfo, int caps, AbstractDataProviderType expected_type, hash<DataProviderExpression> exp);
1805 
1807 
1813  static verifyExpressionArgValue(int role, int caps, hash<DataProviderExpressionInfo> expinfo, softlist<auto> values, int pos);
1814 
1816 protected:
1817  static bool checkCallbacks();
1818 public:
1819 
1820 
1822 
1824 protected:
1825  *hash<auto> validateCreateOptions(*hash<auto> create_options);
1826 public:
1827 
1828 
1830 
1832 protected:
1833  *hash<auto> validateUpsertOptions(*hash<auto> upsert_options);
1834 public:
1835 
1836 
1838 
1840 protected:
1841  *hash<auto> validateSearchOptions(*hash<auto> search_options);
1842 public:
1843 
1844 
1846 
1848 protected:
1849  *hash<auto> validateRequestOptions(*hash<auto> request_options);
1850 public:
1851 
1852 
1854 
1858 protected:
1859  *hash<auto> validateChildCreateOptions(*hash<auto> child_create_options);
1860 public:
1861 
1862 
1864 
1868 protected:
1869  *hash<auto> validateChildDeleteOptions(*hash<auto> child_delete_options);
1870 public:
1871 
1872 
1874 
1878 protected:
1879  *hash<auto> validateFieldAddOptions(*hash<auto> field_add_options);
1880 public:
1881 
1882 
1884 
1888 protected:
1889  *hash<auto> validateFieldUpdateOptions(*hash<auto> field_update_options);
1890 public:
1891 
1892 
1894 
1898 protected:
1899  *hash<auto> validateFieldDeleteOptions(*hash<auto> field_delete_options);
1900 public:
1901 
1902 
1904 
1908 protected:
1909  *hash<auto> validateSendMessageOptions(*hash<auto> send_message_options);
1910 public:
1911 
1912 
1914 protected:
1915  processConstructorOptions(*hash<string, hash<DataProviderOptionInfo>> option_desc, *hash<auto> options);
1916 public:
1917 
1918 
1920 protected:
1921  *hash<auto> checkOptions(string err, *hash<string, hash<DataProviderOptionInfo>> option_desc, *hash<auto> uoptions);
1922 public:
1923 
1924 
1926 
1931 protected:
1932  *hash<DataProviderExpression> processSearchParameters(*hash<DataProviderExpression> exp, *hash<auto> search_options);
1933 public:
1934 
1935 
1937 
1944 protected:
1945  *hash<auto> processFieldValues(*hash<auto> h, *hash<auto> search_options);
1946 public:
1947 
1948 
1950 protected:
1951  error(string err, string fmt);
1952 public:
1953 
1954 
1956 
1961 protected:
1962  *hash<auto> searchFirstRecordImpl(hash<auto> where_cond, *hash<auto> search_options);
1963 public:
1964 
1965 
1967 
1974 protected:
1975  *hash<auto> searchSingleRecordImpl(hash<auto> where_cond, *hash<auto> search_options);
1976 public:
1977 
1978 
1980 
1984 protected:
1985  *list<string> getChildProviderNamesImpl();
1986 public:
1987 
1988 
1990 
1992 protected:
1993  *AbstractDataProvider getChildProviderImpl(string name);
1994 public:
1995 
1996 
1998 
2004  *hash<string, AbstractDataField> getRecordType(*hash<auto> search_options);
2005 
2006 
2008  *hash<string, AbstractDataField> getSoftRecordType(*hash<auto> search_options);
2009 
2010 
2012  *hash<string, AbstractDataField> getOrNothingRecordType(*hash<auto> search_options);
2013 
2014 
2016 
2019  *hash<string, hash<DataProviderOptionInfo>> getSearchOptions();
2020 
2021 
2023 
2026  *hash<string, hash<DataProviderOptionInfo>> getCreateOptions();
2027 
2028 
2030 
2033  *hash<string, hash<DataProviderOptionInfo>> getUpsertOptions();
2034 
2035 
2037 
2040  *hash<string, hash<DataProviderOptionInfo>> getRequestOptions();
2041 
2042 
2044 
2050  *hash<string, hash<DataProviderOptionInfo>> getChildCreateOptions();
2051 
2052 
2054 
2060  *hash<string, hash<DataProviderOptionInfo>> getChildDeleteOptions();
2061 
2062 
2064 
2070  *hash<string, hash<DataProviderOptionInfo>> getFieldAddOptions();
2071 
2072 
2074 
2080  *hash<string, hash<DataProviderOptionInfo>> getFieldUpdateOptions();
2081 
2082 
2084 
2090  *hash<string, hash<DataProviderOptionInfo>> getFieldDeleteOptions();
2091 
2092 
2094 
2100  *hash<string, hash<DataProviderOptionInfo>> getSendMessageOptions();
2101 
2102 
2104 
2106  string getMessageSupport();
2107 
2108 
2110 
2112  bool supportsRead();
2113 
2114 
2116 
2118  bool supportsBulkRead();
2119 
2120 
2122 
2124  bool supportsCreate();
2125 
2126 
2128 
2130  bool supportsUpdate();
2131 
2132 
2134 
2136  bool supportsUpsert();
2137 
2138 
2140 
2142  bool supportsDelete();
2143 
2144 
2146 
2148  bool supportsNativeSearch();
2149 
2150 
2152 
2154  bool supportsBulkCreate();
2155 
2156 
2158 
2160  bool supportsBulkUpsert();
2161 
2162 
2164 
2166  bool supportsRequest();
2167 
2168 
2170 
2172  bool recordRequiresSearchOptions();
2173 
2174 
2176 
2178  bool hasRecord();
2179 
2180 
2182 
2184  bool supportsCreateChild();
2185 
2186 
2188 
2190  bool supportsDeleteChild();
2191 
2192 
2194 
2196  bool supportsAddField();
2197 
2198 
2200 
2202  bool supportsUpdateField();
2203 
2204 
2206 
2208  bool supportsDeleteField();
2209 
2210 
2212 
2214  bool supportsSchema();
2215 
2216 
2218 
2220  bool supportsSearchExpressions();
2221 
2222 
2224 
2226  bool supportsObservable();
2227 
2228 
2230 
2232  bool supportsMessages();
2233 
2234 
2236 
2238  *object getSchemaType();
2239 
2240 
2242 
2246 protected:
2247  *hash<string, AbstractDataField> getRecordTypeImpl(*hash<auto> search_options);
2248 public:
2249 
2250 
2252 
2259 protected:
2260  AbstractDataProviderBulkRecordInterface searchRecordsBulkImpl(int block_size = 1000, *hash<auto> where_cond, *hash<auto> search_options);
2261 public:
2262 
2263 
2265 
2270 protected:
2271  AbstractDataProviderRecordIterator searchRecordsImpl(*hash<auto> where_cond, *hash<auto> search_options);
2272 public:
2273 
2274 
2276 
2284 protected:
2285  AbstractDataProviderRecordIterator requestSearchRecordsImpl(auto req, *hash<auto> where_cond, *hash<auto> search_options);
2286 public:
2287 
2288 
2290 
2298 protected:
2299  *hash<auto> createRecordImpl(hash<auto> rec, *hash<auto> create_options);
2300 public:
2301 
2302 
2304 
2309 protected:
2310  string upsertRecordImpl(hash<auto> rec, *hash<auto> upsert_options);
2311 public:
2312 
2313 
2315 
2319 protected:
2320  bool updateSingleRecordImpl(hash<auto> set, hash<auto> where_cond, *hash<auto> search_options);
2321 public:
2322 
2323 
2325 
2331 protected:
2332  int updateRecordsImpl(hash<auto> set, *hash<auto> where_cond, *hash<auto> search_options);
2333 public:
2334 
2335 
2337 
2343 protected:
2344  int deleteRecordsImpl(*hash<auto> where_cond, *hash<auto> search_options);
2345 public:
2346 
2347 
2349 
2354 protected:
2355  auto doRequestImpl(auto req, *hash<auto> request_options);
2356 public:
2357 
2358 
2360 
2368 protected:
2369  AbstractDataProvider createChildProviderImpl(string name, hash<string, AbstractDataField> fields, *hash<auto> child_create_options);
2370 public:
2371 
2372 
2374 
2379 protected:
2380  deleteChildProviderImpl(string name, *hash<auto> child_delete_options);
2381 public:
2382 
2383 
2385 
2391 protected:
2392  addFieldImpl(AbstractDataField field, *hash<auto> field_add_options);
2393 public:
2394 
2395 
2397 
2403 protected:
2404  updateFieldImpl(string name, AbstractDataField field, *hash<auto> field_update_options);
2405 public:
2406 
2407 
2409 
2414 protected:
2415  deleteFieldImpl(string name, *hash<auto> field_delete_options);
2416 public:
2417 
2418 
2420 
2427 protected:
2428  sendMessageImpl(string message_id, auto msg, *hash<auto> send_message_options);
2429 public:
2430 
2431 
2433 
2437 protected:
2438  object getSchemaObjectImpl();
2439 public:
2440 
2441 
2443 
2447 protected:
2448  *AbstractDataProviderType getRequestTypeImpl();
2449 public:
2450 
2451 
2453 
2457 protected:
2458  *AbstractDataProviderType getResponseTypeImpl();
2459 public:
2460 
2461 
2463 
2467 protected:
2468  *hash<string, AbstractDataProviderType> getErrorResponseTypesImpl();
2469 public:
2470 
2471 
2473 
2479 protected:
2480  AbstractDataProviderType getErrorResponseTypeImpl(string error_code);
2481 public:
2482 
2483 
2485 
2495 protected:
2496  hash<DataProviderMessageInfo> getEventInfoImpl(string event_id);
2497 public:
2498 
2499 
2501 
2507 protected:
2508  hash<string, hash<DataProviderMessageInfo>> getEventTypesImpl();
2509 public:
2510 
2511 
2513 
2521 protected:
2522  hash<DataProviderMessageInfo> getMessageInfoImpl(string message_id);
2523 public:
2524 
2525 
2527 
2533 protected:
2534  hash<string, hash<DataProviderMessageInfo>> getMessageTypesImpl();
2535 public:
2536 
2537 
2539 
2541 protected:
2542  throwUnimplementedException();
2543 public:
2544 
2545 
2547  abstract string getName();
2548 
2550 protected:
2551  abstract hash<DataProviderInfo> getStaticInfoImpl();
2552 public:
2553 }
2554 }
describes a data type based on a hashdecl
Definition: AbstractDataField.qc.dox.h:47
Abstract bulk data operation class.
Definition: AbstractDataProviderBulkOperation.qc.dox.h:33
Defines the abstract class for data provider iterators; the destructor releases the iterator.
Definition: AbstractDataProviderBulkRecordInterface.qc.dox.h:33
The AbstractDataProvider class.
Definition: AbstractDataProvider.qc.dox.h:742
static code cb_resolve_value
static callback for dynamic value resolution
Definition: AbstractDataProvider.qc.dox.h:989
const GenericExpressions
Generic search operator expressions.
Definition: AbstractDataProvider.qc.dox.h:976
*hash< string, hash< MapperRuntimeKeyInfo > > getMapperRuntimeKeys()
Returns custom data mapper runtime keys.
checkDeleteChild()
Ensures that the data provider supports deleting children.
deleteChildProvider(string name, *hash< auto > child_delete_options)
Deletes a child data provider.
*list< hash< DataProviderSummaryInfo > > getChildProviderSummaryInfo()
Return data provider summary info.
beginTransaction()
Begins a transaction with a data provider.
const DataProviderSummaryInfoKeys
A list of members names of the DataProviderSummaryInfoKeys hashdecl.
Definition: AbstractDataProvider.qc.dox.h:979
*hash< string, AbstractDataProviderType > getErrorResponseTypes()
Returns a hash of error responses, if any.
*AbstractDataProviderType getRequestType()
Returns the description of a successful request message, if any.
checkUpdate()
Ensures that the data provider supports record upserts.
AbstractDataProviderBulkOperation getBulkUpserter()
Returns a bulk upsert operation object for the data provider.
hash< auto > getInfoAsData(*bool with_type_info)
Returns static provider information as data; no objects are returned.
const GenericExpressionImplementations
Generic expression implementations for data providers without native search functionality.
Definition: AbstractDataProvider.qc.dox.h:746
checkUpdateField()
Ensures that the data provider supports updating fields.
sendMessage(string message_id, auto msg, *hash< auto > send_message_options)
Sends a message from message-capable data providers.
checkObservable()
Ensures that the data provider supports observer pattern / event API.
*AbstractDataProvider getChildProvider(string name)
Returns the given child provider or NOTHING if the given child is unknown.
hash< DataProviderInfo > getInfo()
Returns data provider info.
const GenericRecordSearchOptions
Generic record search options; see details below.
Definition: AbstractDataProvider.qc.dox.h:997
commit()
Commits data written to the data provider.
bool updateSingleRecord(hash< auto > set, hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Updates a single record matching the search options.
bool requiresTransactionManagement()
Returns True if the data provider requires transaction management.
AbstractDataProviderRecordIterator getRecordIterator(*hash< auto > search_options)
Returns an iterator iterating all records.
AbstractDataProviderBulkRecordInterface searchRecordsBulk(int block_size=1000, *hash< auto > where_cond, *hash< auto > search_options)
Returns an iterator for zero or more records matching the search options.
constructor()
Creates the data provider.
*hash< auto > createRecord(hash< auto > rec, *hash< auto > create_options)
Creates the given record in the data provider.
hash< DataProviderMessageInfo > getEventInfo(string event_id)
Returns the description of an observable event, if any.
hash< DataProviderMessageInfo > getMessageInfo(string message_id)
Returns the description of an outbound message, if any.
deleteField(string name, *hash< auto > field_delete_options)
Deletes an existing field.
int deleteRecords(*hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Deletes zero or more records.
hash< DataProviderExpression > getSimpleArgumentIntern(int role, hash< DataProviderInfo > info, hash< DataProviderExpressionInfo > expinfo, string key, auto value)
Returns an argument for an expression.
rollback()
Rolls back data written to the data provider.
int updateRecords(hash< auto > set, *hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Updates zero or more records matching the search options.
static auto evalGenericExpressionValue(hash< auto > rec, auto val)
Evaluates the given expression with the generic internal implementation and returns the result.
*hash< auto > searchFirstRecord(hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Returns the first record matching the search options.
*AbstractDataProviderType getResponseType()
Returns the description of a response message, if this object represents a response message.
static bool callbacks_locked
flag if callbacks are locked
Definition: AbstractDataProvider.qc.dox.h:983
AbstractDataProviderRecordIterator requestSearchRecords(auto req, *hash< auto > where_cond, *hash< auto > search_options)
Returns an iterator for zero or more records matching the search options according to an API request.
AbstractDataProviderBulkOperation getBulkInserter()
Returns a bulk insert operation object for the data provider.
static bool setDynamicValueCallbacks()
Ensures that no callbacks can be set for dynamic URI resolution.
bool updateSingleRecord(hash< auto > set, hash< auto > where_cond, *hash< auto > search_options)
Updates a single record matching the search options.
auto doRequest(auto req, *hash< auto > request_options)
Makes a request and returns the response.
static code cb_value_needs_resolution
static callback the returns a bool if the value needs dynamic resolution
Definition: AbstractDataProvider.qc.dox.h:986
object getSchemaObject()
Returns the schema supporting this data provider.
checkCreate()
Ensures that the data provider supports record creation.
checkSchema()
Ensures that the data provider supports a schema.
checkRead()
Ensures that the data provider supports read operations.
*string getDesc()
Returns the data provider description.
*hash< auto > searchFirstRecord(hash< auto > where_cond, *hash< auto > search_options)
Returns the first record matching the search options.
AbstractDataProviderBulkRecordInterface getBulkRecordInterface(int block_size=1000, *hash< auto > search_options)
Returns an iterator iterating all records with the bulk read API.
int updateRecords(hash< auto > set, *hash< auto > where_cond, *hash< auto > search_options)
Updates zero or more records matching the search options.
*hash< auto > searchSingleRecord(hash< auto > where_cond, *hash< auto > search_options)
Returns a single record matching the search options.
hash< DataProviderSummaryInfo > getSummaryInfo()
Return data provider summary info.
*hash< auto > getSearchExpression(*hash< auto > where_cond, *hash< auto > search_options)
Returns a search expression for a standard search hash.
*hash< auto > searchSingleRecord(hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Returns a single record matching the search options.
hash< string, hash< DataProviderMessageInfo > > getMessageTypes()
Returns a hash of all supported outbound messages.
AbstractDataProviderRecordIterator searchRecords(*hash< auto > where_cond, *hash< auto > search_options)
Returns an iterator for zero or more records matching the search options.
constructor(LoggerInterface logger)
Creates the data provider with the given Logger.
checkDelete()
Ensures that the data provider supports record deletion.
AbstractDataProviderType getErrorResponseType(string error_code)
Returns the type for the given error code.
checkMessages()
Ensures that the data provider supports sending messages.
AbstractDataProviderRecordIterator searchRecords(*hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Returns an iterator for zero or more records matching the search options.
checkDeleteField()
Ensures that the data provider supports deleting fields.
AbstractDataProvider getChildProviderPath(string path)
Returns the given child provider from a "/" separated path string.
*list< string > getChildProviderNames()
Returns a list of child data provider names, if any.
addField(AbstractDataField field, *hash< auto > field_add_options)
Creates a new field.
AbstractDataProvider createChildProvider(string name, hash< string, AbstractDataField > fields, *hash< auto > child_create_options)
Creates a new child data provider and returns it after adding as a child.
string upsertRecord(hash< auto > rec, *hash< auto > upsert_options)
Upserts the given record in the data provider.
updateField(string name, AbstractDataField field, *hash< auto > field_update_options)
Updates an existing field.
hash< DataProviderExpression > getEqualityComparisonExpression(int role, hash< DataProviderInfo > info, string key, auto value)
Returns an equality comparison expression.
checkRequest()
Ensures that the data provider supports the request API.
AbstractDataProvider getChildProviderEx(string name)
Returns the given child provider or throws an exception if the given child is unknown.
checkSearchExpressions()
Ensures that the data provider supports advanced search expressions.
AbstractDataProviderRecordIterator requestSearchRecords(auto req, *hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Returns an iterator for zero or more records matching the search options according to an API request.
checkAddField()
Ensures that the data provider supports adding fields.
checkCreateChild()
Ensures that the data provider supports creating children.
AbstractDataProviderBulkRecordInterface searchRecordsBulk(int block_size=1000, *hash< DataProviderExpression > where_cond, *hash< auto > search_options)
Returns an iterator for zero or more records matching the search options.
int deleteRecords(*hash< auto > where_cond, *hash< auto > search_options)
Deletes zero or more records.
static hash< DataProviderExpressionInfo > getExpression(int role, string exp, *hash< string, hash< DataProviderExpressionInfo >> expmap)
Returns an expression definition for an expression code or throws an exception.
checkUpsert()
Ensures that the data provider supports record upserts.
hash< string, hash< DataProviderMessageInfo > > getEventTypes()
Returns a hash of all supported event types.
Defines the abstract class for data provider iterators; the destructor releases the iterator.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:339
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:206
static AbstractDataProviderType get(Type type, *hash< auto > options, *hash< auto > tags)
Returns an appropriate object for the given type.
describes a data type based on a hash
Definition: HashDataType.qc.dox.h:36
describes a data type based on a hashdecl
Definition: QoreDataField.qc.dox.h:34
const True
const False
const DET_Operator
Definition: AbstractDataProvider.qc.dox.h:375
const DET_Function
Indicates a function expression.
Definition: AbstractDataProvider.qc.dox.h:378
const DP_SEARCH_OP_EQ
Identifies the generic data provider equals operator (=) for use in generic search criteria.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:81
const DP_SEARCH_OP_REGEX
Definition: AbstractDataProviderRecordIterator.qc.dox.h:51
const DP_SEARCH_OP_GT
Identifies the generic data provider greater than operator (>) for use in generic search criteria.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:66
const DP_SEARCH_OP_IN
Identifies the generic data provider "in" operator for use in generic search criteria.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:91
const DP_SEARCH_OP_GE
Identifies the generic data provider greater than or equals operator (>=) for use in generic search c...
Definition: AbstractDataProviderRecordIterator.qc.dox.h:71
const DP_SEARCH_OP_BETWEEN
Identifies the generic data provider "between" operator for use in generic search criteria.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:86
const DP_SEARCH_OP_NE
Identifies the generic data provider not equals operator (!= or <>) for use in generic search criteri...
Definition: AbstractDataProviderRecordIterator.qc.dox.h:76
const DP_SEARCH_OP_NOT
Identifies the generic data provider "not" operator for use in generic search criteria.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:96
const DP_SEARCH_OP_LT
Identifies the generic data provider less than (<) operator for use in generic search criteria.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:56
const DP_SEARCH_OP_LE
Identifies the generic data provider less than or equals (<=) operator for use in generic search crit...
Definition: AbstractDataProviderRecordIterator.qc.dox.h:61
const DP_OP_OR
OR logic.
Definition: AbstractDataProviderRecordIterator.qc.dox.h:41
const DP_OP_AND
Definition: AbstractDataProviderRecordIterator.qc.dox.h:38
const MSG_None
Definition: AbstractDataProvider.qc.dox.h:204
const MSG_Async
Asynchronous output type, output can happen any time.
Definition: AbstractDataProvider.qc.dox.h:216
const MSG_Sync
Synchronous output type, an output message is expected after each observed event.
Definition: AbstractDataProvider.qc.dox.h:211
const UpsertResultUnchanged
Indicates that the record was left unchanged.
Definition: AbstractDataProvider.qc.dox.h:42
const UpsertResultDeleted
Indicates that the record was deleted.
Definition: AbstractDataProvider.qc.dox.h:45
const UpsertResultInserted
Definition: AbstractDataProvider.qc.dox.h:33
const UpsertResultVerified
Indicates that the record was verified as already in the target state.
Definition: AbstractDataProvider.qc.dox.h:39
const UpsertResultUpdated
Indicates that the record was updated.
Definition: AbstractDataProvider.qc.dox.h:36
const ER_All
Indicates an expression that can be used in all contexts.
Definition: AbstractDataProvider.qc.dox.h:259
const ER_Search
Definition: AbstractDataProvider.qc.dox.h:253
const ER_Field
Indicates an expression that can be used in a field.
Definition: AbstractDataProvider.qc.dox.h:256
bool inlist()
const LC_Or
Indicates that boolean expressions can be combined with OR logic.
Definition: AbstractDataProvider.qc.dox.h:279
const LC_And
Definition: AbstractDataProvider.qc.dox.h:276
const LC_All
Indicates that all logic capabilities are supported.
Definition: AbstractDataProvider.qc.dox.h:282
number exp(number n)
const ST_Value
Indicates any literal value of the given type; i.e. not an operator or other expression.
Definition: AbstractDataProvider.qc.dox.h:228
const ST_Field
The signature type indicates a string field name when used as an argument, and the type is the field ...
Definition: AbstractDataProvider.qc.dox.h:234
const ST_Any
Definition: AbstractDataProvider.qc.dox.h:225
bool regex(string str, string regex, int options=0)
hash< auto > hash(object obj)
Qore AbstractDataField class definition.
Definition: AbstractDataField.qc.dox.h:27
const DataProviderSignatureOptionalIntValueType
Data provider signature *int value type.
Definition: AbstractDataProvider.qc.dox.h:334
const DataProviderSignatureStringType
Data provider signature string type.
Definition: AbstractDataProvider.qc.dox.h:358
const DataProviderSignatureDateType
Data provider signature date type.
Definition: AbstractDataProvider.qc.dox.h:364
const DataProviderSignatureHashValueType
Data provider signature hash value type.
Definition: AbstractDataProvider.qc.dox.h:346
const SignatureTypeDescMap
Maps signature description values to integer codes.
Definition: AbstractDataProvider.qc.dox.h:245
const SignatureTypeCodeMap
Maps signature type codes to descriptions.
Definition: AbstractDataProvider.qc.dox.h:238
const DataProviderSignatureOptionalStringValueType
Data provider signature optional string value type.
Definition: AbstractDataProvider.qc.dox.h:322
const LogicDescMap
Logic map from descriptions to integer codes.
Definition: AbstractDataProvider.qc.dox.h:292
const DataProviderSignatureFieldType
Data provider signature field type.
Definition: AbstractDataProvider.qc.dox.h:304
const ExpressionTypeDescMap
Maps DataProvider expression type descriptions to integer codes.
Definition: AbstractDataProvider.qc.dox.h:388
const DataProviderSignatureBoolType
Data provider signature bool type.
Definition: AbstractDataProvider.qc.dox.h:352
const AbstractDataProviderTypeMap
Maps Qore type name constant values to AbstractDataProviderType values.
Definition: AbstractDataProviderType.qc.dox.h:140
const DataProviderSignatureListValueType
Data provider signature list value type.
Definition: AbstractDataProvider.qc.dox.h:340
const DataProviderSignatureStringValueType
Data provider signature string value type.
Definition: AbstractDataProvider.qc.dox.h:316
const DataProviderSignatureAnyType
Data provider signature any type.
Definition: AbstractDataProvider.qc.dox.h:310
const RoleCodeMap
Role map from codes to descriptions.
Definition: AbstractDataProvider.qc.dox.h:263
const LogicCodeMap
Logic map from codes to descriptions.
Definition: AbstractDataProvider.qc.dox.h:286
const RoleDescMap
Role map from descriptions to codes.
Definition: AbstractDataProvider.qc.dox.h:268
const ExpressionTypeCodeMap
Maps DataProvider expression type codes to descriptions.
Definition: AbstractDataProvider.qc.dox.h:382
const DataProviderSignatureIntValueType
Data provider signature int value type.
Definition: AbstractDataProvider.qc.dox.h:328
Allowed value hash.
Definition: AbstractDataProvider.qc.dox.h:49
auto value
The value.
Definition: AbstractDataProvider.qc.dox.h:51
string desc
Description for the value.
Definition: AbstractDataProvider.qc.dox.h:54
Data provider expression.
Definition: AbstractDataProvider.qc.dox.h:431
string exp
Expression name.
Definition: AbstractDataProvider.qc.dox.h:433
softlist< auto > args
Expression arguments.
Definition: AbstractDataProvider.qc.dox.h:439
Data provider signature info.
Definition: AbstractDataProvider.qc.dox.h:391
string symbol
The symbol to use when rendering expressions.
Definition: AbstractDataProvider.qc.dox.h:407
string name
The display name.
Definition: AbstractDataProvider.qc.dox.h:401
string label
The label used for the expression.
Definition: AbstractDataProvider.qc.dox.h:398
bool varargs
The last argument can be repeated indefinitely.
Definition: AbstractDataProvider.qc.dox.h:421
int role
The expression role code / bitfield.
Definition: AbstractDataProvider.qc.dox.h:412
int type
The type of expression; see DataProvider Expression Type Codes.
Definition: AbstractDataProvider.qc.dox.h:393
softlist< hash< DataProviderSignatureTypeInfo > > args
Argument types.
Definition: AbstractDataProvider.qc.dox.h:415
string desc
The description of the operation.
Definition: AbstractDataProvider.qc.dox.h:404
AbstractDataProviderType return_type
The return type.
Definition: AbstractDataProvider.qc.dox.h:418
Data provider field reference.
Definition: AbstractDataProvider.qc.dox.h:425
string field
The name of the field being referenced.
Definition: AbstractDataProvider.qc.dox.h:427
Data provider info.
Definition: AbstractDataProvider.qc.dox.h:443
string supports_messages
Output message support.
Definition: AbstractDataProvider.qc.dox.h:597
bool supports_delete
Does the data provider support record deletion?
Definition: AbstractDataProvider.qc.dox.h:477
*hash< string, hash< DataProviderMessageInfo > > events
hash of observable events and event types
Definition: AbstractDataProvider.qc.dox.h:709
bool supports_bulk_read
Does the data provider support native / optimized bulk reads?
Definition: AbstractDataProvider.qc.dox.h:490
*hash< string, hash< DataProviderOptionInfo > > add_field_options
Add field options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:674
*hash< string, hash< DataProviderMessageInfo > > messages
List of output message IDs and message types.
Definition: AbstractDataProvider.qc.dox.h:716
bool transaction_management
Does the data provider require transaction management?
Definition: AbstractDataProvider.qc.dox.h:521
*hash< string, hash< DataProviderExpressionInfo > > expressions
Expressions (operators and functions) supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:702
bool children_can_support_observers
Can any child data providers support the observer pattern / event API?
Definition: AbstractDataProvider.qc.dox.h:612
bool supports_child_delete
Does the data provider support deleting new child providers?
Definition: AbstractDataProvider.qc.dox.h:545
string type
The name of the provider type.
Definition: AbstractDataProvider.qc.dox.h:452
bool supports_delete_field
Does the data provider support deleting fields?
Definition: AbstractDataProvider.qc.dox.h:566
bool supports_child_create
Does the data provider support creating new child providers?
Definition: AbstractDataProvider.qc.dox.h:538
*hash< string, hash< DataProviderOptionInfo > > child_delete_options
Child deletion options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:667
bool supports_native_search
Does the data provider support native record searching?
Definition: AbstractDataProvider.qc.dox.h:482
*hash< string, hash< DataProviderOptionInfo > > request_options
Request options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:653
*hash< string, hash< DataProviderOptionInfo > > search_options
Search options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:648
string name
Data provider name.
Definition: AbstractDataProvider.qc.dox.h:447
bool supports_add_field
Does the data provider support adding new fields?
Definition: AbstractDataProvider.qc.dox.h:552
bool children_can_support_messages
Can any child data providers support messages?
Definition: AbstractDataProvider.qc.dox.h:617
bool supports_bulk_upsert
Does the data provider support native / optimized bulk upserts?
Definition: AbstractDataProvider.qc.dox.h:506
*hash< string, hash< DataProviderOptionInfo > > child_create_options
Child creation options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:660
hash< string, hash< MapperRuntimeKeyInfo > > mapper_keys
A hash of mapper key information.
Definition: AbstractDataProvider.qc.dox.h:728
bool supports_read
Does the data provider support reading.
Definition: AbstractDataProvider.qc.dox.h:457
bool record_requires_search_options
Do we require search options to retrieve the record type?
Definition: AbstractDataProvider.qc.dox.h:531
bool supports_update
Does the data provider support record updates?
Definition: AbstractDataProvider.qc.dox.h:467
bool supports_search_expressions
Does this data provide support advanced search experssions?
Definition: AbstractDataProvider.qc.dox.h:580
*hash< string, hash< DataProviderOptionInfo > > upsert_options
Upsert options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:643
bool supports_update_field
Does the data provider support updating existing fields?
Definition: AbstractDataProvider.qc.dox.h:559
bool supports_request
Does the data provider support the request API?
Definition: AbstractDataProvider.qc.dox.h:511
*hash< string, hash< DataProviderOptionInfo > > constructor_options
Constructor options supported by the data provider for the constructor variant taking a hash.
Definition: AbstractDataProvider.qc.dox.h:633
*hash< string, hash< DataProviderOptionInfo > > create_options
Create options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:638
bool supports_create
Does the data provider support record creation?
Definition: AbstractDataProvider.qc.dox.h:462
*list< string > children
A list of child data providers in this data provider.
Definition: AbstractDataProvider.qc.dox.h:738
bool supports_observable
Does this data provider support the event API / observer pattern?
Definition: AbstractDataProvider.qc.dox.h:587
bool supports_upsert
Does the data provider support record upserts (create or update)?
Definition: AbstractDataProvider.qc.dox.h:472
bool supports_bulk_create
Does the data provider support native / optimized bulk creation?
Definition: AbstractDataProvider.qc.dox.h:498
*hash< string, hash< DataProviderOptionInfo > > delete_field_options
Delete field options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:688
*hash< string, hash< DataProviderOptionInfo > > send_message_options
Send message options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:695
bool supports_children
Does the data provider support children?
Definition: AbstractDataProvider.qc.dox.h:516
bool children_can_support_apis
Can any child data providers offer API services (request - response data providers)?
Definition: AbstractDataProvider.qc.dox.h:602
bool children_can_support_records
Can any child data providers offer record-based providers?
Definition: AbstractDataProvider.qc.dox.h:607
*hash< string, hash< DataProviderOptionInfo > > update_field_options
Update field options supported by the data provider.
Definition: AbstractDataProvider.qc.dox.h:681
*string desc
A markdown description of the data provider.
Definition: AbstractDataProvider.qc.dox.h:733
bool supports_schema
Does the data provider support a schema?
Definition: AbstractDataProvider.qc.dox.h:573
bool children_can_support_transactions
Can any child data providers support transaction management?
Definition: AbstractDataProvider.qc.dox.h:622
int search_logic_capabilities
Supported search logic capabilities.
Definition: AbstractDataProvider.qc.dox.h:721
*string schema_type
Returns the schema type supported by this data provider.
Definition: AbstractDataProvider.qc.dox.h:628
bool has_record
Does the data provider provide a record?
Definition: AbstractDataProvider.qc.dox.h:526
Data provider message and event info.
Definition: AbstractDataProvider.qc.dox.h:183
string desc
The description of the message or event.
Definition: AbstractDataProvider.qc.dox.h:187
AbstractDataProviderType type
The data type of the message or event.
Definition: AbstractDataProvider.qc.dox.h:190
Data provider option info.
Definition: AbstractDataProvider.qc.dox.h:58
softlist< AbstractDataProviderType > type
The option value type or types.
Definition: AbstractDataProvider.qc.dox.h:60
bool sensitive
Is the option value sensitive?
Definition: AbstractDataProvider.qc.dox.h:72
auto default_value
Any default value.
Definition: AbstractDataProvider.qc.dox.h:69
string desc
The option description.
Definition: AbstractDataProvider.qc.dox.h:66
*softlist< hash< AllowedValueInfo > > allowed_values
List of allowed values (enum)
Definition: AbstractDataProvider.qc.dox.h:75
bool required
Required flag.
Definition: AbstractDataProvider.qc.dox.h:63
Data provider signature argument info.
Definition: AbstractDataProvider.qc.dox.h:295
int type_code
The signature type code.
Definition: AbstractDataProvider.qc.dox.h:300
AbstractDataProviderType type
Argument types.
Definition: AbstractDataProvider.qc.dox.h:297
Data provider summary info.
Definition: AbstractDataProvider.qc.dox.h:79
bool supports_observable
Does this data provider support the event API / observer pattern?
Definition: AbstractDataProvider.qc.dox.h:144
bool supports_bulk_upsert
Does the data provider support native / optimized bulk upserts?
Definition: AbstractDataProvider.qc.dox.h:123
bool transaction_management
Does the data provider require transaction management?
Definition: AbstractDataProvider.qc.dox.h:132
bool children_can_support_apis
Can any child data providers offer API services (request - response data providers)?
Definition: AbstractDataProvider.qc.dox.h:159
bool supports_create
Does the data provider support record creation?
Definition: AbstractDataProvider.qc.dox.h:93
string name
The name of the data provider.
Definition: AbstractDataProvider.qc.dox.h:81
bool supports_read
Does the data provider support reading.
Definition: AbstractDataProvider.qc.dox.h:90
string desc
The description of the data provider; supports markdown.
Definition: AbstractDataProvider.qc.dox.h:84
bool has_record
Does the data provider provide a record?
Definition: AbstractDataProvider.qc.dox.h:135
bool children_can_support_transactions
Can any child data providers support transaction management?
Definition: AbstractDataProvider.qc.dox.h:179
bool children_can_support_observers
Can any child data providers support the observer pattern / event API?
Definition: AbstractDataProvider.qc.dox.h:169
bool supports_upsert
Does the data provider support record upserts (create or update)?
Definition: AbstractDataProvider.qc.dox.h:99
bool supports_children
Does the data provider support children?
Definition: AbstractDataProvider.qc.dox.h:129
bool supports_bulk_create
Does the data provider support native / optimized bulk creation?
Definition: AbstractDataProvider.qc.dox.h:117
bool supports_delete
Does the data provider support record deletion?
Definition: AbstractDataProvider.qc.dox.h:102
bool supports_request
Does the data provider support the request API?
Definition: AbstractDataProvider.qc.dox.h:126
bool supports_search_expressions
Does this data provide support advanced search experssions?
Definition: AbstractDataProvider.qc.dox.h:138
bool children_can_support_messages
Can any child data providers support messages?
Definition: AbstractDataProvider.qc.dox.h:174
bool supports_native_search
Does the data provider support native record searching?
Definition: AbstractDataProvider.qc.dox.h:105
string supports_messages
Message support.
Definition: AbstractDataProvider.qc.dox.h:154
string type
The name of the provider type.
Definition: AbstractDataProvider.qc.dox.h:87
bool supports_update
Does the data provider support record updates?
Definition: AbstractDataProvider.qc.dox.h:96
bool supports_bulk_read
Does the data provider support native / optimized bulk reads?
Definition: AbstractDataProvider.qc.dox.h:111
bool children_can_support_records
Can any child data providers offer record-based providers?
Definition: AbstractDataProvider.qc.dox.h:164