emilsoftware-utilities 2.0.0-dev.22 → 2.0.0-dev.23

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 (379) hide show
  1. package/dist/DailyFileTransport.d.ts +15 -0
  2. package/dist/DailyFileTransport.js +67 -0
  3. package/dist/DailyFileTransport.js.map +1 -0
  4. package/dist/DatabaseUpdater.js +0 -2
  5. package/dist/DatabaseUpdater.js.map +1 -1
  6. package/dist/ExecutionTimeLogger.js +2 -2
  7. package/dist/ExecutionTimeLogger.js.map +1 -1
  8. package/dist/Logger.d.ts +0 -2
  9. package/dist/Logger.js +6 -70
  10. package/dist/Logger.js.map +1 -1
  11. package/dist/Utilities.d.ts +8 -3
  12. package/dist/Utilities.js +61 -16
  13. package/dist/Utilities.js.map +1 -1
  14. package/dist/accessi-module/AccessiModule.d.ts +60 -0
  15. package/dist/accessi-module/AccessiModule.js +21 -5
  16. package/dist/accessi-module/AccessiModule.js.map +1 -1
  17. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  18. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  19. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  20. package/dist/accessi-module/Console/console.css +370 -0
  21. package/dist/accessi-module/Console/console.d.ts +1 -0
  22. package/dist/accessi-module/Console/console.js +1105 -0
  23. package/dist/accessi-module/Console/console.js.map +1 -0
  24. package/dist/accessi-module/Console/generated/accessiApi.d.ts +376 -0
  25. package/dist/accessi-module/Console/generated/accessiApi.js +363 -0
  26. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  27. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +27 -0
  28. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  29. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  30. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  31. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  32. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  33. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  34. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  35. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  37. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  38. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  39. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  40. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  41. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  42. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  43. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  44. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  45. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  46. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  47. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  48. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  49. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  50. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  51. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  52. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  53. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  54. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  55. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  56. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  57. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  58. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  59. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  60. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  61. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  62. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  63. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  64. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  65. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  66. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  67. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  68. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  69. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  70. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  71. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  72. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  73. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  74. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  75. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  76. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  77. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  78. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  79. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  80. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  81. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  82. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  83. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  84. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  85. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  86. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  87. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  88. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  89. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  90. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  91. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  92. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  93. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  94. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  95. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  96. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  97. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  98. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  99. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  100. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  101. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  102. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  103. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  104. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  105. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  106. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  107. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  108. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  109. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  110. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  111. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +24 -0
  112. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  113. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  115. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  116. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  118. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  119. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  121. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  122. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  124. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  125. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/index.d.ts +75 -0
  127. package/dist/accessi-module/Console/generated/model/index.js +92 -0
  128. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  130. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  136. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  137. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  139. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  140. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  142. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  143. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  145. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  146. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  148. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  151. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  154. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  157. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  158. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  160. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  161. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  163. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  164. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  166. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  169. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  172. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  173. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  181. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  184. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  185. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  188. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  190. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  191. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  193. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  194. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  196. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  197. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  199. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  200. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  202. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  203. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  205. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  206. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  208. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  209. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  211. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  212. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  214. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  217. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  220. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  221. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  223. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  226. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  227. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  229. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  235. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  236. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  237. package/dist/accessi-module/Console/index.html +59 -0
  238. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +11 -0
  239. package/dist/accessi-module/Controllers/AccessiConsoleController.js +74 -0
  240. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  241. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -1
  242. package/dist/accessi-module/Controllers/AuthController.js +86 -47
  243. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  244. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -1
  245. package/dist/accessi-module/Controllers/ConfiguratorController.js +3 -1
  246. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  247. package/dist/accessi-module/Controllers/EmailController.d.ts +1 -1
  248. package/dist/accessi-module/Controllers/EmailController.js +3 -1
  249. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  250. package/dist/accessi-module/Controllers/FiltriController.d.ts +1 -1
  251. package/dist/accessi-module/Controllers/FiltriController.js +3 -1
  252. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  253. package/dist/accessi-module/Controllers/PermissionController.d.ts +1 -1
  254. package/dist/accessi-module/Controllers/PermissionController.js +9 -5
  255. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  256. package/dist/accessi-module/Controllers/UserController.d.ts +3 -1
  257. package/dist/accessi-module/Controllers/UserController.js +40 -2
  258. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  259. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -1
  260. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  261. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +3 -0
  262. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +18 -0
  263. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  264. package/dist/accessi-module/Dtos/BaseResponse.d.ts +2 -0
  265. package/dist/accessi-module/Dtos/BaseResponse.js +21 -2
  266. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  267. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  268. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  269. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  270. package/dist/accessi-module/Dtos/FiltriUtente.js +4 -1
  271. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  272. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  273. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  274. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  275. package/dist/accessi-module/Dtos/LoginResponse.d.ts +5 -1
  276. package/dist/accessi-module/Dtos/LoginResponse.js +19 -6
  277. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  278. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  279. package/dist/accessi-module/Dtos/Permission.js +1 -0
  280. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  281. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +1 -1
  282. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +1 -0
  283. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -1
  284. package/dist/accessi-module/Dtos/RegisterRequest.js +1 -0
  285. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  286. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  287. package/dist/accessi-module/Dtos/Role.js +4 -0
  288. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  289. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  290. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  291. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  292. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  293. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  294. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  295. package/dist/accessi-module/Dtos/UserDto.d.ts +7 -0
  296. package/dist/accessi-module/Dtos/UserDto.js +22 -0
  297. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  298. package/dist/accessi-module/Dtos/index.d.ts +2 -0
  299. package/dist/accessi-module/Dtos/index.js +2 -0
  300. package/dist/accessi-module/Dtos/index.js.map +1 -1
  301. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +39 -4
  302. package/dist/accessi-module/Services/AuthService/AuthService.js +184 -32
  303. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  304. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  305. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  306. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  307. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +7 -1
  308. package/dist/accessi-module/Services/EmailService/EmailService.js +23 -5
  309. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  310. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +9 -1
  311. package/dist/accessi-module/Services/FiltriService/FiltriService.js +29 -4
  312. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  313. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +29 -1
  314. package/dist/accessi-module/Services/PermissionService/PermissionService.js +38 -7
  315. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  316. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  317. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +179 -0
  318. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  319. package/dist/accessi-module/Services/UserService/UserService.d.ts +26 -2
  320. package/dist/accessi-module/Services/UserService/UserService.js +124 -30
  321. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  322. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +38 -10
  323. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +368 -184
  324. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  325. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  326. package/dist/accessi-module/database-updates/accessiSchema.js +79 -0
  327. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  328. package/dist/accessi-module/database-updates/optionalColumns.d.ts +5 -0
  329. package/dist/accessi-module/database-updates/optionalColumns.js +26 -0
  330. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  331. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +11 -6
  332. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  333. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +23 -0
  334. package/dist/accessi-module/federated-auth/FederatedAuthController.js +307 -0
  335. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  336. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +94 -0
  337. package/dist/accessi-module/federated-auth/FederatedAuthService.js +424 -0
  338. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  339. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  340. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  341. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  342. package/dist/accessi-module/index.d.ts +14 -0
  343. package/dist/accessi-module/index.js +18 -10
  344. package/dist/accessi-module/index.js.map +1 -1
  345. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  346. package/dist/accessi-module/jwt/jwt.strategy.js +10 -4
  347. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  348. package/dist/accessi-module/middleware/accessiRequirements.d.ts +22 -0
  349. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  350. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  351. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  352. package/dist/accessi-module/middleware/authenticateGen.js +54 -20
  353. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  354. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  355. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  356. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  357. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  358. package/dist/accessi-module/security/accessControl.js +11 -1
  359. package/dist/accessi-module/security/accessControl.js.map +1 -1
  360. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  361. package/dist/accessi-module/security/accessiValidation.js +41 -0
  362. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  363. package/dist/accessi-module/security/authenticatedToken.d.ts +14 -0
  364. package/dist/accessi-module/security/authenticatedToken.js +30 -4
  365. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  366. package/dist/accessi-module/security/passwordResetToken.d.ts +5 -1
  367. package/dist/accessi-module/security/passwordResetToken.js +5 -1
  368. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  369. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +2 -2
  370. package/dist/accessi-module/security/publicAuthRateLimit.js +2 -0
  371. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  372. package/dist/emilsoftware-utilities-2.0.0-dev.23.tgz +0 -0
  373. package/dist/initEmilsoftwareModule.js +7 -0
  374. package/dist/initEmilsoftwareModule.js.map +1 -1
  375. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  376. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  377. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  378. package/package.json +13 -4
  379. package/dist/emilsoftware-utilities-2.0.0-dev.22.tgz +0 -0
@@ -27,227 +27,411 @@ const common_1 = require("@nestjs/common");
27
27
  const DatabaseUpdater_1 = require("../../DatabaseUpdater");
28
28
  const Orm_1 = require("../../Orm");
29
29
  const Logger_1 = require("../../Logger");
30
+ const accessiSchema_1 = require("./accessiSchema");
31
+ /** Reconciles the actual schema; version labels never bypass verification. */
30
32
  let AccessiDatabaseUpdater = AccessiDatabaseUpdater_1 = class AccessiDatabaseUpdater extends DatabaseUpdater_1.DatabaseUpdater {
31
33
  constructor(accessiOptions) {
32
34
  super();
33
35
  this.accessiOptions = accessiOptions;
34
36
  }
35
37
  onModuleInit() {
38
+ return __awaiter(this, void 0, void 0, function* () { yield AccessiDatabaseUpdater_1.initialize(this.accessiOptions); });
39
+ }
40
+ /** Shared bootstrap barrier for services in the same Nest module. Failed attempts may be retried. */
41
+ static initialize(options) {
42
+ let pending = this.initialization.get(options);
43
+ if (!pending) {
44
+ pending = options.autoUpdateDatabase === false ? this.assertCompatible(options) : this.run(options);
45
+ this.initialization.set(options, pending);
46
+ const cleanup = () => this.initialization.delete(options);
47
+ pending.then(cleanup, cleanup);
48
+ }
49
+ return pending;
50
+ }
51
+ static getLatestVersion() { return accessiSchema_1.ACCESSI_SCHEMA_VERSION; }
52
+ static getCurrentVersion(options) {
36
53
  return __awaiter(this, void 0, void 0, function* () {
37
- if (this.accessiOptions.autoUpdateDatabase === false) {
38
- AccessiDatabaseUpdater_1.logger.info("Aggiornamento automatico database accessi disabilitato da configurazione.");
39
- return;
40
- }
41
- AccessiDatabaseUpdater_1.logger.info("Avvio updater database accessi.");
42
- yield AccessiDatabaseUpdater_1.run(this.accessiOptions);
43
- AccessiDatabaseUpdater_1.logger.info("Updater database accessi completato.");
54
+ var _a, _b, _c;
55
+ if (!(yield this.tableExists(options.databaseOptions, 'PARAMETRI')))
56
+ return null;
57
+ const rows = yield Orm_1.Orm.query(options.databaseOptions, 'SELECT DESPAR FROM PARAMETRI WHERE CODPAR = ?', [accessiSchema_1.ACCESSI_VERSION_KEY], false);
58
+ return (_c = (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.DESPAR) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : null;
44
59
  });
45
60
  }
61
+ /** Serialize callers targeting the same database in this process. Cross-process DDL is a deployment concern. */
46
62
  static run(options) {
63
+ var _a, _b, _c;
64
+ const db = options.databaseOptions;
65
+ const key = JSON.stringify([(_a = db.host) !== null && _a !== void 0 ? _a : 'localhost', (_b = db.port) !== null && _b !== void 0 ? _b : 3050, db.database]);
66
+ const previous = (_c = this.running.get(key)) !== null && _c !== void 0 ? _c : Promise.resolve();
67
+ const pending = previous.catch(() => { }).then(() => this.reconcile(options));
68
+ this.running.set(key, pending);
69
+ const cleanup = () => { if (this.running.get(key) === pending)
70
+ this.running.delete(key); };
71
+ pending.then(cleanup, cleanup);
72
+ return pending;
73
+ }
74
+ static query(options_1, sql_1) {
75
+ return __awaiter(this, arguments, void 0, function* (options, sql, params = []) {
76
+ return Orm_1.Orm.query(options.databaseOptions, sql, params, false);
77
+ });
78
+ }
79
+ static execute(options_1, sql_1) {
80
+ return __awaiter(this, arguments, void 0, function* (options, sql, params = []) {
81
+ try {
82
+ yield Orm_1.Orm.execute(options.databaseOptions, sql, params, false);
83
+ }
84
+ catch (error) {
85
+ throw new Error(`Migrazione Accessi interrotta: ${sql}. ${error.message}. Correggere lo schema/dati indicati e rilanciare; la versione non e stata avanzata.`);
86
+ }
87
+ });
88
+ }
89
+ static relationIssues(options) {
47
90
  return __awaiter(this, void 0, void 0, function* () {
48
- var _a, _b, _c;
49
- const startedAt = performance.now();
50
- this.logger.info(`Verifica schema accessi su ${(_a = options.databaseOptions.host) !== null && _a !== void 0 ? _a : "?"}:${(_b = options.databaseOptions.port) !== null && _b !== void 0 ? _b : "?"} -> ${(_c = options.databaseOptions.database) !== null && _c !== void 0 ? _c : "?"}`);
51
- yield this.createParametersTable(options.databaseOptions);
52
- this.logger.info("Tabella PARAMETRI verificata.");
53
- const currentVersion = yield this.getDatabaseVersion(options.databaseOptions);
54
- const currentIndex = this.updates.findIndex((update) => update.toVersion === currentVersion);
55
- const startIndex = currentIndex >= 0 ? currentIndex + 1 : 0;
56
- if (currentVersion && currentIndex === this.updates.length - 1) {
57
- this.logger.info(`Database accessi gia' all'ultima versione disponibile (${currentVersion}).`);
58
- }
59
- else if (currentVersion && currentIndex >= 0) {
60
- this.logger.info(`Database accessi rilevato alla versione ${currentVersion}.`);
61
- }
62
- else if (currentVersion) {
63
- this.logger.warning(`Versione database accessi non riconosciuta (${currentVersion}). Verifico tutti gli update idempotenti.`);
64
- }
65
- else {
66
- this.logger.warning("Versione database accessi assente. Verifico tutti gli update idempotenti.");
67
- }
68
- for (let index = startIndex; index < this.updates.length; index++) {
69
- const update = this.updates[index];
70
- const stepStartedAt = performance.now();
71
- this.logger.info(`Applico aggiornamento accessi ${update.fromVersion} -> ${update.toVersion}: ${update.description}`);
72
- yield update.apply(options);
73
- yield this.setDatabaseVersion(options.databaseOptions, update.toVersion);
74
- this.logger.info(`Aggiornamento accessi ${update.toVersion} completato in ${(performance.now() - stepStartedAt).toFixed(2)} ms`);
75
- }
76
- this.logger.info(`Verifica/aggiornamento database accessi completato in ${(performance.now() - startedAt).toFixed(2)} ms`);
91
+ const rows = yield this.query(options, `SELECT TRIM(RDB$RELATION_NAME) AS NAME, COALESCE(RDB$RELATION_TYPE, 0) AS KIND
92
+ FROM RDB$RELATIONS WHERE COALESCE(RDB$SYSTEM_FLAG, 0) = 0`);
93
+ return rows.filter(row => accessiSchema_1.accessiTables[row.NAME] && Number(row.KIND) !== 0).map(row => `${row.NAME}: richiesta tabella persistente, trovato tipo relazione ${row.KIND}`);
77
94
  });
78
95
  }
79
- static getCurrentVersion(options) {
96
+ static engineIssue(options) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ var _a, _b;
99
+ const rows = yield this.query(options, "SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') AS ENGINE_VERSION FROM RDB$DATABASE");
100
+ const version = String((_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.ENGINE_VERSION) !== null && _b !== void 0 ? _b : 'sconosciuta');
101
+ if (!(Number.parseInt(version, 10) >= 3))
102
+ return `Firebird ${version}: lo schema Accessi richiede Firebird 3.0 o successivo`;
103
+ });
104
+ }
105
+ static columns(options) {
80
106
  return __awaiter(this, void 0, void 0, function* () {
81
- return yield this.getDatabaseVersion(options.databaseOptions);
107
+ return this.query(options, `SELECT TRIM(RF.RDB$RELATION_NAME) AS TABLE_NAME, TRIM(RF.RDB$FIELD_NAME) AS COLUMN_NAME,
108
+ F.RDB$FIELD_TYPE AS FIELD_TYPE, F.RDB$FIELD_SUB_TYPE AS SUB_TYPE, F.RDB$FIELD_SCALE AS FIELD_SCALE,
109
+ F.RDB$CHARACTER_LENGTH AS TEXT_LENGTH, TRIM(CS.RDB$CHARACTER_SET_NAME) AS CHARSET_NAME,
110
+ COALESCE(RF.RDB$NULL_FLAG, F.RDB$NULL_FLAG, 0) AS NOT_NULL,
111
+ CAST(COALESCE(RF.RDB$DEFAULT_SOURCE, F.RDB$DEFAULT_SOURCE) AS VARCHAR(1024)) AS DEFAULT_SOURCE,
112
+ CASE WHEN F.RDB$COMPUTED_BLR IS NULL THEN 0 ELSE 1 END AS IS_COMPUTED
113
+ FROM RDB$RELATION_FIELDS RF JOIN RDB$FIELDS F ON F.RDB$FIELD_NAME = RF.RDB$FIELD_SOURCE
114
+ LEFT JOIN RDB$CHARACTER_SETS CS ON CS.RDB$CHARACTER_SET_ID = F.RDB$CHARACTER_SET_ID
115
+ WHERE RF.RDB$RELATION_NAME IN (${Object.keys(accessiSchema_1.accessiTables).map(name => `'${name}'`).join(', ')})`);
82
116
  });
83
117
  }
84
- static getLatestVersion() {
118
+ static defaultValue(definition) {
119
+ var _a;
120
+ return (_a = /\bDEFAULT\s+('[^']*'|\S+)/i.exec(definition)) === null || _a === void 0 ? void 0 : _a[1];
121
+ }
122
+ static typeIssue(row, definition) {
85
123
  var _a, _b;
86
- return (_b = (_a = this.updates[this.updates.length - 1]) === null || _a === void 0 ? void 0 : _a.toVersion) !== null && _b !== void 0 ? _b : "0.0.0";
124
+ if (Number(row.IS_COMPUTED))
125
+ return 'colonna calcolata invece di scrivibile';
126
+ const stringLength = /^(?:VAR)?CHAR\((\d+)\)/.exec(definition);
127
+ if (stringLength) {
128
+ if (![14, 37].includes(Number(row.FIELD_TYPE)))
129
+ return `richiesto testo (${definition})`;
130
+ if (Number(row.TEXT_LENGTH) < Number(stringLength[1]))
131
+ return `lunghezza ${row.TEXT_LENGTH}, richiesta almeno ${stringLength[1]}`;
132
+ const charset = (_a = /CHARACTER SET (\w+)/.exec(definition)) === null || _a === void 0 ? void 0 : _a[1];
133
+ if (charset && ((_b = row.CHARSET_NAME) === null || _b === void 0 ? void 0 : _b.trim()) !== charset)
134
+ return `character set ${row.CHARSET_NAME}, richiesto ${charset}`;
135
+ }
136
+ else if (/^(SMALLINT|INTEGER)/.test(definition)) {
137
+ const acceptable = definition.startsWith('SMALLINT') ? [7, 8, 16] : [8, 16];
138
+ if (!acceptable.includes(Number(row.FIELD_TYPE)) || Number(row.FIELD_SCALE) !== 0)
139
+ return `richiesto intero (${definition})`;
140
+ }
141
+ else if (definition.startsWith('DATE')) {
142
+ if (![12, 35].includes(Number(row.FIELD_TYPE)))
143
+ return 'richiesto DATE o TIMESTAMP';
144
+ }
145
+ else if (definition.startsWith('TIMESTAMP')) {
146
+ if (Number(row.FIELD_TYPE) !== 35)
147
+ return 'richiesto TIMESTAMP';
148
+ }
149
+ else if (definition.startsWith('BLOB')) {
150
+ if (Number(row.FIELD_TYPE) !== 261 || Number(row.SUB_TYPE) !== 1)
151
+ return 'richiesto BLOB testuale';
152
+ }
153
+ return undefined;
87
154
  }
88
- static ensureColumn(options, tableName, columnDefinition, columnName, comment) {
155
+ static constraints(options) {
89
156
  return __awaiter(this, void 0, void 0, function* () {
90
- const exists = yield this.columnExists(options.databaseOptions, tableName, columnName);
91
- if (!exists) {
92
- yield Orm_1.Orm.execute(options.databaseOptions, `ALTER TABLE ${tableName} ADD ${columnDefinition}`);
93
- }
94
- if (comment) {
95
- yield Orm_1.Orm.execute(options.databaseOptions, `COMMENT ON COLUMN ${tableName}.${columnName} IS '${comment.replace(/'/g, "''")}'`);
96
- }
97
- return !exists;
157
+ return this.query(options, `SELECT TRIM(C.RDB$CONSTRAINT_NAME) AS NAME, TRIM(C.RDB$RELATION_NAME) AS TABLE_NAME,
158
+ TRIM(C.RDB$CONSTRAINT_TYPE) AS KIND, TRIM(S.RDB$FIELD_NAME) AS COLUMN_NAME, S.RDB$FIELD_POSITION AS POS,
159
+ TRIM(T.RDB$RELATION_NAME) AS TARGET_TABLE, TRIM(TS.RDB$FIELD_NAME) AS TARGET_COLUMN,
160
+ TRIM(R.RDB$DELETE_RULE) AS DELETE_RULE
161
+ FROM RDB$RELATION_CONSTRAINTS C
162
+ LEFT JOIN RDB$INDEX_SEGMENTS S ON S.RDB$INDEX_NAME = C.RDB$INDEX_NAME
163
+ LEFT JOIN RDB$REF_CONSTRAINTS R ON R.RDB$CONSTRAINT_NAME = C.RDB$CONSTRAINT_NAME
164
+ LEFT JOIN RDB$RELATION_CONSTRAINTS T ON T.RDB$CONSTRAINT_NAME = R.RDB$CONST_NAME_UQ
165
+ LEFT JOIN RDB$INDEX_SEGMENTS TS ON TS.RDB$INDEX_NAME = T.RDB$INDEX_NAME AND TS.RDB$FIELD_POSITION = S.RDB$FIELD_POSITION
166
+ ORDER BY C.RDB$CONSTRAINT_NAME, S.RDB$FIELD_POSITION`);
98
167
  });
99
168
  }
100
- static upsertFiltroTipo(options, tipfil, desfil, fldfil, flgEnabled) {
169
+ static groups(rows) {
170
+ var _a;
171
+ const groups = new Map();
172
+ for (const row of rows)
173
+ groups.set(row.NAME, [...((_a = groups.get(row.NAME)) !== null && _a !== void 0 ? _a : []), row]);
174
+ return Array.from(groups.values());
175
+ }
176
+ static checks(options) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ return this.query(options, `SELECT DISTINCT TRIM(C.RDB$CONSTRAINT_NAME) AS NAME,
179
+ TRIM(C.RDB$RELATION_NAME) AS TABLE_NAME, CAST(T.RDB$TRIGGER_SOURCE AS VARCHAR(2048)) AS CHECK_SOURCE
180
+ FROM RDB$RELATION_CONSTRAINTS C JOIN RDB$CHECK_CONSTRAINTS K ON K.RDB$CONSTRAINT_NAME = C.RDB$CONSTRAINT_NAME
181
+ JOIN RDB$TRIGGERS T ON T.RDB$TRIGGER_NAME = K.RDB$TRIGGER_NAME
182
+ WHERE C.RDB$CONSTRAINT_TYPE = 'CHECK'`);
183
+ });
184
+ }
185
+ static sameCheck(source, expression) {
186
+ const normalize = (s) => s.replace(/^\s*CHECK\s*/i, '').replace(/[\s()]/g, '').toUpperCase();
187
+ return normalize(source !== null && source !== void 0 ? source : '') === normalize(expression);
188
+ }
189
+ static indexes(options) {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ return this.groups(yield this.query(options, `SELECT TRIM(I.RDB$INDEX_NAME) AS NAME, TRIM(I.RDB$RELATION_NAME) AS TABLE_NAME,
192
+ COALESCE(I.RDB$INDEX_INACTIVE, 0) AS INACTIVE, TRIM(S.RDB$FIELD_NAME) AS COLUMN_NAME
193
+ FROM RDB$INDICES I LEFT JOIN RDB$INDEX_SEGMENTS S ON S.RDB$INDEX_NAME = I.RDB$INDEX_NAME
194
+ ORDER BY I.RDB$INDEX_NAME, S.RDB$FIELD_POSITION`));
195
+ });
196
+ }
197
+ static sameColumns(rows, columns) {
198
+ return rows.map(row => row.COLUMN_NAME).join(',') === columns.join(',');
199
+ }
200
+ static triggers(options) {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ return this.query(options, `SELECT TRIM(RDB$TRIGGER_NAME) AS NAME, TRIM(RDB$RELATION_NAME) AS TABLE_NAME,
203
+ RDB$TRIGGER_INACTIVE AS INACTIVE, RDB$TRIGGER_TYPE AS TRIGGER_TYPE,
204
+ CAST(RDB$TRIGGER_SOURCE AS VARCHAR(8191)) AS SOURCE
205
+ FROM RDB$TRIGGERS WHERE COALESCE(RDB$SYSTEM_FLAG, 0) = 0
206
+ AND RDB$RELATION_NAME IN (${Object.keys(accessiSchema_1.accessiTables).map(name => `'${name}'`).join(', ')})`);
207
+ });
208
+ }
209
+ /** Accept historical formatting and renamed triggers, but require the operations used by Accessi. */
210
+ static compatibleTrigger(row, trigger) {
211
+ var _a;
212
+ if (row.TABLE_NAME !== trigger.table || Number(row.INACTIVE) || Number(row.TRIGGER_TYPE) !== trigger.type)
213
+ return false;
214
+ const source = String((_a = row.SOURCE) !== null && _a !== void 0 ? _a : '').replace(/\/\*[\s\S]*?\*\//g, '').replace(/--[^\r\n]*/g, '').replace(/[\s()]/g, '').toUpperCase();
215
+ const required = {
216
+ UTENTI_BI: ['IFNEW.CODUTEISNULL', 'NEW.CODUTE=GEN_IDGEN_UTENTI_ID,1', 'NEW.DATINS=CURRENT_TIMESTAMP'],
217
+ RUOLI_BI: ['IFNEW.CODRUOISNULL', 'NEW.CODRUO=GEN_IDGEN_RUOLI_ID,1'],
218
+ FILTRI_BI0: ['IFNEW.PROGISNULL', 'MAXPROG', 'FROMFILTRIWHERECODUTE=NEW.CODUTE', 'NEW.PROG=TOT+1'],
219
+ UTENTI_GDPR_BI0: ['NEW.DATACC=CURRENT_TIMESTAMP', 'UPDATEUTENTISETFLGGDPR=1', 'DATGDPR=CURRENT_TIMESTAMP', 'WHERECODUTE=NEW.CODUTE'],
220
+ };
221
+ return required[trigger.name].every(fragment => source.includes(fragment));
222
+ }
223
+ static futureVersionIssue(options, columns) {
101
224
  return __awaiter(this, void 0, void 0, function* () {
102
- const hasEnabledColumn = yield this.columnExists(options.databaseOptions, "FILTRI_TIPO", "FLGENABLED");
103
- const existing = yield Orm_1.Orm.query(options.databaseOptions, "SELECT TIPFIL FROM FILTRI_TIPO WHERE TIPFIL = ?", [tipfil]);
104
- if (existing.length === 0) {
105
- if (hasEnabledColumn && flgEnabled !== undefined) {
106
- yield Orm_1.Orm.execute(options.databaseOptions, "INSERT INTO FILTRI_TIPO (TIPFIL, DESFIL, FLDFIL, FLGENABLED) VALUES (?, ?, ?, ?)", [tipfil, desfil, fldfil, flgEnabled]);
225
+ if (!['CODPAR', 'DESPAR'].every(name => columns.some(row => row.TABLE_NAME === 'PARAMETRI' && row.COLUMN_NAME === name)))
226
+ return;
227
+ const version = yield this.getCurrentVersion(options);
228
+ if (!version)
229
+ return;
230
+ if (!/^\d+\.\d+\.\d+$/.test(version))
231
+ return `Versione Accessi non riconosciuta: ${version}`;
232
+ const actual = version.split('.').map(Number), latest = accessiSchema_1.ACCESSI_SCHEMA_VERSION.split('.').map(Number);
233
+ for (let i = 0; i < 3; i++) {
234
+ if (actual[i] > latest[i])
235
+ return `Schema Accessi ${version} piu recente della libreria (${accessiSchema_1.ACCESSI_SCHEMA_VERSION}); downgrade automatico non consentito`;
236
+ if (actual[i] < latest[i])
107
237
  return;
238
+ }
239
+ });
240
+ }
241
+ /** Read-only diagnostics, including when automatic updates are disabled. */
242
+ static inspectSchema(options) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ const engine = yield this.engineIssue(options);
245
+ if (engine)
246
+ return { compatible: false, issues: [engine] };
247
+ const issues = yield this.relationIssues(options);
248
+ const columns = yield this.columns(options);
249
+ const future = yield this.futureVersionIssue(options, columns);
250
+ if (future)
251
+ issues.push(future);
252
+ for (const [table, schema] of Object.entries(accessiSchema_1.accessiTables)) {
253
+ const present = columns.filter(row => row.TABLE_NAME === table);
254
+ if (!present.length) {
255
+ issues.push(`Tabella mancante: ${table}`);
256
+ continue;
257
+ }
258
+ for (const [name, definition] of Object.entries(schema.columns)) {
259
+ const row = present.find(row => row.COLUMN_NAME === name);
260
+ if (!row) {
261
+ issues.push(`Colonna mancante: ${table}.${name}`);
262
+ continue;
263
+ }
264
+ const problem = this.typeIssue(row, definition);
265
+ if (problem)
266
+ issues.push(`${table}.${name}: ${problem}`);
267
+ if (definition.includes('NOT NULL') && !Number(row.NOT_NULL))
268
+ issues.push(`${table}.${name}: manca NOT NULL`);
269
+ const expected = this.defaultValue(definition);
270
+ if (expected && this.normalizeDefault(row.DEFAULT_SOURCE) !== this.normalizeDefault(expected))
271
+ issues.push(`${table}.${name}: richiesto DEFAULT ${expected}`);
108
272
  }
109
- yield Orm_1.Orm.execute(options.databaseOptions, "INSERT INTO FILTRI_TIPO (TIPFIL, DESFIL, FLDFIL) VALUES (?, ?, ?)", [tipfil, desfil, fldfil]);
110
- return;
111
273
  }
112
- if (hasEnabledColumn && flgEnabled !== undefined) {
113
- yield Orm_1.Orm.execute(options.databaseOptions, "UPDATE FILTRI_TIPO SET DESFIL = ?, FLDFIL = ?, FLGENABLED = COALESCE(FLGENABLED, ?) WHERE TIPFIL = ?", [desfil, fldfil, flgEnabled, tipfil]);
114
- return;
274
+ const checks = yield this.checks(options);
275
+ for (const check of accessiSchema_1.accessiChecks) {
276
+ if (!checks.some(row => row.TABLE_NAME === check.table && this.sameCheck(row.CHECK_SOURCE, check.expression)))
277
+ issues.push(`${check.table}: manca CHECK (${check.expression})`);
115
278
  }
116
- yield Orm_1.Orm.execute(options.databaseOptions, "UPDATE FILTRI_TIPO SET DESFIL = ?, FLDFIL = ? WHERE TIPFIL = ?", [desfil, fldfil, tipfil]);
279
+ const constraints = this.groups(yield this.constraints(options));
280
+ for (const [table, schema] of Object.entries(accessiSchema_1.accessiTables)) {
281
+ if (!constraints.some(rows => rows[0].TABLE_NAME === table && rows[0].KIND === 'PRIMARY KEY' && this.sameColumns(rows, schema.primaryKey)))
282
+ issues.push(`${table}: chiave primaria richiesta (${schema.primaryKey.join(', ')})`);
283
+ }
284
+ for (const fk of accessiSchema_1.accessiForeignKeys) {
285
+ if (!constraints.some(rows => rows.length === 1 && rows[0].KIND === 'FOREIGN KEY' && rows[0].TABLE_NAME === fk.table && rows[0].COLUMN_NAME === fk.column && rows[0].TARGET_TABLE === fk.target && rows[0].TARGET_COLUMN === fk.targetColumn && (fk.cascade ? rows[0].DELETE_RULE === 'CASCADE' : ['NO ACTION', 'RESTRICT'].includes(rows[0].DELETE_RULE))))
286
+ issues.push(`${fk.name}: manca FK compatibile ${fk.table}.${fk.column} -> ${fk.target}.${fk.targetColumn}`);
287
+ }
288
+ const indexes = yield this.indexes(options);
289
+ for (const index of accessiSchema_1.accessiIndexes) {
290
+ if (!indexes.some(rows => rows[0].TABLE_NAME === index.table && !Number(rows[0].INACTIVE) && this.sameColumns(rows, index.columns)))
291
+ issues.push(`${index.name}: indice mancante o inattivo`);
292
+ }
293
+ const triggers = yield this.triggers(options);
294
+ for (const trigger of accessiSchema_1.accessiTriggers) {
295
+ if (!triggers.some(row => this.compatibleTrigger(row, trigger)))
296
+ issues.push(`${trigger.name}: trigger richiesto attivo ${trigger.event} su ${trigger.table}, con le operazioni Accessi previste`);
297
+ }
298
+ for (const generator of accessiSchema_1.accessiGenerators) {
299
+ if (!(yield this.generatorExists(options.databaseOptions, generator.name)))
300
+ issues.push(`${generator.name}: sequence mancante`);
301
+ else if (columns.some(row => row.TABLE_NAME === generator.table && row.COLUMN_NAME === generator.column)) {
302
+ const rows = yield this.query(options, `SELECT GEN_ID(${generator.name}, 0) AS CURRENT_VALUE, (SELECT COALESCE(MAX(${generator.column}), 0) FROM ${generator.table}) AS MAX_VALUE FROM RDB$DATABASE`);
303
+ if (Number(rows[0].CURRENT_VALUE) < Number(rows[0].MAX_VALUE))
304
+ issues.push(`${generator.name}: sequence inferiore agli identificativi esistenti`);
305
+ }
306
+ }
307
+ return { compatible: issues.length === 0, issues };
117
308
  });
118
309
  }
119
- static upsertMenu(options, menu) {
310
+ static assertCompatible(options) {
120
311
  return __awaiter(this, void 0, void 0, function* () {
121
- const existing = yield Orm_1.Orm.query(options.databaseOptions, "SELECT CODMNU FROM MENU WHERE CODMNU = ?", [menu.CODMNU]);
122
- if (existing.length === 0) {
123
- yield Orm_1.Orm.execute(options.databaseOptions, `INSERT INTO MENU (CODMNU, DESMNU, CODGRP, FLGENABLED, ICON, ORDINE, CODTIP, PAGINA, RIFMENU)
124
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
125
- menu.CODMNU,
126
- menu.DESMNU,
127
- menu.CODGRP,
128
- menu.FLGENABLED,
129
- menu.ICON,
130
- menu.ORDINE,
131
- menu.CODTIP,
132
- menu.PAGINA,
133
- menu.RIFMENU,
134
- ]);
135
- return;
312
+ const report = yield this.inspectSchema(options);
313
+ if (!report.compatible)
314
+ throw new Error(`Schema database Accessi incompatibile:\n- ${report.issues.join('\n- ')}\nEseguire AccessiDatabaseUpdater.run con un utente autorizzato o correggere lo schema prima dell'avvio.`);
315
+ });
316
+ }
317
+ static normalizeDefault(value) {
318
+ return String(value !== null && value !== void 0 ? value : '').replace(/^\s*DEFAULT\s+/i, '').replace(/[()\s]/g, '').toUpperCase();
319
+ }
320
+ static reconcile(options) {
321
+ return __awaiter(this, void 0, void 0, function* () {
322
+ this.logger.info('Verifica dello schema effettivo Accessi.');
323
+ const engine = yield this.engineIssue(options);
324
+ if (engine)
325
+ throw new Error(engine);
326
+ const columns = yield this.columns(options);
327
+ const future = yield this.futureVersionIssue(options, columns);
328
+ if (future)
329
+ throw new Error(future);
330
+ // Detect incompatible existing definitions before making any changes. Never guess at data conversion.
331
+ const problems = yield this.relationIssues(options);
332
+ for (const [table, schema] of Object.entries(accessiSchema_1.accessiTables)) {
333
+ for (const [name, definition] of Object.entries(schema.columns)) {
334
+ const row = columns.find(row => row.TABLE_NAME === table && row.COLUMN_NAME === name);
335
+ if (row) {
336
+ const problem = this.typeIssue(row, definition);
337
+ if (problem)
338
+ problems.push(`${table}.${name}: ${problem}`);
339
+ }
340
+ }
341
+ }
342
+ if (problems.length)
343
+ throw new Error(`Schema Accessi richiede intervento sui tipi:\n- ${problems.join('\n- ')}`);
344
+ for (const [table, schema] of Object.entries(accessiSchema_1.accessiTables)) {
345
+ const present = columns.filter(row => row.TABLE_NAME === table);
346
+ if (!present.length) {
347
+ yield this.execute(options, `CREATE TABLE ${table} (${Object.entries(schema.columns).map(([name, definition]) => `${name} ${definition}`).join(', ')})`);
348
+ continue;
349
+ }
350
+ for (const [name, definition] of Object.entries(schema.columns)) {
351
+ const row = present.find(row => row.COLUMN_NAME === name);
352
+ if (!row) {
353
+ if (definition.includes('NOT NULL') && !this.defaultValue(definition)) {
354
+ const data = yield this.query(options, `SELECT FIRST 1 1 AS HAS_DATA FROM ${table}`);
355
+ if (data.length)
356
+ throw new Error(`Impossibile aggiungere ${table}.${name} obbligatoria: tabella popolata, serve un backfill esplicito. Nessun valore identificativo viene inventato.`);
357
+ }
358
+ yield this.execute(options, `ALTER TABLE ${table} ADD ${name} ${definition}`);
359
+ }
360
+ else {
361
+ const expected = this.defaultValue(definition);
362
+ if (expected && this.normalizeDefault(row.DEFAULT_SOURCE) !== this.normalizeDefault(expected))
363
+ yield this.execute(options, `ALTER TABLE ${table} ALTER ${name} SET DEFAULT ${expected}`);
364
+ if (definition.includes('NOT NULL') && !Number(row.NOT_NULL)) {
365
+ if (expected)
366
+ yield this.execute(options, `UPDATE ${table} SET ${name} = ${expected} WHERE ${name} IS NULL`);
367
+ yield this.execute(options, `ALTER TABLE ${table} ALTER ${name} SET NOT NULL`);
368
+ }
369
+ }
370
+ }
371
+ }
372
+ const constraints = this.groups(yield this.constraints(options));
373
+ for (const [table, schema] of Object.entries(accessiSchema_1.accessiTables)) {
374
+ const primary = constraints.find(rows => rows[0].TABLE_NAME === table && rows[0].KIND === 'PRIMARY KEY');
375
+ if (primary && !this.sameColumns(primary, schema.primaryKey))
376
+ throw new Error(`${table}: chiave primaria esistente incompatibile; nessun vincolo viene eliminato automaticamente.`);
377
+ if (!primary)
378
+ yield this.execute(options, `ALTER TABLE ${table} ADD CONSTRAINT PK_${table} PRIMARY KEY (${schema.primaryKey.join(', ')})`);
379
+ }
380
+ // Only preserve provider namespaces already referenced by historical SSO identities.
381
+ yield this.execute(options, `INSERT INTO SSO_PROVIDER (PROVIDER, DESCRIZIONE, FLGATTIVO)
382
+ SELECT DISTINCT I.PROVIDER, I.PROVIDER, 1 FROM UTENTI_IDENTITA_EXT I
383
+ WHERE NOT EXISTS (SELECT 1 FROM SSO_PROVIDER P WHERE P.PROVIDER = I.PROVIDER)`);
384
+ for (const fk of accessiSchema_1.accessiForeignKeys) {
385
+ const existing = constraints.find(rows => rows[0].KIND === 'FOREIGN KEY' && rows[0].TABLE_NAME === fk.table && this.sameColumns(rows, [fk.column]));
386
+ if (!existing)
387
+ yield this.execute(options, `ALTER TABLE ${fk.table} ADD CONSTRAINT ${fk.name} FOREIGN KEY (${fk.column}) REFERENCES ${fk.target} (${fk.targetColumn})${fk.cascade ? ' ON DELETE CASCADE' : ''}`);
388
+ }
389
+ const checks = yield this.checks(options);
390
+ for (const check of accessiSchema_1.accessiChecks) {
391
+ if (!checks.some(row => row.TABLE_NAME === check.table && this.sameCheck(row.CHECK_SOURCE, check.expression))) {
392
+ yield this.execute(options, `ALTER TABLE ${check.table} ADD CONSTRAINT ${check.name} CHECK (${check.expression})`);
393
+ }
394
+ }
395
+ const indexes = yield this.indexes(options);
396
+ for (const index of accessiSchema_1.accessiIndexes) {
397
+ if (!indexes.some(rows => rows[0].TABLE_NAME === index.table && !Number(rows[0].INACTIVE) && this.sameColumns(rows, index.columns))) {
398
+ if (indexes.some(rows => rows[0].NAME === index.name))
399
+ throw new Error(`${index.name}: indice esistente incompatibile o inattivo; correggerlo esplicitamente.`);
400
+ yield this.execute(options, `CREATE INDEX ${index.name} ON ${index.table} (${index.columns.join(', ')})`);
401
+ }
402
+ }
403
+ for (const generator of accessiSchema_1.accessiGenerators) {
404
+ if (!(yield this.generatorExists(options.databaseOptions, generator.name)))
405
+ yield this.execute(options, `CREATE SEQUENCE ${generator.name}`);
406
+ // Advance by a positive delta only: do not reset an existing sequence or reuse an allocated value.
407
+ yield this.execute(options, `EXECUTE BLOCK AS DECLARE VARIABLE MAX_ID BIGINT; DECLARE VARIABLE CURRENT_ID BIGINT; DECLARE VARIABLE NEXT_ID BIGINT;
408
+ BEGIN SELECT COALESCE(MAX(${generator.column}), 0) FROM ${generator.table} INTO :MAX_ID;
409
+ CURRENT_ID = GEN_ID(${generator.name}, 0);
410
+ IF (MAX_ID > CURRENT_ID) THEN NEXT_ID = GEN_ID(${generator.name}, MAX_ID - CURRENT_ID); END`);
411
+ }
412
+ const triggers = yield this.triggers(options);
413
+ for (const trigger of accessiSchema_1.accessiTriggers) {
414
+ if (!triggers.some(row => this.compatibleTrigger(row, trigger)) && !triggers.some(row => row.NAME === trigger.name)) {
415
+ if (triggers.some(row => row.TABLE_NAME === trigger.table && Number(row.TRIGGER_TYPE) === trigger.type)) {
416
+ throw new Error(`${trigger.table}: trigger ${trigger.event} personalizzato non riconosciuto; verificare le operazioni di ${trigger.name} prima di aggiungere trigger concorrenti.`);
417
+ }
418
+ yield this.execute(options, `CREATE TRIGGER ${trigger.name} FOR ${trigger.table} ACTIVE ${trigger.event} POSITION 0 ${trigger.body}`);
419
+ }
136
420
  }
137
- yield Orm_1.Orm.execute(options.databaseOptions, `UPDATE MENU
138
- SET DESMNU = ?,
139
- CODGRP = ?,
140
- FLGENABLED = COALESCE(FLGENABLED, ?),
141
- ICON = ?,
142
- ORDINE = ?,
143
- CODTIP = ?,
144
- PAGINA = ?,
145
- RIFMENU = ?
146
- WHERE CODMNU = ?`, [
147
- menu.DESMNU,
148
- menu.CODGRP,
149
- menu.FLGENABLED,
150
- menu.ICON,
151
- menu.ORDINE,
152
- menu.CODTIP,
153
- menu.PAGINA,
154
- menu.RIFMENU,
155
- menu.CODMNU,
156
- ]);
421
+ yield this.assertCompatible(options);
422
+ // The host's VersioneDB/DBVERSION values belong to the host and are never overwritten.
423
+ yield this.execute(options, 'UPDATE OR INSERT INTO PARAMETRI (CODPAR, DESPAR) VALUES (?, ?) MATCHING (CODPAR)', [accessiSchema_1.ACCESSI_VERSION_KEY, accessiSchema_1.ACCESSI_SCHEMA_VERSION]);
424
+ this.logger.info(`Schema Accessi verificato: ${accessiSchema_1.ACCESSI_SCHEMA_VERSION}.`);
157
425
  });
158
426
  }
159
427
  };
160
428
  exports.AccessiDatabaseUpdater = AccessiDatabaseUpdater;
161
429
  AccessiDatabaseUpdater.logger = new Logger_1.Logger(AccessiDatabaseUpdater_1.name);
162
- AccessiDatabaseUpdater.updates = [
163
- {
164
- fromVersion: "1.0.0",
165
- toVersion: "1.1.0",
166
- description: "Aggiunge filtro postazione, colonna IDXPOS e menu verifica RFID",
167
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
168
- yield AccessiDatabaseUpdater_1.upsertFiltroTipo(options, 20, "POSTAZIONE", "IDXPOS", undefined);
169
- yield AccessiDatabaseUpdater_1.ensureColumn(options, "FILTRI", "IDXPOS SMALLINT", "IDXPOS", "idx della postazione nella tabella ANTENNE_POS di PROLAV");
170
- yield AccessiDatabaseUpdater_1.upsertMenu(options, {
171
- CODMNU: "MNUVERRFID",
172
- DESMNU: "Verifica RFID",
173
- CODGRP: "F",
174
- FLGENABLED: 1,
175
- ICON: "hardware-chip-outline",
176
- ORDINE: 10,
177
- CODTIP: "M",
178
- PAGINA: "/verifica-rfid",
179
- RIFMENU: null,
180
- });
181
- }),
182
- },
183
- {
184
- fromVersion: "1.1.0",
185
- toVersion: "1.1.1",
186
- description: "Aggiunge FLGENABLED su FILTRI_TIPO",
187
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
188
- const columnCreated = yield AccessiDatabaseUpdater_1.ensureColumn(options, "FILTRI_TIPO", "FLGENABLED SMALLINT DEFAULT 1 NOT NULL", "FLGENABLED");
189
- if (!columnCreated) {
190
- yield Orm_1.Orm.execute(options.databaseOptions, "UPDATE FILTRI_TIPO SET FLGENABLED = 1 WHERE FLGENABLED IS NULL");
191
- }
192
- }),
193
- },
194
- {
195
- fromVersion: "1.1.1",
196
- toVersion: "1.1.2",
197
- description: "Aggiunge filtro vettore e colonna CODVET",
198
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
199
- yield AccessiDatabaseUpdater_1.upsertFiltroTipo(options, 30, "VETTORE", "CODVET", 1);
200
- yield AccessiDatabaseUpdater_1.ensureColumn(options, "FILTRI", "CODVET INTEGER", "CODVET", "CODICE DEL VETTORE DA INSERIRE SE COME FILTRO HA 30");
201
- }),
202
- },
203
- {
204
- fromVersion: "1.1.2",
205
- toVersion: "1.1.3",
206
- description: "Aggiunge FLGADMINCONFIG e inizializza PARAMETRI",
207
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
208
- yield AccessiDatabaseUpdater_1.ensureColumn(options, "UTENTI_CONFIG", "FLGADMINCONFIG SMALLINT DEFAULT 0", "FLGADMINCONFIG", "flag utente configuratore dei menu amministratore");
209
- yield AccessiDatabaseUpdater_1.createParametersTable(options.databaseOptions);
210
- }),
211
- },
212
- {
213
- fromVersion: "1.1.3",
214
- toVersion: "1.1.4",
215
- description: "Aggiunge sequence e trigger per RUOLI",
216
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
217
- if (!(yield AccessiDatabaseUpdater_1.generatorExists(options.databaseOptions, "GEN_RUOLI_ID"))) {
218
- yield Orm_1.Orm.execute(options.databaseOptions, "CREATE SEQUENCE GEN_RUOLI_ID");
219
- }
220
- if (!(yield AccessiDatabaseUpdater_1.triggerExists(options.databaseOptions, "RUOLI_BI"))) {
221
- yield Orm_1.Orm.execute(options.databaseOptions, `CREATE TRIGGER RUOLI_BI FOR RUOLI
222
- ACTIVE BEFORE INSERT POSITION 0
223
- AS
224
- BEGIN
225
- IF (NEW.CODRUO IS NULL) THEN
226
- NEW.CODRUO = GEN_ID(GEN_RUOLI_ID,1);
227
- END`);
228
- }
229
- }),
230
- },
231
- {
232
- fromVersion: "1.1.4",
233
- toVersion: "1.1.5",
234
- description: "Aggiunge NOTE su MENU",
235
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
236
- yield AccessiDatabaseUpdater_1.ensureColumn(options, "MENU", "NOTE VARCHAR(1000)", "NOTE");
237
- }),
238
- },
239
- {
240
- fromVersion: "1.1.5",
241
- toVersion: "1.1.6",
242
- description: "Aggiunge NUMMAC su UTENTI_CONFIG",
243
- apply: (options) => __awaiter(void 0, void 0, void 0, function* () {
244
- yield AccessiDatabaseUpdater_1.ensureColumn(options, "UTENTI_CONFIG", "NUMMAC INTEGER", "NUMMAC", 'Numero macchina DESPOST PROLAV');
245
- }),
246
- },
247
- ];
430
+ AccessiDatabaseUpdater.initialization = new WeakMap();
431
+ AccessiDatabaseUpdater.running = new Map();
248
432
  exports.AccessiDatabaseUpdater = AccessiDatabaseUpdater = AccessiDatabaseUpdater_1 = __decorate([
249
433
  (0, common_1.Injectable)(),
250
- __param(0, (0, common_1.Inject)("ACCESSI_OPTIONS")),
434
+ __param(0, (0, common_1.Inject)('ACCESSI_OPTIONS')),
251
435
  __metadata("design:paramtypes", [Object])
252
436
  ], AccessiDatabaseUpdater);
253
437
  //# sourceMappingURL=AccessiDatabaseUpdater.js.map