dobo
Version:
DBMS for Bajo Framework
51 lines • 124 kB
HTML
<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Class: DoboModel</title><!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="light"><div class="sidebar-container"><div class="sidebar" id="sidebar"><a href="/" class="sidebar-title sidebar-title-anchor">Dobo API</a><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="Dobo.html">Dobo</a></div><div class="sidebar-section-children"><a href="DoboAction.html">DoboAction</a></div><div class="sidebar-section-children"><a href="DoboAdapter.html">DoboAdapter</a></div><div class="sidebar-section-children"><a href="DoboConnection.html">DoboConnection</a></div><div class="sidebar-section-children"><a href="DoboFeature.html">DoboFeature</a></div><div class="sidebar-section-children"><a href="DoboModel.html">DoboModel</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-Helper.html">Helper</a></div><div class="sidebar-section-children"><a href="module-Helper_Model.html">Helper/Model</a></div><div class="sidebar-section-children"><a href="module-Hook.html">Hook</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-externals"><div>Externals</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="external-Tools.html">Tools</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#actionFactory">actionFactory</a></div><div class="sidebar-section-children"><a href="global.html#adapterFactory">adapterFactory</a></div><div class="sidebar-section-children"><a href="global.html#connectionFactory">connectionFactory</a></div><div class="sidebar-section-children"><a href="global.html#featureFactory">featureFactory</a></div><div class="sidebar-section-children"><a href="global.html#modelFactory">modelFactory</a></div><div class="sidebar-section-children"><a href="global.html#pluginFactory">pluginFactory</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"><div class="navbar-item"><a id="" href="https://www.npmjs.com/package/dobo" target="">NPM</a></div><div class="navbar-item"><a id="" href="https://github.com/ardhi/dobo" target="">Github</a></div><div class="navbar-item"><a id="" href="https://dobo.bajo.app/" target="">Dobo</a></div><div class="navbar-item"><a id="" href="https://bajo.app/" target="">Bajo</a></div></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><header><h1 id="DoboModel-title" class="has-anchor">DoboModel</h1><div class="class-description"><p>Model class defintion.</p></div></header><article><div class="container-overview"><h2 id="constructor" class="has-anchor">Constructor</h2><h3 class="name has-anchor" id="DoboModel"><span class="type-signature"></span>new DoboModel<span class="signature">()</span></h3><div class="description"><p>Constructor</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line241">line 241</a></li></ul></dd></div></dl></div><h2 id="members" class="subsection-title has-anchor">Members</h2><h3 class="name has-anchor" id="adapter"><span class="type-signature"></span>adapter<span class="type-signature"> :string</span></h3><div class="description"><p>Model's adapter name</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line254">line 254</a></li></ul></dd></div></dl><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="._simpleLookup"><span class="type-signature">(async, static) </span>_simpleLookup<span class="signature">(value, lookupValue, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {*|null|undefined}</span></h3><div class="description"><p>Internal method to perform a simple lookup based on the provided value and lookupValue.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>value</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">object</span> |<wbr> <span class="param-type">Array</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>The value to look up</p></td></tr><tr><td class="name"><code>lookupValue</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>The lookup values to replace in the query</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Additional options for the lookup</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line391">line 391</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the result of the lookup or <code>null</code> if not found or <code>undefined</code> if the value is not a string, object, or array</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">*</span> |<wbr> <span class="param-type">null</span> |<wbr> <span class="param-type">undefined</span></dd></dl></div><h3 class="name has-anchor" id=".action"><span class="type-signature">(static) </span>action<span class="signature">(name, …args)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>}</span></h3><div class="description"><p>Invoke a model's action. It will create a new instance of <a href="DoboAction.html">DoboAction</a> and return it.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The name of the action to invoke</p></td></tr><tr><td class="name"><code>args</code></td><td class="type"><span class="param-type">any</span></td><td class="attributes"><repeatable><br></td><td class="description last"><p>Arguments to pass to the action</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line265">line 265</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an instance of <a href="DoboAction.html">DoboAction</a></p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span></dd></dl></div><h3 class="name has-anchor" id=".build"><span class="type-signature">(async, static) </span>build<span class="signature">(opts)</span><span class="type-signature"> → {<a href="DoboModel.html#.TResultRecord">DoboModel.TResultRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Build a model's definition based on its properties and rules.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="description last"><p>The options for building the model</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_build.js.html">lib/factory/model/build.js</a>, <a href="lib_factory_model_build.js.html#line13">line 13</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboModel.html#.TResultRecord">DoboModel.<wbr>TResultRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".buildFromDbModel"><span class="type-signature">(async, static) </span>buildFromDbModel<span class="signature">(options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {object|boolean}</span></h3><div class="description"><p>Build JOI model from database model's properties and rules</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>fields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="default">[]</td><td class="description last"><p>If not empty, only these fields will be included in the JOI model</p></td></tr><tr><td class="name"><code>rule</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Custom rules to override model's rules</p></td></tr><tr><td class="name"><code>extFields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="default">[]</td><td class="description last"><p>Additional fields to include in the JOI model</p></td></tr><tr><td class="name"><code>partial</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, only the fields present in the body will be validated</p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line127">line 127</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns JOI model object or <code>false</code> if no properties to validate</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">object</span> |<wbr> <span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id=".buildPropValues"><span class="type-signature">(async, static) </span>buildPropValues<span class="signature">(prop, opts)</span><span class="type-signature"> → {Array.<<a href="DoboModel.html#.TPropertyValue">DoboModel.TPropertyValue</a>>}</span></h3><div class="description"><p>Builds the values for a given property if <code>prop.values</code> is set:</p><ul><li>If a string, it will be treated as a handler and executed to get the values.</li><li>If a function, it will be executed to get the values.</li><li>If an array, it will be used as is.</li></ul><p>Values are returned as an array of DoboModel.TPropertyValues. If a request object is provided in the options, the <code>text</code> will be translated using the request's translation function.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>prop</code></td><td class="type"><span class="param-type">object</span></td><td class="description last"><p>The property definition</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="description last"><p>Additional options for building the property values</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line430">line 430</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of property values</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<<a href="DoboModel.html#.TPropertyValue">DoboModel.TPropertyValue</a>></span></dd></dl></div><h3 class="name has-anchor" id=".clearRecord"><span class="type-signature">(async, static) </span>clearRecord<span class="signature">(opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultRecord">DoboModel.TResultRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Clears all records from the model's underlying data store.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_clear-record.js.html">lib/factory/model/clear-record.js</a>, <a href="lib_factory_model_clear-record.js.html#line14">line 14</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultRecord">DoboModel.<wbr>TResultRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".countRecord"><span class="type-signature">(async, static) </span>countRecord<span class="signature">(filter<span class="signature-attributes">opt</span>, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultRecord">DoboModel.TResultRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Counts the number of records in the model's underlying data store that match the provided filter criteria.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TFilter">DoboModel.<wbr>TFilter</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>The filter criteria to apply when counting records.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_count-record.js.html">lib/factory/model/count-record.js</a>, <a href="lib_factory_model_count-record.js.html#line15">line 15</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultRecord">DoboModel.<wbr>TResultRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".createRecord"><span class="type-signature">(async, static) </span>createRecord<span class="signature">(body, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultCreateRecord">DoboModel.TResultCreateRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Creates a new record in the model's underlying data store with the provided data.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"></td><td class="description last"><p>The data for the new record to be created</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_create-record.js.html">lib/factory/model/create-record.js</a>, <a href="lib_factory_model_create-record.js.html#line19">line 19</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeCreateRecord</li><li>module:Hook.afterCreateRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultCreateRecord">DoboModel.<wbr>TResultCreateRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".drop"><span class="type-signature">(async, static) </span>drop<span class="signature">(opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|DoboModel.TResult|boolean}</span></h3><div class="description"><p>Drops the model from the underlying data store.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_drop.js.html">lib/factory/model/drop.js</a>, <a href="lib_factory_model_drop.js.html#line14">line 14</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeDropModel</li><li>module:Hook.afterDropModel</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type">DoboModel.<wbr>TResult</span> |<wbr> <span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id=".findAllRecord"><span class="type-signature">(async, static) </span>findAllRecord<span class="signature">(filter, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultFindRecord">DoboModel.TResultFindRecord</a>|Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>>}</span></h3><div class="description"><p>Finds all records from the model's underlying data store based on the provided filter.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TFilter">DoboModel.<wbr>TFilter</a></span></td><td class="attributes"></td><td class="description last"><p>The filter parameters for finding the records.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_find-all-record.js.html">lib/factory/model/find-all-record.js</a>, <a href="lib_factory_model_find-all-record.js.html#line103">line 103</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeFindAllRecord</li><li>module:Hook.afterFindAllRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultFindRecord">DoboModel.<wbr>TResultFindRecord</a></span> |<wbr> <span class="param-type">Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>></span></dd></dl></div><h3 class="name has-anchor" id=".findOneRecord"><span class="type-signature">(async, static) </span>findOneRecord<span class="signature">(filter, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultFindRecord">DoboModel.TResultFindRecord</a>|Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>>}</span></h3><div class="description"><p>Finds a single record from the model's underlying data store based on the provided filter.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TFilter">DoboModel.<wbr>TFilter</a></span></td><td class="attributes"></td><td class="description last"><p>The filter parameters for finding the record.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_find-one-record.js.html">lib/factory/model/find-one-record.js</a>, <a href="lib_factory_model_find-one-record.js.html#line17">line 17</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeFindRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultFindRecord">DoboModel.<wbr>TResultFindRecord</a></span> |<wbr> <span class="param-type">Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>></span></dd></dl></div><h3 class="name has-anchor" id=".findRecord"><span class="type-signature">(async, static) </span>findRecord<span class="signature">(filter<span class="signature-attributes">opt</span>, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultFindRecord">DoboModel.TResultFindRecord</a>|Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>>}</span></h3><div class="description"><p>Finds records in the model's underlying data store that match the provided filter criteria.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TFilter">DoboModel.<wbr>TFilter</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>The filter criteria to apply when finding records.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_find-record.js.html">lib/factory/model/find-record.js</a>, <a href="lib_factory_model_find-record.js.html#line31">line 31</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeFindRecord</li><li>module:Hook.afterFindRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultFindRecord">DoboModel.<wbr>TResultFindRecord</a></span> |<wbr> <span class="param-type">Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>></span></dd></dl></div><h3 class="name has-anchor" id=".getIndexes"><span class="type-signature">(static) </span>getIndexes<span class="signature">()</span><span class="type-signature"> → {Array.<object>}</span></h3><div class="description"><p>Returns the model's indexes.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line355">line 355</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of index objects defined in the model</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<object></span></dd></dl></div><h3 class="name has-anchor" id=".getNonVirtualProperties"><span class="type-signature">(static) </span>getNonVirtualProperties<span class="signature">(namesOnly<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Array.<(object|string)>}</span></h3><div class="description"><p>Get the model's non-virtual properties.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>namesOnly</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, return only property names instead of full property objects</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line344">line 344</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of non-virtual properties or property names based on the <code>namesOnly</code> option</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<(object|string)></span></dd></dl></div><h3 class="name has-anchor" id=".getProperties"><span class="type-signature">(static) </span>getProperties<span class="signature">(options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Array.<(object|string)>}</span></h3><div class="description"><p>Get the model's properties based on the given options.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>noVirtual</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, exclude virtual properties</p></td></tr><tr><td class="name"><code>namesOnly</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, return only property names instead of full property objects</p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line319">line 319</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of properties or property names based on the options</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<(object|string)></span></dd></dl></div><h3 class="name has-anchor" id=".getProperty"><span class="type-signature">(static) </span>getProperty<span class="signature">(name)</span><span class="type-signature"> → {Object|null}</span></h3><div class="description"><p>Get a property by its name.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the property to retrieve</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line306">line 306</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the property object if found, otherwise <code>undefined</code></p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Object</span> |<wbr> <span class="param-type">null</span></dd></dl></div><h3 class="name has-anchor" id=".getRecord"><span class="type-signature">(async, static) </span>getRecord<span class="signature">(id, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultGetRecord">DoboModel.TResultGetRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Gets a record from the model's underlying data store based on the provided ID.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>id</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="attributes"></td><td class="description last"><p>The ID of the record to be retrieved.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_get-record.js.html">lib/factory/model/get-record.js</a>, <a href="lib_factory_model_get-record.js.html#line17">line 17</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeGetRecord</li><li>module:Hook.afterGetRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultGetRecord">DoboModel.<wbr>TResultGetRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".getVirtualProperties"><span class="type-signature">(static) </span>getVirtualProperties<span class="signature">(namesOnly<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Array.<(object|string)>}</span></h3><div class="description"><p>Get the model's virtual properties.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>namesOnly</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, return only property names instead of full property objects</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line332">line 332</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of virtual properties or property names based on the <code>namesOnly</code> option</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<(object|string)></span></dd></dl></div><h3 class="name has-anchor" id=".hasProperty"><span class="type-signature">(static) </span>hasProperty<span class="signature">(name)</span><span class="type-signature"> → {boolean}</span></h3><div class="description"><p>Checks if the model has a property with the given name.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the property to check</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line366">line 366</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> if the property exists, otherwise <code>false</code></p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id=".isExists"><span class="type-signature">(async, static) </span>isExists<span class="signature">(opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|DoboModel.TResult|boolean}</span></h3><div class="description"><p>Checks if the model exists in the underlying data store.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_exists.js.html">lib/factory/model/exists.js</a>, <a href="lib_factory_model_exists.js.html#line14">line 14</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeModelExists</li><li>module:Hook.afterModelExists</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type">DoboModel.<wbr>TResult</span> |<wbr> <span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id=".removeRecord"><span class="type-signature">(async, static) </span>removeRecord<span class="signature">(id, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultRemoveRecord">DoboModel.TResultRemoveRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Removes a record from the model's underlying data store based on the provided ID.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>id</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>The ID of the record to be removed.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_remove-record.js.html">lib/factory/model/remove-record.js</a>, <a href="lib_factory_model_remove-record.js.html#line17">line 17</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeRemoveRecord</li><li>module:Hook.afterRemoveRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultRemoveRecord">DoboModel.<wbr>TResultRemoveRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".sanitizeBody"><span class="type-signature">(async, static) </span>sanitizeBody<span class="signature">(options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Object}</span></h3><div class="description"><p>Sanitize the payload body based on the model's properties and rules.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Body object to sanitize</p></td></tr><tr><td class="name"><code>partial</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, only the fields present in the body will be sanitized</p></td></tr><tr><td class="name"><code>strict</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, only the fields defined in the model's properties will be included in the sanitized body</p></td></tr><tr><td class="name"><code>extFields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="default">[]</td><td class="description last"><p>Additional fields to include in the sanitized body</p></td></tr><tr><td class="name"><code>truncateString</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, string fields will be truncated to their maximum length defined in the model's properties</p></td></tr><tr><td class="name"><code>action</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default"></td><td class="description last"><p>The action being performed (e.g., 'createRecord', 'updateRecord', etc.)</p></td></tr><tr><td class="name"><code>allProps</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, all properties including virtual ones will be considered for sanitization</p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_sanitize-body.js.html">lib/factory/model/sanitize-body.js</a>, <a href="lib_factory_model_sanitize-body.js.html#line16">line 16</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns sanitized body object</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id=".sanitizeFixture"><span class="type-signature">(async, static) </span>sanitizeFixture<span class="signature">(params<span class="signature-attributes">opt</span>, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Object}</span></h3><div class="description"><p>Sanitize a fixture object by resolving lookup values and ensuring proper data types.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>params</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Parameters object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Body object to sanitize</p></td></tr><tr><td class="name"><code>lookupValue</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Lookup values for resolving references in the body</p></td></tr><tr><td class="name"><code>noLookup</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, skip lookup resolution</p></td></tr></tbody></table></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object for additional configurations</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_sanitize-fixture.js.html">lib/factory/model/sanitize-fixture.js</a>, <a href="lib_factory_model_sanitize-fixture.js.html#line13">line 13</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns sanitized body object</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id=".sanitizeId"><span class="type-signature">(static) </span>sanitizeId<span class="signature">(id)</span><span class="type-signature"> → {string|number}</span></h3><div class="description"><p>Sanitize the given ID based on the model's properties.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>id</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="description last"><p>The ID to sanitize</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line293">line 293</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the sanitized ID</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></dd></dl></div><h3 class="name has-anchor" id=".sanitizeRecord"><span class="type-signature">(async, static) </span>sanitizeRecord<span class="signature">(record<span class="signature-attributes">opt</span>, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Object}</span></h3><div class="description"><p>Sanitize a record object based on the model's properties and rules.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>record</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default"></td><td class="description last"><p>Record object</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>fields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="default"></td><td class="description last"><p>If not empty, only these fields will be included in the sanitized record</p></td></tr><tr><td class="name"><code>hidden</code></td><td class="type"><span class="param-type">Array.<string></span></td><td class="attributes"><optional><br></td><td class="default">[]</td><td class="description last"><p>List of fields to hide from the sanitized record</p></td></tr><tr><td class="name"><code>forceNoHidden</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, force ALL fields to be picked, thus ignoring hidden fields. If an array, force all fields except those in the array to be picked.</p></td></tr><tr><td class="name"><code>fmt</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, add a <code>_fmt</code> property to the sanitized record with formatted values automatically based on the model's properties and rules</p></td></tr><tr><td class="name"><code>req</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default"></td><td class="description last"><p>Request object, used for formatting values based on request context</p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_sanitize-record.js.html">lib/factory/model/sanitize-record.js</a>, <a href="lib_factory_model_sanitize-record.js.html#line15">line 15</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns sanitized record object</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id=".sanitizeRef"><span class="type-signature">(async, static) </span>sanitizeRef<span class="signature">(obj, fatal<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Sanitize a reference object based on the model's properties and rules.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>obj</code></td><td class="type"><span class="param-type">*</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>The reference object to sanitize</p></td></tr><tr><td class="name"><code>fatal</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">true</td><td class="description last"><p>Whether to throw an error if sanitization fails</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line282">line 282</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".updateRecord"><span class="type-signature">(async, static) </span>updateRecord<span class="signature">(id, body, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultUpdateRecord">DoboModel.TResultUpdateRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Updates an existing record in the model's underlying data store based on the provided ID and data.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>id</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="attributes"></td><td class="description last"><p>The ID of the record to be updated.</p></td></tr><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"></td><td class="description last"><p>The data to update the record with.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_update-record.js.html">lib/factory/model/update-record.js</a>, <a href="lib_factory_model_update-record.js.html#line19">line 19</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeUpdateRecord</li><li>module:Hook.afterUpdateRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultUpdateRecord">DoboModel.<wbr>TResultUpdateRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".upsertRecord"><span class="type-signature">(async, static) </span>upsertRecord<span class="signature">(body, opts<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {<a href="DoboAction.html">DoboAction</a>|<a href="DoboModel.html#.TResultCreateRecord">DoboModel.TResultCreateRecord</a>|<a href="DoboModel.html#.TResultUpdateRecord">DoboModel.TResultUpdateRecord</a>|<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>}</span></h3><div class="description"><p>Upserts a record in the model's underlying data store. If a record with the specified ID exists, it updates that record; otherwise, it creates a new record.</p><p>If no arguments are provided, it automatically turns into a chainable <a href="DoboAction.html">DoboAction</a> object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"></td><td class="description last"><p>The data for the record to be upserted.</p></td></tr><tr><td class="name"><code>opts</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TOptions">DoboModel.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_upsert-record.js.html">lib/factory/model/upsert-record.js</a>, <a href="lib_factory_model_upsert-record.js.html#line61">line 61</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Hook.beforeUpsertRecord</li><li>module:Hook.afterUpsertRecord</li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="DoboAction.html">DoboAction</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultCreateRecord">DoboModel.<wbr>TResultCreateRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TResultUpdateRecord">DoboModel.<wbr>TResultUpdateRecord</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></dd></dl></div><h3 class="name has-anchor" id=".validate"><span class="type-signature">(async, static) </span>validate<span class="signature">(body, joiModel, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Object}</span></h3><div class="description"><p>Validate body object against JOI model</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Body object to validate</p></td></tr><tr><td class="name"><code>joiModel</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>JOI model</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>extFields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="default">[]</td><td class="description last"></td></tr><tr><td class="name"><code>partial</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, only the fields present in the body will be validated</p></td></tr><tr><td class="name"><code>params</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Validation parameters. See config and <a href="https://joi.dev/api/?v=17.13.3#anyvalidateasyncvalue-options">JOI validate's options</a></p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line263">line 263</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Object</span></dd></dl></div><h2 id="type-definitions" class="subsection-title has-anchor">Type Definitions</h2><h3 class="name has-anchor" id=".TFilter">TFilter</h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>query</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Query definition. See query-language for more</p></td></tr><tr><td class="name"><code>limit</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Maximum number of records to return</p></td></tr><tr><td class="name"><code>page</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Which page to return</p></td></tr><tr><td class="name"><code>skip</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Records to skip</p></td></tr><tr><td class="name"><code>sort</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TSort">DoboModel.<wbr>TSort</a></span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Sort order info</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_find-record.js.html">lib/factory/model/find-record.js</a>, <a href="lib_factory_model_find-record.js.html#line4">line 4</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>Dobo#recordFind</li><li>Dobo#recordFindOne</li><li>Dobo#recordFindAll</li></ul></dd></div></dl><h3 class="name has-anchor" id=".TOptions">TOptions</h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>noHook</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, no model's hook will be executed</p></td></tr><tr><td class="name"><code>noModelHook</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, no model's hook will be executed</p></td></tr><tr><td class="name"><code>noDynHook</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, no dynamic hook will be executed</p></td></tr><tr><td class="name"><code>noValidation</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, no validation of data payload performed</p></td></tr><tr><td class="name"><code>noCheckUnique</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, no unique validation for ID performed</p></td></tr><tr><td class="name"><code>noBodySanitizer</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, accept data payload as is without sanitization</p></td></tr><tr><td class="name"><code>noRecordSanitizer</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, accept result payload as is without sanitization</p></td></tr><tr><td class="name"><code>noResult</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code>, returns nothing</p></td></tr><tr><td class="name"><code>truncateString</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">true</td><td class="description last"><p>If <code>true</code> (default), string is truncated to its model's <code>maxLength</code></p></td></tr><tr><td class="name"><code>partial</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default"></td><td class="description last"><p>If <code>true</code>, only updated values are saved. Otherwise replace all existing values with given payload. Defaults to <code>true</code> for <code>updateRecord</code></p></td></tr><tr><td class="name"><code>dataOnly</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">true</td><td class="description last"><p>If <code>true</code> (default) returns only record's object. Otherwise DoboModel.TResult</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line31">line 31</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TPagination">TPagination</h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>limit</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"></td><td class="description last"><p>Number of records per page</p></td></tr><tr><td class="name"><code>page</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"></td><td class="description last"><p>Page number</p></td></tr><tr><td class="name"><code>skip</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Records to skip. If not provided, it will be calculated based on <code>limit</code> and <code>page</code></p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line71">line 71</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TPropertyType">TPropertyType</h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>integer</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">number</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>smallint</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">number</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>text</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">string</td><td class="description last"></td></tr><tr><td class="name"><code>textType</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">string</td><td class="description last"></td></tr><tr><td class="name"><code>values</code></td><td class="type"><span class="param-type">Array.<string></span></td><td class="attributes"><optional><br></td><td class="default">['text', 'mediumtext', 'longtext']</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>string</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">string</td><td class="description last"></td></tr><tr><td class="name"><code>maxLength</code></td><td class="type"><span class="param-type">maxLength</span></td><td class="attributes"><optional><br></td><td class="default">255</td><td class="description last"></td></tr><tr><td class="name"><code>minLength</code></td><td class="type"><span class="param-type">minLength</span></td><td class="attributes"><optional><br></td><td class="default">0</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>float</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">number</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>double</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">number</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>boolean</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">boolean</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>datetime</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">date</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>date</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">date</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>time</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">date</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>timestamp</code></td><td class="type"><span class="param-type">Object</span></td><td class="default"></td><td class="description last"><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>validator</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">timestamp</td><td class="description last"></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>object</code></td><td class="type"><span class="param-type">Object</span></td><td class="default">{}</td><td class="description last"></td></tr><tr><td class="name"><code>array</code></td><td class="type"><span class="param-type">Object</span></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line6">line 6</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TPropertyValue">TPropertyValue</h3><div class="description"><p>Property value type definition. Used for building property <code>values</code> in a model which is an array of this object type.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>value</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The actual value of the property</p></td></tr><tr><td class="name"><code>text</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The display text for the property value, which can be translated based on the request context</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line79">line 79</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TRecord">TRecord</h3><div class="description"><p>The record returned from a model's action. It is an object where:</p><ul><li>Key represents the property name</li><li>Value represents its value according to the property's data type</li></ul><p>This record is then merged with <a href="DoboModel.html#.TRecordFormatted">DoboModel.TRecordFormatted</a> and <a href="DoboModel.html#.TRecordRef">DoboModel.TRecordRef</a> to form the final record returned from a model's action.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecordFormatted">DoboModel.<wbr>TRecordFormatted</a></span> |<wbr> <span class="param-type"><a href="DoboModel.html#.TRecordRef">DoboModel.<wbr>TRecordRef</a></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line142">line 142</a></li></ul></dd></div></dl><b>Example</b><div class="rel"><pre class="prettyprint"><code>{
id: 1,
item: "Laptop",
createdAt: "2024-01-01T00:00:00.000Z",
isActive: true,
price: 2500.00,
_fmt: {
id: "1",
item: "Laptop",
createdAt: "Jan 1, 2024, 12:00 AM",
isActive: "True",
price: "2,500.00"
},
_ref: {
user: {
id: 1,
name: "John Doe"
}
}
}</code></pre></div><h3 class="name has-anchor" id=".TRecordFormatted">TRecordFormatted</h3><div class="description"><p>Formatted version of a record's property values. It is an object where:</p><ul><li>Key represents the property name</li><li>Value represents its formatted value according to the property's data type or formatting function. Data type is ALWAYS in string.</li></ul><p>This record is then wrapped in a <code>_fmt</code> property.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>_fmt</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Wrapper</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line88">line 88</a></li></ul></dd></div></dl><b>Example</b><div class="rel"><pre class="prettyprint"><code>{
_fmt: {
id: "1",
item: "Laptop",
createdAt: "Jan 1, 2024, 12:00 AM",
isActive: "True",
price: "2,500.00"
}
}</code></pre></div><h3 class="name has-anchor" id=".TRecordRef">TRecordRef</h3><div class="description"><p>Reference record related to a record's result. It is an object where:</p><ul><li>Key represents the name of the referenced record. Normally, it is the referenced model's name in camelCase format.</li><li>Value represents its reference record. It can be an object or an array of objects, depending on the relationship type.</li></ul><p>This record is then wrapped in a <code>_ref</code> property in the result object.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>_ref</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Wrapper</p><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code><string>.<dobomodel.trecord></dobomodel.trecord></string></code></td><td class="type"><span class="param-type">Object</span> |<wbr> <span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Reference record</p></td></tr></tbody></table></div></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line110">line 110</a></li></ul></dd></div></dl><b>Example</b><div class="rel"><pre class="prettyprint"><code>{
_ref: {
user: {
id: 1,
name: "John Doe"
},
posts: [
{
id: 1,
title: "Post Title"
},
{
id: 2,
title: "Another Post Title"
}
]
}
}</code></pre></div><h3 class="name has-anchor" id=".TResultCreateRecord">TResultCreateRecord</h3><div class="description"><p>The result returned from a model's <code>createRecord</code> action if <code>dataOnly</code> is set to <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>data</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></td><td class="description last"><p>The data returned from the action</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line201">line 201</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TResultFindRecord">TResultFindRecord</h3><div class="description"><p>The result returned from a model's <code>find*</code> actions if <code>dataOnly</code> is set to <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>data</code></td><td class="type"><span class="param-type">Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>></span></td><td class="attributes"></td><td class="description last"><p>The data returned from the action</p></td></tr><tr><td class="name"><code>count</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes"><optional><br></td><td class="description last"><p>The total number of records found, if applicable</p></td></tr><tr><td class="name"><code>cached</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Indicates if the result was retrieved from cache, if applicable. Only available if <code>bajoCache</code> is used</p></td></tr><tr><td class="name"><code>warnings</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Any warnings generated during the action, if applicable</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line182">line 182</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TResultGetRecord">TResultGetRecord</h3><div class="description"><p>The result returned from a model's <code>getRecord</code> action if <code>dataOnly</code> is set to <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>data</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></td><td class="description last"><p>The data returned from the action</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line193">line 193</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TResultRecord">TResultRecord</h3><div class="description"><p>The result returned from a model's action other than <code>find*</code>, <code>{create|update|remove}Record</code> if <code>dataOnly</code> is set to <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>data</code></td><td class="type"><span class="param-type">Array.<<a href="DoboModel.html#.TRecord">DoboModel.TRecord</a>></span></td><td class="description last"><p>The data returned from the action</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line174">line 174</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TResultRemoveRecord">TResultRemoveRecord</h3><div class="description"><p>The result returned from a model's <code>removeRecord</code> action if <code>dataOnly</code> is set to <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>oldData</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></td><td class="description last"><p>The removed data returned from the action</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line218">line 218</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TResultUpdateRecord">TResultUpdateRecord</h3><div class="description"><p>The result returned from a model's <code>updateRecord</code> action if <code>dataOnly</code> is set to <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>data</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></td><td class="description last"><p>The updated data returned from the action</p></td></tr><tr><td class="name"><code>oldData</code></td><td class="type"><span class="param-type"><a href="DoboModel.html#.TRecord">DoboModel.<wbr>TRecord</a></span></td><td class="description last"><p>The previous data before the update</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line209">line 209</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TSort">TSort</h3><div class="description"><p>Key value pairs used as sort order in pagination and sorting of records. It is an object where:</p><ul><li>Key represents model's field name</li><li>Value represents its sort order</li></ul></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object.<string, <a href="DoboModel.html#.TSortOrder">DoboModel.TSortOrder</a>></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line56">line 56</a></li></ul></dd></div></dl><b>Example</b><div class="rel"><pre class="prettyprint"><code>// to sort by firstName (ascending) and lastName (descending)
const sort = {
firstName: 1,
lastName: -1
}</code></pre></div><h3 class="name has-anchor" id=".TSortOrder">TSortOrder</h3><div class="description"><p>Sort order key used in pagination and sorting of records. It can be either:</p><ul><li><code>1</code> for ascending order (the default, if none is provided) or</li><li><code>-1</code> for descending order.</li></ul></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model.js.html">lib/factory/model.js</a>, <a href="lib_factory_model.js.html#line48">line 48</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidator">TValidator</h3><div class="description"><p>All available validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>string</code></td><td class="type"><span class="param-type">TValidatorString</span></td><td class="description last"></td></tr><tr><td class="name"><code>number</code></td><td class="type"><span class="param-type">TValidatorNumber</span></td><td class="description last"></td></tr><tr><td class="name"><code>boolean</code></td><td class="type"><span class="param-type">TValidatorBoolean</span></td><td class="description last"></td></tr><tr><td class="name"><code>date</code></td><td class="type"><span class="param-type">TValidatorDate</span></td><td class="description last"></td></tr><tr><td class="name"><code>timestamp</code></td><td class="type"><span class="param-type">TValidatorTimestamp</span></td><td class="description last"></td></tr><tr><td class="name"><code>array</code></td><td class="type"><span class="param-type">TValidatorArray</span></td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line82">line 82</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidatorArray">TValidatorArray</h3><div class="description"><p>List of available array validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>0</code></td><td class="type"><span class="param-type">string</span></td><td class="default">length</td><td class="description last"></td></tr><tr><td class="name"><code>1</code></td><td class="type"><span class="param-type">string</span></td><td class="default">max</td><td class="description last"></td></tr><tr><td class="name"><code>2</code></td><td class="type"><span class="param-type">string</span></td><td class="default">min</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line94">line 94</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidatorBoolean">TValidatorBoolean</h3><div class="description"><p>List of available boolean validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>0</code></td><td class="type"><span class="param-type">string</span></td><td class="default">falsy</td><td class="description last"></td></tr><tr><td class="name"><code>1</code></td><td class="type"><span class="param-type">string</span></td><td class="default">sensitive</td><td class="description last"></td></tr><tr><td class="name"><code>2</code></td><td class="type"><span class="param-type">string</span></td><td class="default">truthy</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line55">line 55</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidatorDate">TValidatorDate</h3><div class="description"><p>List of available date validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>0</code></td><td class="type"><span class="param-type">string</span></td><td class="default">greater</td><td class="description last"></td></tr><tr><td class="name"><code>1</code></td><td class="type"><span class="param-type">string</span></td><td class="default">iso</td><td class="description last"></td></tr><tr><td class="name"><code>2</code></td><td class="type"><span class="param-type">string</span></td><td class="default">less</td><td class="description last"></td></tr><tr><td class="name"><code>3</code></td><td class="type"><span class="param-type">string</span></td><td class="default">max</td><td class="description last"></td></tr><tr><td class="name"><code>4</code></td><td class="type"><span class="param-type">string</span></td><td class="default">min</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line64">line 64</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidatorNumber">TValidatorNumber</h3><div class="description"><p>List of available number validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>0</code></td><td class="type"><span class="param-type">string</span></td><td class="default">great</td><td class="description last"></td></tr><tr><td class="name"><code>1</code></td><td class="type"><span class="param-type">string</span></td><td class="default">less</td><td class="description last"></td></tr><tr><td class="name"><code>2</code></td><td class="type"><span class="param-type">string</span></td><td class="default">max</td><td class="description last"></td></tr><tr><td class="name"><code>3</code></td><td class="type"><span class="param-type">string</span></td><td class="default">min</td><td class="description last"></td></tr><tr><td class="name"><code>4</code></td><td class="type"><span class="param-type">string</span></td><td class="default">multiple</td><td class="description last"></td></tr><tr><td class="name"><code>5</code></td><td class="type"><span class="param-type">string</span></td><td class="default">negative</td><td class="description last"></td></tr><tr><td class="name"><code>6</code></td><td class="type"><span class="param-type">string</span></td><td class="default">port</td><td class="description last"></td></tr><tr><td class="name"><code>7</code></td><td class="type"><span class="param-type">string</span></td><td class="default">positive</td><td class="description last"></td></tr><tr><td class="name"><code>8</code></td><td class="type"><span class="param-type">string</span></td><td class="default">sign</td><td class="description last"></td></tr><tr><td class="name"><code>9</code></td><td class="type"><span class="param-type">string</span></td><td class="default">unsafe</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line39">line 39</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidatorString">TValidatorString</h3><div class="description"><p>List of available string validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>0</code></td><td class="type"><span class="param-type">string</span></td><td class="default">alphanum</td><td class="description last"></td></tr><tr><td class="name"><code>1</code></td><td class="type"><span class="param-type">string</span></td><td class="default">base64</td><td class="description last"></td></tr><tr><td class="name"><code>2</code></td><td class="type"><span class="param-type">string</span></td><td class="default">case</td><td class="description last"></td></tr><tr><td class="name"><code>3</code></td><td class="type"><span class="param-type">string</span></td><td class="default">creditCard</td><td class="description last"></td></tr><tr><td class="name"><code>4</code></td><td class="type"><span class="param-type">string</span></td><td class="default">dataUri</td><td class="description last"></td></tr><tr><td class="name"><code>5</code></td><td class="type"><span class="param-type">string</span></td><td class="default">email</td><td class="description last"></td></tr><tr><td class="name"><code>6</code></td><td class="type"><span class="param-type">string</span></td><td class="default">guid</td><td class="description last"></td></tr><tr><td class="name"><code>7</code></td><td class="type"><span class="param-type">string</span></td><td class="default">uuid</td><td class="description last"></td></tr><tr><td class="name"><code>8</code></td><td class="type"><span class="param-type">string</span></td><td class="default">hex</td><td class="description last"></td></tr><tr><td class="name"><code>9</code></td><td class="type"><span class="param-type">string</span></td><td class="default">hostname</td><td class="description last"></td></tr><tr><td class="name"><code>10</code></td><td class="type"><span class="param-type">string</span></td><td class="default">insenstive</td><td class="description last"></td></tr><tr><td class="name"><code>11</code></td><td class="type"><span class="param-type">string</span></td><td class="default">ip</td><td class="description last"></td></tr><tr><td class="name"><code>12</code></td><td class="type"><span class="param-type">string</span></td><td class="default">isoDate</td><td class="description last"></td></tr><tr><td class="name"><code>13</code></td><td class="type"><span class="param-type">string</span></td><td class="default">isoDuration</td><td class="description last"></td></tr><tr><td class="name"><code>14</code></td><td class="type"><span class="param-type">string</span></td><td class="default">length</td><td class="description last"></td></tr><tr><td class="name"><code>15</code></td><td class="type"><span class="param-type">string</span></td><td class="default">lowercase</td><td class="description last"></td></tr><tr><td class="name"><code>16</code></td><td class="type"><span class="param-type">string</span></td><td class="default">max</td><td class="description last"></td></tr><tr><td class="name"><code>17</code></td><td class="type"><span class="param-type">string</span></td><td class="default">min</td><td class="description last"></td></tr><tr><td class="name"><code>18</code></td><td class="type"><span class="param-type">string</span></td><td class="default">normalize</td><td class="description last"></td></tr><tr><td class="name"><code>19</code></td><td class="type"><span class="param-type">string</span></td><td class="default">pattern</td><td class="description last"></td></tr><tr><td class="name"><code>20</code></td><td class="type"><span class="param-type">string</span></td><td class="default">regex</td><td class="description last"></td></tr><tr><td class="name"><code>21</code></td><td class="type"><span class="param-type">string</span></td><td class="default">replace</td><td class="description last"></td></tr><tr><td class="name"><code>22</code></td><td class="type"><span class="param-type">string</span></td><td class="default">token</td><td class="description last"></td></tr><tr><td class="name"><code>23</code></td><td class="type"><span class="param-type">string</span></td><td class="default">trim</td><td class="description last"></td></tr><tr><td class="name"><code>24</code></td><td class="type"><span class="param-type">string</span></td><td class="default">truncate</td><td class="description last"></td></tr><tr><td class="name"><code>25</code></td><td class="type"><span class="param-type">string</span></td><td class="default">upercase</td><td class="description last"></td></tr><tr><td class="name"><code>26</code></td><td class="type"><span class="param-type">string</span></td><td class="default">uri</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line6">line 6</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".TValidatorTimestamp">TValidatorTimestamp</h3><div class="description"><p>List of available timestamp validators to check against model's properties and rules</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>0</code></td><td class="type"><span class="param-type">string</span></td><td class="default">timestamp</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="lib_factory_model_validate.js.html">lib/factory/model/validate.js</a>, <a href="lib_factory_model_validate.js.html#line75">line 75</a></li></ul></dd></div></dl></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><a href="/" class="sidebar-title sidebar-title-anchor">Dobo API</a><div class="mobile-nav-links"><div class="navbar-item"><a id="" href="https://www.npmjs.com/package/dobo" target="">NPM</a></div><div class="navbar-item"><a id="" href="https://github.com/ardhi/dobo" target="">Github</a></div><div class="navbar-item"><a id="" href="https://dobo.bajo.app/" target="">Dobo</a></div><div class="navbar-item"><a id="" href="https://bajo.app/" target="">Bajo</a></div></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="Dobo.html">Dobo</a></div><div class="sidebar-section-children"><a href="DoboAction.html">DoboAction</a></div><div class="sidebar-section-children"><a href="DoboAdapter.html">DoboAdapter</a></div><div class="sidebar-section-children"><a href="DoboConnection.html">DoboConnection</a></div><div class="sidebar-section-children"><a href="DoboFeature.html">DoboFeature</a></div><div class="sidebar-section-children"><a href="DoboModel.html">DoboModel</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-Helper.html">Helper</a></div><div class="sidebar-section-children"><a href="module-Helper_Model.html">Helper/Model</a></div><div class="sidebar-section-children"><a href="module-Hook.html">Hook</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-externals"><div>Externals</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="external-Tools.html">Tools</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#actionFactory">actionFactory</a></div><div class="sidebar-section-children"><a href="global.html#adapterFactory">adapterFactory</a></div><div class="sidebar-section-children"><a href="global.html#connectionFactory">connectionFactory</a></div><div class="sidebar-section-children"><a href="global.html#featureFactory">featureFactory</a></div><div class="sidebar-section-children"><a href="global.html#modelFactory">modelFactory</a></div><div class="sidebar-section-children"><a href="global.html#pluginFactory">pluginFactory</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>