@node-c/persistance-rdb 1.0.0-alpha1 → 1.0.0-alpha3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/clover.xml +864 -0
  4. package/coverage/common/definitions/common.constants.ts.html +103 -0
  5. package/coverage/common/definitions/index.html +131 -0
  6. package/coverage/common/definitions/index.ts.html +88 -0
  7. package/coverage/coverage-final.json +12 -0
  8. package/coverage/entityService/index.html +131 -0
  9. package/coverage/entityService/index.ts.html +91 -0
  10. package/coverage/entityService/rdb.entity.service.ts.html +1126 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/index.html +176 -0
  13. package/coverage/module/index.html +131 -0
  14. package/coverage/module/index.ts.html +91 -0
  15. package/coverage/module/rdb.module.ts.html +241 -0
  16. package/coverage/prettify.css +1 -0
  17. package/coverage/prettify.js +2 -0
  18. package/coverage/repository/index.html +131 -0
  19. package/coverage/repository/index.ts.html +91 -0
  20. package/coverage/repository/rdb.repository.module.ts.html +172 -0
  21. package/coverage/sort-arrow-sprite.png +0 -0
  22. package/coverage/sorter.js +196 -0
  23. package/coverage/sqlQueryBuilder/index.html +146 -0
  24. package/coverage/sqlQueryBuilder/index.ts.html +94 -0
  25. package/coverage/sqlQueryBuilder/sqlQueryBuilder.module.ts.html +163 -0
  26. package/coverage/sqlQueryBuilder/sqlQueryBuilder.service.ts.html +1534 -0
  27. package/dist/common/definitions/common.constants.js +1 -1
  28. package/dist/common/definitions/common.constants.js.map +1 -1
  29. package/dist/entityService/rdb.entity.service.d.ts +5 -5
  30. package/dist/entityService/rdb.entity.service.definitions.d.ts +6 -6
  31. package/dist/entityService/rdb.entity.service.definitions.js +1 -1
  32. package/dist/entityService/rdb.entity.service.definitions.js.map +1 -1
  33. package/dist/entityService/rdb.entity.service.js +1 -1
  34. package/dist/entityService/rdb.entity.service.js.map +1 -1
  35. package/dist/repository/rdb.repository.module.js +2 -2
  36. package/dist/repository/rdb.repository.module.js.map +1 -1
  37. package/dist/sqlQueryBuilder/sqlQueryBuilder.module.js +2 -2
  38. package/dist/sqlQueryBuilder/sqlQueryBuilder.module.js.map +1 -1
  39. package/dist/sqlQueryBuilder/sqlQueryBuilder.service.d.ts +4 -4
  40. package/dist/sqlQueryBuilder/sqlQueryBuilder.service.js +17 -16
  41. package/dist/sqlQueryBuilder/sqlQueryBuilder.service.js.map +1 -1
  42. package/package.json +2 -4
@@ -0,0 +1,1126 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for entityService/rdb.entity.service.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">entityService</a> rdb.entity.service.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>292/292</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">95.95% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>95/99</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>13/13</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>292/292</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-yes">1x</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-yes">1x</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-yes">1x</span>
449
+ <span class="cline-any cline-neutral">&nbsp;</span>
450
+ <span class="cline-any cline-yes">43x</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-yes">43x</span>
453
+ <span class="cline-any cline-yes">43x</span>
454
+ <span class="cline-any cline-yes">43x</span>
455
+ <span class="cline-any cline-yes">43x</span>
456
+ <span class="cline-any cline-yes">43x</span>
457
+ <span class="cline-any cline-yes">43x</span>
458
+ <span class="cline-any cline-yes">43x</span>
459
+ <span class="cline-any cline-yes">88x</span>
460
+ <span class="cline-any cline-yes">44x</span>
461
+ <span class="cline-any cline-yes">44x</span>
462
+ <span class="cline-any cline-yes">88x</span>
463
+ <span class="cline-any cline-yes">43x</span>
464
+ <span class="cline-any cline-yes">43x</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-yes">1x</span>
467
+ <span class="cline-any cline-yes">6x</span>
468
+ <span class="cline-any cline-yes">6x</span>
469
+ <span class="cline-any cline-yes">6x</span>
470
+ <span class="cline-any cline-yes">6x</span>
471
+ <span class="cline-any cline-yes">5x</span>
472
+ <span class="cline-any cline-yes">5x</span>
473
+ <span class="cline-any cline-yes">5x</span>
474
+ <span class="cline-any cline-yes">5x</span>
475
+ <span class="cline-any cline-yes">5x</span>
476
+ <span class="cline-any cline-yes">5x</span>
477
+ <span class="cline-any cline-yes">5x</span>
478
+ <span class="cline-any cline-yes">5x</span>
479
+ <span class="cline-any cline-yes">5x</span>
480
+ <span class="cline-any cline-yes">1x</span>
481
+ <span class="cline-any cline-yes">1x</span>
482
+ <span class="cline-any cline-yes">1x</span>
483
+ <span class="cline-any cline-yes">2x</span>
484
+ <span class="cline-any cline-yes">2x</span>
485
+ <span class="cline-any cline-yes">4x</span>
486
+ <span class="cline-any cline-yes">4x</span>
487
+ <span class="cline-any cline-yes">4x</span>
488
+ <span class="cline-any cline-yes">2x</span>
489
+ <span class="cline-any cline-yes">2x</span>
490
+ <span class="cline-any cline-yes">1x</span>
491
+ <span class="cline-any cline-yes">1x</span>
492
+ <span class="cline-any cline-yes">6x</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-yes">1x</span>
495
+ <span class="cline-any cline-yes">3x</span>
496
+ <span class="cline-any cline-yes">3x</span>
497
+ <span class="cline-any cline-yes">3x</span>
498
+ <span class="cline-any cline-yes">1x</span>
499
+ <span class="cline-any cline-yes">1x</span>
500
+ <span class="cline-any cline-yes">1x</span>
501
+ <span class="cline-any cline-yes">1x</span>
502
+ <span class="cline-any cline-yes">2x</span>
503
+ <span class="cline-any cline-yes">3x</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-yes">1x</span>
506
+ <span class="cline-any cline-yes">6x</span>
507
+ <span class="cline-any cline-yes">6x</span>
508
+ <span class="cline-any cline-yes">6x</span>
509
+ <span class="cline-any cline-yes">1x</span>
510
+ <span class="cline-any cline-yes">1x</span>
511
+ <span class="cline-any cline-yes">1x</span>
512
+ <span class="cline-any cline-yes">1x</span>
513
+ <span class="cline-any cline-yes">5x</span>
514
+ <span class="cline-any cline-yes">5x</span>
515
+ <span class="cline-any cline-yes">6x</span>
516
+ <span class="cline-any cline-yes">3x</span>
517
+ <span class="cline-any cline-yes">3x</span>
518
+ <span class="cline-any cline-yes">2x</span>
519
+ <span class="cline-any cline-yes">2x</span>
520
+ <span class="cline-any cline-yes">2x</span>
521
+ <span class="cline-any cline-yes">2x</span>
522
+ <span class="cline-any cline-yes">2x</span>
523
+ <span class="cline-any cline-yes">2x</span>
524
+ <span class="cline-any cline-yes">1x</span>
525
+ <span class="cline-any cline-yes">1x</span>
526
+ <span class="cline-any cline-yes">6x</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-yes">1x</span>
529
+ <span class="cline-any cline-yes">3x</span>
530
+ <span class="cline-any cline-yes">3x</span>
531
+ <span class="cline-any cline-yes">1x</span>
532
+ <span class="cline-any cline-yes">1x</span>
533
+ <span class="cline-any cline-yes">1x</span>
534
+ <span class="cline-any cline-yes">1x</span>
535
+ <span class="cline-any cline-yes">2x</span>
536
+ <span class="cline-any cline-yes">2x</span>
537
+ <span class="cline-any cline-yes">2x</span>
538
+ <span class="cline-any cline-yes">2x</span>
539
+ <span class="cline-any cline-yes">2x</span>
540
+ <span class="cline-any cline-yes">2x</span>
541
+ <span class="cline-any cline-yes">2x</span>
542
+ <span class="cline-any cline-yes">3x</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-yes">1x</span>
545
+ <span class="cline-any cline-yes">5x</span>
546
+ <span class="cline-any cline-yes">5x</span>
547
+ <span class="cline-any cline-yes">1x</span>
548
+ <span class="cline-any cline-yes">1x</span>
549
+ <span class="cline-any cline-yes">1x</span>
550
+ <span class="cline-any cline-yes">1x</span>
551
+ <span class="cline-any cline-yes">4x</span>
552
+ <span class="cline-any cline-yes">4x</span>
553
+ <span class="cline-any cline-yes">5x</span>
554
+ <span class="cline-any cline-yes">5x</span>
555
+ <span class="cline-any cline-yes">5x</span>
556
+ <span class="cline-any cline-yes">5x</span>
557
+ <span class="cline-any cline-yes">5x</span>
558
+ <span class="cline-any cline-yes">1x</span>
559
+ <span class="cline-any cline-yes">1x</span>
560
+ <span class="cline-any cline-yes">1x</span>
561
+ <span class="cline-any cline-yes">5x</span>
562
+ <span class="cline-any cline-yes">3x</span>
563
+ <span class="cline-any cline-yes">3x</span>
564
+ <span class="cline-any cline-yes">4x</span>
565
+ <span class="cline-any cline-yes">4x</span>
566
+ <span class="cline-any cline-yes">5x</span>
567
+ <span class="cline-any cline-yes">5x</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-yes">1x</span>
570
+ <span class="cline-any cline-yes">8x</span>
571
+ <span class="cline-any cline-yes">8x</span>
572
+ <span class="cline-any cline-yes">8x</span>
573
+ <span class="cline-any cline-yes">8x</span>
574
+ <span class="cline-any cline-yes">8x</span>
575
+ <span class="cline-any cline-yes">8x</span>
576
+ <span class="cline-any cline-yes">8x</span>
577
+ <span class="cline-any cline-yes">8x</span>
578
+ <span class="cline-any cline-yes">8x</span>
579
+ <span class="cline-any cline-yes">8x</span>
580
+ <span class="cline-any cline-yes">8x</span>
581
+ <span class="cline-any cline-yes">8x</span>
582
+ <span class="cline-any cline-yes">1x</span>
583
+ <span class="cline-any cline-yes">1x</span>
584
+ <span class="cline-any cline-yes">1x</span>
585
+ <span class="cline-any cline-yes">1x</span>
586
+ <span class="cline-any cline-yes">8x</span>
587
+ <span class="cline-any cline-yes">8x</span>
588
+ <span class="cline-any cline-yes">8x</span>
589
+ <span class="cline-any cline-yes">8x</span>
590
+ <span class="cline-any cline-yes">8x</span>
591
+ <span class="cline-any cline-yes">8x</span>
592
+ <span class="cline-any cline-yes">8x</span>
593
+ <span class="cline-any cline-yes">8x</span>
594
+ <span class="cline-any cline-yes">8x</span>
595
+ <span class="cline-any cline-yes">8x</span>
596
+ <span class="cline-any cline-yes">8x</span>
597
+ <span class="cline-any cline-yes">7x</span>
598
+ <span class="cline-any cline-yes">7x</span>
599
+ <span class="cline-any cline-yes">7x</span>
600
+ <span class="cline-any cline-yes">7x</span>
601
+ <span class="cline-any cline-yes">8x</span>
602
+ <span class="cline-any cline-yes">8x</span>
603
+ <span class="cline-any cline-yes">1x</span>
604
+ <span class="cline-any cline-yes">1x</span>
605
+ <span class="cline-any cline-yes">1x</span>
606
+ <span class="cline-any cline-yes">1x</span>
607
+ <span class="cline-any cline-yes">7x</span>
608
+ <span class="cline-any cline-yes">8x</span>
609
+ <span class="cline-any cline-yes">6x</span>
610
+ <span class="cline-any cline-yes">6x</span>
611
+ <span class="cline-any cline-yes">6x</span>
612
+ <span class="cline-any cline-yes">6x</span>
613
+ <span class="cline-any cline-yes">7x</span>
614
+ <span class="cline-any cline-yes">8x</span>
615
+ <span class="cline-any cline-yes">1x</span>
616
+ <span class="cline-any cline-yes">8x</span>
617
+ <span class="cline-any cline-yes">2x</span>
618
+ <span class="cline-any cline-yes">2x</span>
619
+ <span class="cline-any cline-yes">2x</span>
620
+ <span class="cline-any cline-yes">7x</span>
621
+ <span class="cline-any cline-yes">7x</span>
622
+ <span class="cline-any cline-yes">8x</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-yes">1x</span>
625
+ <span class="cline-any cline-yes">5x</span>
626
+ <span class="cline-any cline-yes">5x</span>
627
+ <span class="cline-any cline-yes">5x</span>
628
+ <span class="cline-any cline-yes">5x</span>
629
+ <span class="cline-any cline-yes">5x</span>
630
+ <span class="cline-any cline-yes">5x</span>
631
+ <span class="cline-any cline-yes">5x</span>
632
+ <span class="cline-any cline-yes">5x</span>
633
+ <span class="cline-any cline-yes">5x</span>
634
+ <span class="cline-any cline-yes">5x</span>
635
+ <span class="cline-any cline-yes">1x</span>
636
+ <span class="cline-any cline-yes">1x</span>
637
+ <span class="cline-any cline-yes">1x</span>
638
+ <span class="cline-any cline-yes">1x</span>
639
+ <span class="cline-any cline-yes">4x</span>
640
+ <span class="cline-any cline-yes">4x</span>
641
+ <span class="cline-any cline-yes">4x</span>
642
+ <span class="cline-any cline-yes">4x</span>
643
+ <span class="cline-any cline-yes">4x</span>
644
+ <span class="cline-any cline-yes">4x</span>
645
+ <span class="cline-any cline-yes">4x</span>
646
+ <span class="cline-any cline-yes">5x</span>
647
+ <span class="cline-any cline-yes">5x</span>
648
+ <span class="cline-any cline-yes">5x</span>
649
+ <span class="cline-any cline-yes">1x</span>
650
+ <span class="cline-any cline-yes">1x</span>
651
+ <span class="cline-any cline-yes">1x</span>
652
+ <span class="cline-any cline-yes">4x</span>
653
+ <span class="cline-any cline-yes">4x</span>
654
+ <span class="cline-any cline-yes">5x</span>
655
+ <span class="cline-any cline-neutral">&nbsp;</span>
656
+ <span class="cline-any cline-yes">1x</span>
657
+ <span class="cline-any cline-yes">1x</span>
658
+ <span class="cline-any cline-yes">1x</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-yes">1x</span>
661
+ <span class="cline-any cline-yes">23x</span>
662
+ <span class="cline-any cline-yes">22x</span>
663
+ <span class="cline-any cline-yes">22x</span>
664
+ <span class="cline-any cline-yes">1x</span>
665
+ <span class="cline-any cline-yes">23x</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-yes">1x</span>
670
+ <span class="cline-any cline-yes">6x</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-yes">6x</span>
678
+ <span class="cline-any cline-yes">6x</span>
679
+ <span class="cline-any cline-yes">6x</span>
680
+ <span class="cline-any cline-yes">6x</span>
681
+ <span class="cline-any cline-yes">6x</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-yes">6x</span>
684
+ <span class="cline-any cline-yes">1x</span>
685
+ <span class="cline-any cline-yes">1x</span>
686
+ <span class="cline-any cline-yes">1x</span>
687
+ <span class="cline-any cline-yes">1x</span>
688
+ <span class="cline-any cline-yes">5x</span>
689
+ <span class="cline-any cline-yes">5x</span>
690
+ <span class="cline-any cline-yes">5x</span>
691
+ <span class="cline-any cline-yes">5x</span>
692
+ <span class="cline-any cline-yes">5x</span>
693
+ <span class="cline-any cline-yes">5x</span>
694
+ <span class="cline-any cline-yes">6x</span>
695
+ <span class="cline-any cline-yes">6x</span>
696
+ <span class="cline-any cline-yes">3x</span>
697
+ <span class="cline-any cline-yes">1x</span>
698
+ <span class="cline-any cline-yes">3x</span>
699
+ <span class="cline-any cline-yes">2x</span>
700
+ <span class="cline-any cline-yes">2x</span>
701
+ <span class="cline-any cline-yes">3x</span>
702
+ <span class="cline-any cline-yes">3x</span>
703
+ <span class="cline-any cline-yes">3x</span>
704
+ <span class="cline-any cline-yes">6x</span>
705
+ <span class="cline-any cline-yes">1x</span>
706
+ <span class="cline-any cline-yes">6x</span>
707
+ <span class="cline-any cline-yes">2x</span>
708
+ <span class="cline-any cline-yes">2x</span>
709
+ <span class="cline-any cline-yes">3x</span>
710
+ <span class="cline-any cline-yes">5x</span>
711
+ <span class="cline-any cline-yes">6x</span>
712
+ <span class="cline-any cline-yes">2x</span>
713
+ <span class="cline-any cline-yes">2x</span>
714
+ <span class="cline-any cline-yes">6x</span>
715
+ <span class="cline-any cline-yes">2x</span>
716
+ <span class="cline-any cline-yes">2x</span>
717
+ <span class="cline-any cline-yes">6x</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-yes">1x</span>
720
+ <span class="cline-any cline-yes">2x</span>
721
+ <span class="cline-any cline-yes">2x</span>
722
+ <span class="cline-any cline-yes">2x</span>
723
+ <span class="cline-any cline-yes">2x</span>
724
+ <span class="cline-any cline-yes">1x</span>
725
+ <span class="cline-any cline-yes">1x</span>
726
+ <span class="cline-any cline-yes">1x</span>
727
+ <span class="cline-any cline-yes">2x</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-yes">1x</span>
730
+ <span class="cline-any cline-yes">5x</span>
731
+ <span class="cline-any cline-yes">5x</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-yes">1x</span>
734
+ <span class="cline-any cline-yes">1x</span>
735
+ <span class="cline-any cline-yes">1x</span>
736
+ <span class="cline-any cline-yes">4x</span>
737
+ <span class="cline-any cline-yes">4x</span>
738
+ <span class="cline-any cline-yes">4x</span>
739
+ <span class="cline-any cline-yes">4x</span>
740
+ <span class="cline-any cline-yes">4x</span>
741
+ <span class="cline-any cline-yes">4x</span>
742
+ <span class="cline-any cline-yes">4x</span>
743
+ <span class="cline-any cline-yes">4x</span>
744
+ <span class="cline-any cline-yes">5x</span>
745
+ <span class="cline-any cline-yes">2x</span>
746
+ <span class="cline-any cline-yes">2x</span>
747
+ <span class="cline-any cline-yes">2x</span>
748
+ <span class="cline-any cline-yes">2x</span>
749
+ <span class="cline-any cline-yes">2x</span>
750
+ <span class="cline-any cline-yes">2x</span>
751
+ <span class="cline-any cline-yes">4x</span>
752
+ <span class="cline-any cline-yes">5x</span>
753
+ <span class="cline-any cline-yes">1x</span>
754
+ <span class="cline-any cline-yes">1x</span>
755
+ <span class="cline-any cline-yes">1x</span>
756
+ <span class="cline-any cline-yes">3x</span>
757
+ <span class="cline-any cline-yes">5x</span>
758
+ <span class="cline-any cline-yes">5x</span>
759
+ <span class="cline-any cline-yes">1x</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
761
+ ApplicationError,
762
+ GenericObject,
763
+ PersistanceDeleteResult,
764
+ PersistanceEntityService,
765
+ PersistanceFindResults,
766
+ PersistanceNumberItem,
767
+ PersistanceSelectOperator,
768
+ PersistanceUpdateResult
769
+ } from '@node-c/core';
770
+ &nbsp;
771
+ import { DeepPartial, EntityManager, EntitySchema, EntityTarget, ObjectLiteral, Repository } from 'typeorm';
772
+ import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity';
773
+ &nbsp;
774
+ import {
775
+ BulkCreateOptions,
776
+ CountOptions,
777
+ CreateOptions,
778
+ DeleteOptions,
779
+ FindOneOptions,
780
+ FindOptions,
781
+ PostgresErrorCode,
782
+ UpdateOptions
783
+ } from './rdb.entity.service.definitions';
784
+ &nbsp;
785
+ import { IncludeItems, OrderBy, ParsedFilter, SQLQueryBuilderService } from '../sqlQueryBuilder';
786
+ &nbsp;
787
+ // TODO: investigate whether it's worth it to make the create, bulkCreate and update methods more specific
788
+ // with generic data objects for the data passed to them
789
+ // TODO: support for the "select" options in find and findOne (a.k.a. which fields to return)
790
+ // TODO: enforce the above to be always set to the primary key for the count method
791
+ // TODO: support update of multiple items in the update method
792
+ export class RDBEntityService&lt;Entity extends ObjectLiteral&gt; extends PersistanceEntityService&lt;Entity&gt; {
793
+ protected primaryKeys: string[];
794
+ &nbsp;
795
+ constructor(
796
+ // eslint-disable-next-line no-unused-vars
797
+ protected qb: SQLQueryBuilderService,
798
+ // eslint-disable-next-line no-unused-vars
799
+ protected repository: Repository&lt;Entity&gt;,
800
+ protected schema: EntitySchema
801
+ ) {
802
+ super();
803
+ const { columns } = schema.options;
804
+ const primaryKeys: string[] = [];
805
+ for (const columnName in columns) {
806
+ if (columns[columnName]?.primary) {
807
+ primaryKeys.push(columnName);
808
+ }
809
+ }
810
+ this.primaryKeys = primaryKeys;
811
+ }
812
+ &nbsp;
813
+ protected buildPrimaryKeyWhereClause(data: Entity[]): { field: string; value: ParsedFilter } {
814
+ const { primaryKeys, qb, repository } = this;
815
+ const { columnQuotesSymbol: cqs } = qb;
816
+ const tableName = repository.metadata.tableName;
817
+ if (primaryKeys.length === 1) {
818
+ const [primaryKey] = primaryKeys;
819
+ return {
820
+ field: primaryKey,
821
+ value: {
822
+ params: { [primaryKey]: data.map(item =&gt; item[primaryKey]) },
823
+ query: `${cqs}${tableName}${cqs}.${cqs}${primaryKey}${cqs} in :${primaryKey}`
824
+ }
825
+ };
826
+ }
827
+ const params: GenericObject&lt;unknown&gt; = {};
828
+ const query: string[] = [];
829
+ data.forEach((item, itemIndex) =&gt; {
830
+ const innerQuery: string[] = [];
831
+ primaryKeys.forEach(fieldName =&gt; {
832
+ const primaryKeyName = `${fieldName}${itemIndex}`;
833
+ params[primaryKeyName] = item[fieldName];
834
+ innerQuery.push(`${cqs}${tableName}${cqs}.${cqs}${fieldName}${cqs} = :${primaryKeyName}`);
835
+ });
836
+ query.push(`(${innerQuery.join(' and ')})`);
837
+ });
838
+ return { field: PersistanceSelectOperator.Or, value: { params, query: `(${query.join(' or ')})` } };
839
+ }
840
+ &nbsp;
841
+ async bulkCreate(data: Entity[], options?: BulkCreateOptions): Promise&lt;Entity[]&gt; {
842
+ const actualOptions = Object.assign(<span class="branch-0 cbranch-no" title="branch not covered" >options || {})</span> as BulkCreateOptions;
843
+ const { forceTransaction, transactionManager } = actualOptions;
844
+ if (!transactionManager &amp;&amp; forceTransaction) {
845
+ return this.repository.manager.transaction(tm =&gt; {
846
+ return this.bulkCreate(data, { ...actualOptions, transactionManager: tm });
847
+ });
848
+ }
849
+ return await this.save(data, transactionManager);
850
+ }
851
+ &nbsp;
852
+ async create(data: Entity, options?: CreateOptions): Promise&lt;Entity&gt; {
853
+ const actualOptions = Object.assign(<span class="branch-0 cbranch-no" title="branch not covered" >options || {})</span> as CreateOptions;
854
+ const { forceTransaction, transactionManager } = actualOptions;
855
+ if (!transactionManager &amp;&amp; forceTransaction) {
856
+ return this.repository.manager.transaction(tm =&gt; {
857
+ return this.create(data, { ...actualOptions, transactionManager: tm });
858
+ });
859
+ }
860
+ try {
861
+ return await this.save(data, transactionManager);
862
+ } catch (e) {
863
+ const error = e as Record&lt;string, unknown&gt;;
864
+ if (error.code === PostgresErrorCode.UniqueViolation) {
865
+ const extractVariableName = new RegExp(/^Key \((.*)\)\=(.*)$/g);
866
+ const result = extractVariableName.exec(error.detail as string);
867
+ throw new ApplicationError(
868
+ `${error.table}: ${result ? result[1] : 'a column value you have provided'} needs to be unique`
869
+ );
870
+ }
871
+ throw e;
872
+ }
873
+ }
874
+ &nbsp;
875
+ async count(options: CountOptions): Promise&lt;number | undefined&gt; {
876
+ const { filters, forceTransaction, transactionManager, withDeleted = false } = options;
877
+ if (!transactionManager &amp;&amp; forceTransaction) {
878
+ return this.repository.manager.transaction(tm =&gt; {
879
+ return this.count({ ...options, transactionManager: tm });
880
+ });
881
+ }
882
+ const entityName = this.repository.metadata.name;
883
+ const tableName = this.repository.metadata.name;
884
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
885
+ const { where, include: includeFromFilters } = this.qb.parseFilters(tableName, filters!);
886
+ const include = this.qb.parseRelations(tableName, [], includeFromFilters);
887
+ this.qb.buildQuery&lt;Entity&gt;(queryBuilder, { where, include, withDeleted });
888
+ return await queryBuilder.getCount();
889
+ }
890
+ &nbsp;
891
+ async delete(options: DeleteOptions): Promise&lt;PersistanceDeleteResult&gt; {
892
+ const { filters, forceTransaction, transactionManager, softDelete = true } = options;
893
+ if (!transactionManager &amp;&amp; forceTransaction) {
894
+ return this.repository.manager.transaction(tm =&gt; {
895
+ return this.delete({ ...options, transactionManager: tm });
896
+ });
897
+ }
898
+ const entityName = this.repository.metadata.name;
899
+ const tableName = this.repository.metadata.tableName;
900
+ const deleteType = softDelete ? 'softDelete' : 'delete';
901
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName)[deleteType]();
902
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, filters);
903
+ let where: { [fieldName: string]: ParsedFilter } = {};
904
+ if (Object.keys(include).length) {
905
+ const findData = await this.find({ filters, transactionManager });
906
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
907
+ where[field] = value;
908
+ } else {
909
+ where = parsedWhere;
910
+ }
911
+ this.qb.buildQuery&lt;Entity&gt;(queryBuilder, { where });
912
+ const result = await queryBuilder.execute();
913
+ return { count: typeof result.affected === 'number' ? result.<span class="branch-0 cbranch-no" title="branch not covered" >affected : undefined }</span>;
914
+ }
915
+ &nbsp;
916
+ async find(options: FindOptions): Promise&lt;PersistanceFindResults&lt;Entity&gt;&gt; {
917
+ const {
918
+ filters,
919
+ forceTransaction,
920
+ page: optPage,
921
+ perPage: optPerPage,
922
+ findAll: optFindAll,
923
+ include: optRelations,
924
+ orderBy: optOrderBy,
925
+ transactionManager,
926
+ withDeleted = false
927
+ } = options;
928
+ if (!transactionManager &amp;&amp; forceTransaction) {
929
+ return this.repository.manager.transaction(tm =&gt; {
930
+ return this.find({ ...options, transactionManager: tm });
931
+ });
932
+ }
933
+ const page = optPage ? parseInt(optPage as unknown as string, 10) : 1; // make sure it's truly a number - it could come as string from GET requests
934
+ const perPage = optPerPage ? parseInt(optPerPage as unknown as string, 10) : 10; // same as above - must be a number
935
+ const findAll = optFindAll === true || (optFindAll as unknown) === 'true';
936
+ const findResults: PersistanceFindResults&lt;Entity&gt; = { page: 1, perPage: 0, items: [], more: false };
937
+ const entityName = this.repository.metadata.name;
938
+ const tableName = this.repository.metadata.name;
939
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
940
+ let where: { [fieldName: string]: ParsedFilter } = {};
941
+ let include: IncludeItems = {};
942
+ let orderBy: OrderBy[] = [];
943
+ if (filters) {
944
+ const parsedFiltersData = this.qb.parseFilters(tableName, filters);
945
+ where = { ...parsedFiltersData.where };
946
+ include = { ...parsedFiltersData.include };
947
+ }
948
+ include = this.qb.parseRelations(tableName, optRelations || [], include);
949
+ if (optOrderBy) {
950
+ const parsedOrderByData = this.qb.parseOrderBy(tableName, optOrderBy);
951
+ include = { ...parsedOrderByData.include, ...include };
952
+ orderBy = [...parsedOrderByData.orderBy];
953
+ }
954
+ this.qb.buildQuery&lt;Entity&gt;(queryBuilder, { where, include, orderBy, withDeleted });
955
+ if (!findAll) {
956
+ queryBuilder.skip((page - 1) * perPage).take(perPage + 1);
957
+ findResults.page = page;
958
+ findResults.perPage = perPage;
959
+ }
960
+ const items: Entity[] = await queryBuilder.getMany();
961
+ if (findAll) {
962
+ findResults.perPage = items.length;
963
+ } else if (items.length === perPage + 1) {
964
+ items.pop();
965
+ findResults.more = true;
966
+ }
967
+ findResults.items = items;
968
+ return findResults;
969
+ }
970
+ &nbsp;
971
+ async findOne(options: FindOneOptions): Promise&lt;Entity | null&gt; {
972
+ const {
973
+ filters,
974
+ forceTransaction,
975
+ transactionManager,
976
+ selectOperator,
977
+ include: optRelations,
978
+ orderBy: optOrderBy,
979
+ withDeleted = false
980
+ } = options;
981
+ if (!transactionManager &amp;&amp; forceTransaction) {
982
+ return this.repository.manager.transaction(tm =&gt; {
983
+ return this.findOne({ ...options, transactionManager: tm });
984
+ });
985
+ }
986
+ const entityName = this.repository.metadata.name;
987
+ const tableName = this.repository.metadata.name;
988
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
989
+ const { where, include: includeFromFilters } = this.qb.parseFilters(tableName, filters, {
990
+ operator: selectOperator as PersistanceSelectOperator,
991
+ isTopLevel: true
992
+ });
993
+ const include = this.qb.parseRelations(tableName, optRelations || [], includeFromFilters);
994
+ let orderBy: OrderBy[] = [];
995
+ if (optOrderBy) {
996
+ const parsedOrderByData = this.qb.parseOrderBy(tableName, optOrderBy);
997
+ orderBy = [...parsedOrderByData.orderBy];
998
+ }
999
+ this.qb.buildQuery&lt;Entity&gt;(queryBuilder, { where, include, orderBy, withDeleted });
1000
+ return await queryBuilder.getOne();
1001
+ }
1002
+ &nbsp;
1003
+ getEntityTarget(): EntityTarget&lt;Entity&gt; {
1004
+ return this.repository.target;
1005
+ }
1006
+ &nbsp;
1007
+ protected getRepository(transactionManager?: EntityManager): Repository&lt;Entity&gt; {
1008
+ if (transactionManager) {
1009
+ return transactionManager.getRepository&lt;Entity&gt;(this.repository.target);
1010
+ }
1011
+ return this.repository;
1012
+ }
1013
+ &nbsp;
1014
+ // TODO: introduce this in the bulkCreate, create, update and delete methods
1015
+ // TODO: support a primary key that's not "id", as well as multiple primary keys
1016
+ protected async processManyToMany(
1017
+ data: {
1018
+ counterpartColumn: string;
1019
+ currentEntityColumn: string;
1020
+ id: number;
1021
+ items: PersistanceNumberItem[];
1022
+ tableName: string;
1023
+ },
1024
+ options?: { transactionManager?: EntityManager }
1025
+ ): Promise&lt;void&gt; {
1026
+ const { currentEntityColumn, id, counterpartColumn, items, tableName } = data;
1027
+ const actualOptions = options || {};
1028
+ const { transactionManager } = actualOptions;
1029
+ // the transaction here is mandatory
1030
+ if (!transactionManager) {
1031
+ return this.repository.manager.transaction(tm =&gt; {
1032
+ return this.processManyToMany(data, { ...actualOptions, transactionManager: tm });
1033
+ });
1034
+ }
1035
+ const { columnQuotesSymbol: cqs } = this.qb;
1036
+ let deleteQuery = `delete from ${cqs}${tableName}${cqs} where `;
1037
+ let runDeleteQuery = false;
1038
+ let insertQuery = `insert into ${cqs}${tableName}${cqs} (${cqs}${currentEntityColumn}${cqs}, ${cqs}${counterpartColumn}${cqs}) values `;
1039
+ let runInsertQuery = false;
1040
+ items.forEach(item =&gt; {
1041
+ const { deleted, value } = item;
1042
+ if (deleted) {
1043
+ if (runDeleteQuery) {
1044
+ deleteQuery += ' or ';
1045
+ } else {
1046
+ runDeleteQuery = true;
1047
+ }
1048
+ deleteQuery += `(${cqs}${currentEntityColumn}${cqs} = ${id} and ${cqs}${counterpartColumn}${cqs} = ${value})`;
1049
+ return;
1050
+ }
1051
+ if (runInsertQuery) {
1052
+ insertQuery += ', ';
1053
+ } else {
1054
+ runInsertQuery = true;
1055
+ }
1056
+ insertQuery += `(${id}, ${value})`;
1057
+ });
1058
+ if (runDeleteQuery) {
1059
+ await transactionManager.query(deleteQuery);
1060
+ }
1061
+ if (runInsertQuery) {
1062
+ await transactionManager.query(`${insertQuery} on conflict do nothing`);
1063
+ }
1064
+ }
1065
+ &nbsp;
1066
+ protected async save&lt;Data = unknown, ReturnData = unknown&gt;(
1067
+ data: Data,
1068
+ transactionManager?: EntityManager
1069
+ ): Promise&lt;ReturnData&gt; {
1070
+ if (transactionManager) {
1071
+ return (await transactionManager.save(this.repository.target, data as DeepPartial&lt;Entity&gt;)) as ReturnData;
1072
+ }
1073
+ return this.repository.save(data as DeepPartial&lt;Entity&gt;) as ReturnData;
1074
+ }
1075
+ &nbsp;
1076
+ async update(data: Entity, options: UpdateOptions): Promise&lt;PersistanceUpdateResult&lt;Entity&gt;&gt; {
1077
+ const { filters, forceTransaction, returnData, transactionManager } = options;
1078
+ if (!transactionManager &amp;&amp; forceTransaction) {
1079
+ return this.repository.manager.transaction(tm =&gt; {
1080
+ return this.update(data, { ...options, transactionManager: tm });
1081
+ });
1082
+ }
1083
+ const entityName = this.repository.metadata.name;
1084
+ const tableName = this.repository.metadata.tableName;
1085
+ const queryBuilder = this.getRepository(transactionManager)
1086
+ .createQueryBuilder(entityName)
1087
+ .update()
1088
+ .set(data as unknown as QueryDeepPartialEntity&lt;unknown&gt;);
1089
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, filters);
1090
+ let where: { [fieldName: string]: ParsedFilter } = {};
1091
+ if (Object.keys(include).length) {
1092
+ const findData = await this.find({ filters, transactionManager });
1093
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
1094
+ where[field] = value;
1095
+ } else {
1096
+ where = parsedWhere;
1097
+ }
1098
+ this.qb.buildQuery&lt;Entity&gt;(queryBuilder, { where });
1099
+ if (returnData) {
1100
+ const result = await queryBuilder.returning('*').execute();
1101
+ return { items: result.raw };
1102
+ }
1103
+ const result = await queryBuilder.execute();
1104
+ return { count: typeof result.affected === 'number' ? result.<span class="branch-0 cbranch-no" title="branch not covered" >affected : undefined }</span>;
1105
+ }
1106
+ }
1107
+ &nbsp;</pre></td></tr></table></pre>
1108
+
1109
+ <div class='push'></div><!-- for sticky footer -->
1110
+ </div><!-- /wrapper -->
1111
+ <div class='footer quiet pad2 space-top1 center small'>
1112
+ Code coverage generated by
1113
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1114
+ at 2025-03-20T21:05:41.984Z
1115
+ </div>
1116
+ <script src="../prettify.js"></script>
1117
+ <script>
1118
+ window.onload = function () {
1119
+ prettyPrint();
1120
+ };
1121
+ </script>
1122
+ <script src="../sorter.js"></script>
1123
+ <script src="../block-navigation.js"></script>
1124
+ </body>
1125
+ </html>
1126
+