@sync-in/server 1.8.0 → 1.9.0

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 (611) hide show
  1. package/CHANGELOG.md +64 -10
  2. package/environment/environment.dist.yaml +29 -26
  3. package/package.json +18 -17
  4. package/server/app.bootstrap.js +4 -2
  5. package/server/app.bootstrap.js.map +1 -1
  6. package/server/app.constants.js +9 -0
  7. package/server/app.constants.js.map +1 -1
  8. package/server/app.module.js +4 -0
  9. package/server/app.module.js.map +1 -1
  10. package/server/applications/admin/admin.module.js +6 -1
  11. package/server/applications/admin/admin.module.js.map +1 -1
  12. package/server/applications/{notifications/interfaces/user-mail-notification.js → admin/interfaces/check-update.interfaces.js} +1 -1
  13. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -0
  14. package/server/applications/admin/services/admin-scheduler.service.js +53 -0
  15. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -0
  16. package/server/applications/admin/services/admin.service.js +102 -0
  17. package/server/applications/admin/services/admin.service.js.map +1 -0
  18. package/server/applications/admin/services/admin.service.spec.js +46 -0
  19. package/server/applications/admin/services/admin.service.spec.js.map +1 -0
  20. package/server/applications/admin/utils/check-update.js +28 -0
  21. package/server/applications/admin/utils/check-update.js.map +1 -0
  22. package/server/applications/comments/services/comments-manager.service.js +1 -1
  23. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  24. package/server/applications/comments/services/comments-manager.service.spec.js +1 -1
  25. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  26. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  27. package/server/applications/files/constants/cache.js +10 -1
  28. package/server/applications/files/constants/cache.js.map +1 -1
  29. package/server/applications/files/constants/only-office.js +0 -25
  30. package/server/applications/files/constants/only-office.js.map +1 -1
  31. package/server/applications/files/constants/operations.js +20 -3
  32. package/server/applications/files/constants/operations.js.map +1 -1
  33. package/server/applications/files/dto/file-operations.dto.js +7 -0
  34. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  35. package/server/applications/files/files-only-office.controller.js +3 -2
  36. package/server/applications/files/files-only-office.controller.js.map +1 -1
  37. package/server/applications/files/files-only-office.controller.spec.js +6 -5
  38. package/server/applications/files/files-only-office.controller.spec.js.map +1 -1
  39. package/server/applications/files/files.controller.js +100 -12
  40. package/server/applications/files/files.controller.js.map +1 -1
  41. package/server/applications/files/files.controller.spec.js +29 -8
  42. package/server/applications/files/files.controller.spec.js.map +1 -1
  43. package/server/applications/files/guards/files-only-office.guard.js +6 -0
  44. package/server/applications/files/guards/files-only-office.guard.js.map +1 -1
  45. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  46. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  47. package/server/applications/files/interfaces/only-office-config.interface.js.map +1 -1
  48. package/server/applications/files/services/files-content-manager.service.js +3 -3
  49. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  50. package/server/applications/files/services/files-lock-manager.service.js +61 -22
  51. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  52. package/server/applications/files/services/files-manager.service.js +122 -24
  53. package/server/applications/files/services/files-manager.service.js.map +1 -1
  54. package/server/applications/files/services/files-manager.service.spec.js +15 -0
  55. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  56. package/server/applications/files/services/files-methods.service.js +39 -14
  57. package/server/applications/files/services/files-methods.service.js.map +1 -1
  58. package/server/applications/files/services/files-only-office-manager.service.js +12 -12
  59. package/server/applications/files/services/files-only-office-manager.service.js.map +1 -1
  60. package/server/applications/files/services/files-parser.service.js +1 -1
  61. package/server/applications/files/services/files-parser.service.js.map +1 -1
  62. package/server/applications/files/services/files-queries.service.js +10 -0
  63. package/server/applications/files/services/files-queries.service.js.map +1 -1
  64. package/server/applications/files/utils/doc-textify/adapters/pdf.js +5 -16
  65. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
  66. package/server/applications/files/utils/files.js +1 -1
  67. package/server/applications/files/utils/files.js.map +1 -1
  68. package/server/applications/files/utils/send-file.js +3 -2
  69. package/server/applications/files/utils/send-file.js.map +1 -1
  70. package/server/applications/links/services/links-queries.service.js +1 -1
  71. package/server/applications/links/services/links-queries.service.js.map +1 -1
  72. package/server/applications/notifications/constants/notifications.js +5 -1
  73. package/server/applications/notifications/constants/notifications.js.map +1 -1
  74. package/server/applications/notifications/i18n/de.js +8 -2
  75. package/server/applications/notifications/i18n/de.js.map +1 -1
  76. package/server/applications/notifications/i18n/es.js +8 -2
  77. package/server/applications/notifications/i18n/es.js.map +1 -1
  78. package/server/applications/notifications/i18n/fr.js +8 -2
  79. package/server/applications/notifications/i18n/fr.js.map +1 -1
  80. package/server/applications/notifications/i18n/hi.js +8 -2
  81. package/server/applications/notifications/i18n/hi.js.map +1 -1
  82. package/server/applications/notifications/i18n/it.js +8 -2
  83. package/server/applications/notifications/i18n/it.js.map +1 -1
  84. package/server/applications/notifications/i18n/ja.js +8 -2
  85. package/server/applications/notifications/i18n/ja.js.map +1 -1
  86. package/server/applications/notifications/i18n/ko.js +8 -2
  87. package/server/applications/notifications/i18n/ko.js.map +1 -1
  88. package/server/applications/notifications/i18n/pl.js +8 -2
  89. package/server/applications/notifications/i18n/pl.js.map +1 -1
  90. package/server/applications/notifications/i18n/pt.js +8 -2
  91. package/server/applications/notifications/i18n/pt.js.map +1 -1
  92. package/server/applications/notifications/i18n/pt_br.js +8 -2
  93. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  94. package/server/applications/notifications/i18n/ru.js +8 -2
  95. package/server/applications/notifications/i18n/ru.js.map +1 -1
  96. package/server/applications/notifications/i18n/tr.js +8 -2
  97. package/server/applications/notifications/i18n/tr.js.map +1 -1
  98. package/server/applications/notifications/i18n/zh.js +8 -2
  99. package/server/applications/notifications/i18n/zh.js.map +1 -1
  100. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  101. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +10 -0
  102. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -0
  103. package/server/applications/notifications/mails/models.js +38 -3
  104. package/server/applications/notifications/mails/models.js.map +1 -1
  105. package/server/applications/notifications/mails/templates.js +1 -1
  106. package/server/applications/notifications/mails/templates.js.map +1 -1
  107. package/server/applications/notifications/services/notifications-manager.service.js +8 -1
  108. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  109. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  110. package/server/applications/shares/services/shares-manager.service.js +17 -10
  111. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  112. package/server/applications/shares/services/shares-manager.service.spec.js +10 -3
  113. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  114. package/server/applications/shares/services/shares-queries.service.js +11 -1
  115. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  116. package/server/applications/spaces/guards/space.guard.spec.js +2 -2
  117. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  118. package/server/applications/spaces/services/spaces-browser.service.js +31 -11
  119. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  120. package/server/applications/spaces/services/spaces-manager.service.js +2 -2
  121. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  122. package/server/applications/spaces/services/spaces-queries.service.js +6 -2
  123. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  124. package/server/applications/spaces/utils/permissions.js +2 -2
  125. package/server/applications/spaces/utils/permissions.js.map +1 -1
  126. package/server/applications/sync/services/sync-manager.service.js +1 -0
  127. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  128. package/server/applications/sync/services/sync-paths-manager.service.js +1 -1
  129. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  130. package/server/applications/sync/services/sync-paths-manager.service.spec.js +1 -1
  131. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  132. package/server/applications/users/constants/user.js +1 -1
  133. package/server/applications/users/constants/user.js.map +1 -1
  134. package/server/applications/users/services/admin-users-queries.service.js +8 -0
  135. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  136. package/server/applications/users/services/users-manager.service.js +1 -2
  137. package/server/applications/users/services/users-manager.service.js.map +1 -1
  138. package/server/applications/users/services/users-queries.service.js +67 -68
  139. package/server/applications/users/services/users-queries.service.js.map +1 -1
  140. package/server/applications/users/users.gateway.js +6 -0
  141. package/server/applications/users/users.gateway.js.map +1 -1
  142. package/server/applications/users/users.module.js +2 -1
  143. package/server/applications/users/users.module.js.map +1 -1
  144. package/server/applications/webdav/guards/webdav-protocol.guard.js +4 -4
  145. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  146. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +6 -6
  147. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  148. package/server/applications/webdav/services/webdav-methods.service.js +3 -2
  149. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  150. package/server/applications/webdav/services/webdav-methods.service.spec.js +2 -2
  151. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  152. package/server/authentication/constants/auth-ldap.js +2 -0
  153. package/server/authentication/constants/auth-ldap.js.map +1 -1
  154. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +34 -21
  155. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +1 -1
  156. package/server/common/functions.js +0 -8
  157. package/server/common/functions.js.map +1 -1
  158. package/server/common/image.js +63 -58
  159. package/server/common/image.js.map +1 -1
  160. package/server/common/shared.js +18 -1
  161. package/server/common/shared.js.map +1 -1
  162. package/server/infrastructure/context/services/context-manager.service.js +3 -0
  163. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  164. package/server/infrastructure/websocket/adapters/cluster.adapter.js +4 -4
  165. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  166. package/static/3rdpartylicenses.txt +1380 -57
  167. package/static/assets/favicon.svg +2 -25
  168. package/static/assets/logo-dark.svg +2 -32
  169. package/static/assets/logo.svg +2 -32
  170. package/static/assets/mimes/application-sql.svg +29 -1
  171. package/static/assets/mimes/application-x-sql.svg +29 -0
  172. package/static/assets/mimes/image-bmp.svg +12 -0
  173. package/static/assets/pdfjs/build/pdf.mjs +4869 -4454
  174. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  175. package/static/assets/pdfjs/build/pdf.sandbox.mjs +3 -3
  176. package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
  177. package/static/assets/pdfjs/build/pdf.worker.mjs +885 -596
  178. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  179. package/static/assets/pdfjs/version +1 -1
  180. package/static/assets/pdfjs/web/locale/be/viewer.ftl +40 -0
  181. package/static/assets/pdfjs/web/locale/bg/viewer.ftl +2 -0
  182. package/static/assets/pdfjs/web/locale/cs/viewer.ftl +41 -0
  183. package/static/assets/pdfjs/web/locale/cy/viewer.ftl +43 -0
  184. package/static/assets/pdfjs/web/locale/da/viewer.ftl +39 -0
  185. package/static/assets/pdfjs/web/locale/de/viewer.ftl +41 -0
  186. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +43 -0
  187. package/static/assets/pdfjs/web/locale/el/viewer.ftl +39 -0
  188. package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +35 -0
  189. package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +41 -0
  190. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +2 -2
  191. package/static/assets/pdfjs/web/locale/eo/viewer.ftl +39 -0
  192. package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +41 -0
  193. package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +39 -0
  194. package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +72 -0
  195. package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +120 -0
  196. package/static/assets/pdfjs/web/locale/eu/viewer.ftl +41 -0
  197. package/static/assets/pdfjs/web/locale/fi/viewer.ftl +41 -0
  198. package/static/assets/pdfjs/web/locale/fr/viewer.ftl +41 -0
  199. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +77 -0
  200. package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +41 -0
  201. package/static/assets/pdfjs/web/locale/gn/viewer.ftl +39 -0
  202. package/static/assets/pdfjs/web/locale/he/viewer.ftl +41 -0
  203. package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +43 -0
  204. package/static/assets/pdfjs/web/locale/hu/viewer.ftl +41 -0
  205. package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +1 -1
  206. package/static/assets/pdfjs/web/locale/ia/viewer.ftl +41 -0
  207. package/static/assets/pdfjs/web/locale/it/viewer.ftl +41 -0
  208. package/static/assets/pdfjs/web/locale/ja/viewer.ftl +32 -0
  209. package/static/assets/pdfjs/web/locale/ka/viewer.ftl +41 -0
  210. package/static/assets/pdfjs/web/locale/kab/viewer.ftl +73 -0
  211. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +21 -0
  212. package/static/assets/pdfjs/web/locale/ko/viewer.ftl +38 -1
  213. package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +39 -0
  214. package/static/assets/pdfjs/web/locale/nl/viewer.ftl +41 -0
  215. package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +37 -0
  216. package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +37 -0
  217. package/static/assets/pdfjs/web/locale/pl/viewer.ftl +39 -0
  218. package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +39 -0
  219. package/static/assets/pdfjs/web/locale/rm/viewer.ftl +73 -0
  220. package/static/assets/pdfjs/web/locale/ro/viewer.ftl +41 -0
  221. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +42 -0
  222. package/static/assets/pdfjs/web/locale/sc/viewer.ftl +6 -0
  223. package/static/assets/pdfjs/web/locale/sk/viewer.ftl +43 -0
  224. package/static/assets/pdfjs/web/locale/sl/viewer.ftl +42 -1
  225. package/static/assets/pdfjs/web/locale/sq/viewer.ftl +77 -0
  226. package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +41 -0
  227. package/static/assets/pdfjs/web/locale/tg/viewer.ftl +39 -0
  228. package/static/assets/pdfjs/web/locale/th/viewer.ftl +35 -0
  229. package/static/assets/pdfjs/web/locale/tr/viewer.ftl +39 -0
  230. package/static/assets/pdfjs/web/locale/vi/viewer.ftl +42 -5
  231. package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +35 -0
  232. package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +37 -0
  233. package/static/assets/pdfjs/web/viewer.css +141 -110
  234. package/static/assets/pdfjs/web/viewer.html +7 -7
  235. package/static/assets/pdfjs/web/viewer.mjs +97 -14
  236. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  237. package/static/chunk-22DWHRCL.js +1 -0
  238. package/static/chunk-23UUFZSR.js +1 -0
  239. package/static/{chunk-VM4YX6Q7.js → chunk-24Q7OUU2.js} +1 -1
  240. package/static/chunk-25QTY2GI.js +1 -0
  241. package/static/chunk-2E7IJZLL.js +1 -0
  242. package/static/chunk-2FC5EKS5.js +1 -0
  243. package/static/chunk-2FOWUJQF.js +1 -0
  244. package/static/chunk-2XPHUNYN.js +1 -0
  245. package/static/chunk-32L7RG2G.js +1 -0
  246. package/static/chunk-3IISSX63.js +1 -0
  247. package/static/chunk-3OHSTP3R.js +1 -0
  248. package/static/chunk-42L6C5MT.js +1 -0
  249. package/static/chunk-4AGQL5GV.js +1 -0
  250. package/static/chunk-4BPSQMI2.js +1 -0
  251. package/static/chunk-4FDRWZWT.js +1 -0
  252. package/static/chunk-4FJUCMEG.js +1 -0
  253. package/static/chunk-4GCCF6PF.js +1 -0
  254. package/static/chunk-4ORP3SBY.js +1 -0
  255. package/static/chunk-4QBOHIC3.js +1 -0
  256. package/static/chunk-4YT6K5KY.js +1 -0
  257. package/static/chunk-556I6YIW.js +1 -0
  258. package/static/chunk-5DPIGJU4.js +1 -0
  259. package/static/chunk-5HNQLBSW.js +3 -0
  260. package/static/chunk-5IL7C45D.js +1 -0
  261. package/static/chunk-5KJXGMKR.js +1 -0
  262. package/static/chunk-5SPGSHKL.js +1 -0
  263. package/static/chunk-5WCQBTXW.js +1 -0
  264. package/static/chunk-5XUIPWOH.js +1 -0
  265. package/static/chunk-62WT7PI3.js +1 -0
  266. package/static/chunk-6F6OMQ5H.js +1 -0
  267. package/static/chunk-6I5BGQHT.js +1 -0
  268. package/static/chunk-6NOS45DG.js +1 -0
  269. package/static/chunk-6OKLPRCD.js +1 -0
  270. package/static/chunk-6VEJCG43.js +1 -0
  271. package/static/chunk-77SS36Z2.js +1 -0
  272. package/static/chunk-7AXEPO3G.js +1 -0
  273. package/static/chunk-7CFSJ4BO.js +1 -0
  274. package/static/chunk-7CKHC72R.js +1 -0
  275. package/static/chunk-7DUTYOJG.js +1 -0
  276. package/static/chunk-7HKFYRPF.js +1 -0
  277. package/static/chunk-7NZJZATZ.js +1 -0
  278. package/static/chunk-AADK5D2H.js +1 -0
  279. package/static/chunk-ACUF7IKP.js +1 -0
  280. package/static/chunk-AGREZPV4.js +1 -0
  281. package/static/chunk-ATBJWFA3.js +1 -0
  282. package/static/chunk-ATXLZN2B.js +1 -0
  283. package/static/chunk-AZ5TF5Y3.js +1 -0
  284. package/static/chunk-BBHYIURC.js +1 -0
  285. package/static/chunk-BHZEPHRI.js +13 -0
  286. package/static/chunk-BQZWSZNN.js +1 -0
  287. package/static/chunk-BSB4VROD.js +2 -0
  288. package/static/chunk-BYWSTP3P.js +1 -0
  289. package/static/chunk-C3AAEQKW.js +1 -0
  290. package/static/chunk-CCGGCHGN.js +1 -0
  291. package/static/chunk-CFTKW432.js +1 -0
  292. package/static/chunk-CNOVT6KU.js +1 -0
  293. package/static/chunk-D56H3XE2.js +1 -0
  294. package/static/chunk-DFOOSIIA.js +1 -0
  295. package/static/chunk-DHFQIFOF.js +1 -0
  296. package/static/{chunk-3GMLWAFZ.js → chunk-DIC2MVRI.js} +1 -1
  297. package/static/chunk-DJDRX53V.js +2 -0
  298. package/static/chunk-DKGXUMLT.js +1 -0
  299. package/static/chunk-DRHPEERW.js +2 -0
  300. package/static/chunk-DWYP6ZGG.js +1 -0
  301. package/static/chunk-EDJAISWO.js +13 -0
  302. package/static/chunk-EIYRBM4J.js +1 -0
  303. package/static/chunk-EKEGRXCV.js +7 -0
  304. package/static/chunk-EL6QL4TP.js +1 -0
  305. package/static/chunk-ERDZ7IVF.js +1 -0
  306. package/static/chunk-EVQKKVUZ.js +1 -0
  307. package/static/chunk-F2XG7EWI.js +1 -0
  308. package/static/chunk-F672FY5I.js +1 -0
  309. package/static/chunk-F6V37MKG.js +1 -0
  310. package/static/chunk-F7TXTNZC.js +1 -0
  311. package/static/chunk-FCGTI42I.js +1 -0
  312. package/static/chunk-FQHOSSCO.js +1 -0
  313. package/static/chunk-FTSIPHMG.js +1 -0
  314. package/static/chunk-GAGHHYLF.js +1 -0
  315. package/static/{chunk-JPT5WEAT.js → chunk-GOJYWL2M.js} +1 -1
  316. package/static/chunk-H6WOTGQ5.js +1 -0
  317. package/static/{chunk-CHJ64RJM.js → chunk-H6ZXFINQ.js} +1 -1
  318. package/static/chunk-HC7F57NA.js +1 -0
  319. package/static/chunk-HHWXIK2M.js +7 -0
  320. package/static/chunk-HKRGIRKB.js +3 -0
  321. package/static/chunk-HNMGPG72.js +1 -0
  322. package/static/chunk-HS4S6BV3.js +1 -0
  323. package/static/chunk-IJ7K7ATQ.js +1 -0
  324. package/static/chunk-IOIBQGHN.js +562 -0
  325. package/static/chunk-ITVA26X2.js +2 -0
  326. package/static/chunk-J6YSFHLZ.js +1 -0
  327. package/static/chunk-JAEJ6IMV.js +1 -0
  328. package/static/chunk-JB5R6V33.js +1 -0
  329. package/static/chunk-JF6WIV6M.js +1 -0
  330. package/static/chunk-JGB4LLUT.js +1 -0
  331. package/static/chunk-JGXVTKLG.js +1 -0
  332. package/static/chunk-JMYAD7E2.js +1 -0
  333. package/static/chunk-JSE63Q5X.js +1 -0
  334. package/static/chunk-JVV3ZL6L.js +1 -0
  335. package/static/chunk-JXZCNFW7.js +1 -0
  336. package/static/chunk-KAVP6UXH.js +1 -0
  337. package/static/{chunk-WLMNXRBS.js → chunk-KDEEERWZ.js} +1 -1
  338. package/static/chunk-KHRF67SG.js +1 -0
  339. package/static/chunk-KLOUBIO4.js +1 -0
  340. package/static/chunk-KMF3ZRAO.js +1 -0
  341. package/static/chunk-KNZ3AQPR.js +1 -0
  342. package/static/chunk-KT3TWCST.js +1 -0
  343. package/static/chunk-L6SYG23T.js +1 -0
  344. package/static/chunk-LJSVNPPQ.js +1 -0
  345. package/static/{chunk-LNTUR3GU.js → chunk-LRDKG274.js} +1 -1
  346. package/static/chunk-LRQSPCYZ.js +1 -0
  347. package/static/chunk-LUSVISM6.js +1 -0
  348. package/static/chunk-LXQGVNU2.js +1 -0
  349. package/static/{chunk-BIKLW4YS.js → chunk-LYZGJZNP.js} +1 -1
  350. package/static/chunk-LZKI5P5T.js +1 -0
  351. package/static/chunk-M4XL3JN5.js +6 -0
  352. package/static/{chunk-UNCPXHHT.js → chunk-MGWG7OD7.js} +1 -1
  353. package/static/chunk-MKUUWY6Y.js +1 -0
  354. package/static/{chunk-HAS5ZOTR.js → chunk-MNNCSSHN.js} +1 -1
  355. package/static/chunk-MR3U7TKQ.js +1 -0
  356. package/static/chunk-MRF3CNLZ.js +1 -0
  357. package/static/chunk-MRMSMTWD.js +1 -0
  358. package/static/chunk-MVZJSG5R.js +1 -0
  359. package/static/chunk-MYM43ENO.js +1 -0
  360. package/static/chunk-N3P6P6GW.js +7 -0
  361. package/static/chunk-NAH4V2R6.js +2 -0
  362. package/static/chunk-NBBDVVUF.js +1 -0
  363. package/static/chunk-NMF2ZFBE.js +1 -0
  364. package/static/chunk-NN4ONTOT.js +1 -0
  365. package/static/chunk-NOPACN4F.js +1 -0
  366. package/static/chunk-NYJPOP4L.js +1 -0
  367. package/static/chunk-OJCAIKUK.js +1 -0
  368. package/static/chunk-OQRWXCLY.js +1 -0
  369. package/static/chunk-PCFH5HCI.js +2 -0
  370. package/static/chunk-PG54TWBO.js +4 -0
  371. package/static/chunk-PJF5XUTO.js +1 -0
  372. package/static/{chunk-FJE6BOFL.js → chunk-PSUAQBYM.js} +1 -1
  373. package/static/chunk-PTLYIUFW.js +1 -0
  374. package/static/chunk-PZGLDZZM.js +1 -0
  375. package/static/chunk-Q4VNZGFI.js +1 -0
  376. package/static/chunk-Q556XB3S.js +1 -0
  377. package/static/{chunk-PB4AIT7O.js → chunk-Q7IXRPOO.js} +1 -1
  378. package/static/chunk-Q7U2VPIS.js +1 -0
  379. package/static/chunk-QM6CQMEX.js +1 -0
  380. package/static/chunk-QMHUIHSR.js +1 -0
  381. package/static/chunk-QNFNXDSX.js +1 -0
  382. package/static/chunk-QVFPHTOH.js +1 -0
  383. package/static/chunk-R4MI25E2.js +1 -0
  384. package/static/chunk-R7JRAR3P.js +1 -0
  385. package/static/chunk-R7PNKQU2.js +1 -0
  386. package/static/chunk-RCAORRB7.js +1 -0
  387. package/static/chunk-RK7XRDNB.js +1 -0
  388. package/static/chunk-RO7SAOLK.js +1 -0
  389. package/static/chunk-RQUUINHV.js +1 -0
  390. package/static/chunk-RT3K6DZR.js +1 -0
  391. package/static/chunk-RUN556VW.js +1 -0
  392. package/static/chunk-RX3YQ67K.js +1 -0
  393. package/static/chunk-S6EVLDHA.js +5 -0
  394. package/static/chunk-S7S5M3AZ.js +1 -0
  395. package/static/chunk-SBLNYV74.js +1 -0
  396. package/static/chunk-SIZCHHUA.js +1 -0
  397. package/static/chunk-SRBOO7AO.js +1 -0
  398. package/static/{chunk-PVDHBQRM.js → chunk-STA7NTYL.js} +1 -1
  399. package/static/chunk-T3YI3BSS.js +1 -0
  400. package/static/chunk-T74SMT7I.js +1 -0
  401. package/static/chunk-TAL3RTTQ.js +1 -0
  402. package/static/chunk-TJZKTNNS.js +1 -0
  403. package/static/chunk-UJTFWZEC.js +1 -0
  404. package/static/chunk-UPGVU5LG.js +1 -0
  405. package/static/chunk-UQ6O3I6W.js +1 -0
  406. package/static/{chunk-5NMSIIQB.js → chunk-V43RGNXA.js} +1 -1
  407. package/static/chunk-VWIRXLNE.js +1 -0
  408. package/static/chunk-VZMVGIVW.js +1 -0
  409. package/static/chunk-VZPCXSRG.js +2 -0
  410. package/static/chunk-WR3MA3L3.js +1 -0
  411. package/static/chunk-XCLK7NJL.js +1 -0
  412. package/static/{chunk-DSWEWLXJ.js → chunk-XCPDPB5G.js} +1 -1
  413. package/static/chunk-XEGHEUP5.js +1 -0
  414. package/static/chunk-XKEBQNQJ.js +1 -0
  415. package/static/chunk-XOF4UW3S.js +1 -0
  416. package/static/chunk-XOTKK2NJ.js +1 -0
  417. package/static/chunk-XX7JXKA6.js +1 -0
  418. package/static/chunk-Y2I36A4K.js +1 -0
  419. package/static/chunk-Y44XDRM5.js +1 -0
  420. package/static/{chunk-QO6BTONN.js → chunk-Y4MAPE2C.js} +1 -1
  421. package/static/chunk-Y5RLD72B.js +1 -0
  422. package/static/{chunk-DPUVSXRB.js → chunk-Y5XTRCFK.js} +1 -1
  423. package/static/chunk-Y63UUJGJ.js +1 -0
  424. package/static/chunk-YBNAC7QM.js +1 -0
  425. package/static/chunk-YCTCESL4.js +1 -0
  426. package/static/chunk-YMAN4LIU.js +1 -0
  427. package/static/chunk-YTDE6SXT.js +1 -0
  428. package/static/chunk-YZPIUJB3.js +1 -0
  429. package/static/chunk-ZCOWBVOT.js +1 -0
  430. package/static/chunk-ZHRYYMYE.js +1 -0
  431. package/static/chunk-ZNXTOQFG.js +1 -0
  432. package/static/{chunk-URHTCJ7G.js → chunk-ZQLBPLXI.js} +1 -1
  433. package/static/favicon.ico +0 -0
  434. package/static/index.html +2 -2
  435. package/static/main-3PLRDZTO.js +11 -0
  436. package/static/styles-Q4OZOSSK.css +1 -0
  437. package/server/applications/notifications/interfaces/user-mail-notification.js.map +0 -1
  438. package/static/assets/codemirror/mode/apl/apl.js +0 -174
  439. package/static/assets/codemirror/mode/asciiarmor/asciiarmor.js +0 -74
  440. package/static/assets/codemirror/mode/asn.1/asn.1.js +0 -204
  441. package/static/assets/codemirror/mode/asterisk/asterisk.js +0 -220
  442. package/static/assets/codemirror/mode/brainfuck/brainfuck.js +0 -85
  443. package/static/assets/codemirror/mode/clike/clike.js +0 -942
  444. package/static/assets/codemirror/mode/clojure/clojure.js +0 -293
  445. package/static/assets/codemirror/mode/cmake/cmake.js +0 -97
  446. package/static/assets/codemirror/mode/cobol/cobol.js +0 -255
  447. package/static/assets/codemirror/mode/coffeescript/coffeescript.js +0 -359
  448. package/static/assets/codemirror/mode/commonlisp/commonlisp.js +0 -125
  449. package/static/assets/codemirror/mode/crystal/crystal.js +0 -433
  450. package/static/assets/codemirror/mode/css/css.js +0 -862
  451. package/static/assets/codemirror/mode/cypher/cypher.js +0 -152
  452. package/static/assets/codemirror/mode/d/d.js +0 -223
  453. package/static/assets/codemirror/mode/dart/dart.js +0 -168
  454. package/static/assets/codemirror/mode/diff/diff.js +0 -47
  455. package/static/assets/codemirror/mode/django/django.js +0 -356
  456. package/static/assets/codemirror/mode/dockerfile/dockerfile.js +0 -211
  457. package/static/assets/codemirror/mode/dtd/dtd.js +0 -142
  458. package/static/assets/codemirror/mode/dylan/dylan.js +0 -352
  459. package/static/assets/codemirror/mode/ebnf/ebnf.js +0 -195
  460. package/static/assets/codemirror/mode/ecl/ecl.js +0 -206
  461. package/static/assets/codemirror/mode/eiffel/eiffel.js +0 -160
  462. package/static/assets/codemirror/mode/elm/elm.js +0 -245
  463. package/static/assets/codemirror/mode/erlang/erlang.js +0 -619
  464. package/static/assets/codemirror/mode/factor/factor.js +0 -85
  465. package/static/assets/codemirror/mode/fcl/fcl.js +0 -173
  466. package/static/assets/codemirror/mode/forth/forth.js +0 -180
  467. package/static/assets/codemirror/mode/fortran/fortran.js +0 -188
  468. package/static/assets/codemirror/mode/gas/gas.js +0 -355
  469. package/static/assets/codemirror/mode/gfm/gfm.js +0 -129
  470. package/static/assets/codemirror/mode/gherkin/gherkin.js +0 -194
  471. package/static/assets/codemirror/mode/go/go.js +0 -187
  472. package/static/assets/codemirror/mode/groovy/groovy.js +0 -245
  473. package/static/assets/codemirror/mode/haml/haml.js +0 -161
  474. package/static/assets/codemirror/mode/handlebars/handlebars.js +0 -70
  475. package/static/assets/codemirror/mode/haskell/haskell.js +0 -268
  476. package/static/assets/codemirror/mode/haskell-literate/haskell-literate.js +0 -43
  477. package/static/assets/codemirror/mode/haxe/haxe.js +0 -515
  478. package/static/assets/codemirror/mode/htmlembedded/htmlembedded.js +0 -37
  479. package/static/assets/codemirror/mode/htmlmixed/htmlmixed.js +0 -153
  480. package/static/assets/codemirror/mode/http/http.js +0 -113
  481. package/static/assets/codemirror/mode/idl/idl.js +0 -290
  482. package/static/assets/codemirror/mode/javascript/javascript.js +0 -960
  483. package/static/assets/codemirror/mode/jinja2/jinja2.js +0 -193
  484. package/static/assets/codemirror/mode/jsx/jsx.js +0 -149
  485. package/static/assets/codemirror/mode/julia/julia.js +0 -390
  486. package/static/assets/codemirror/mode/livescript/livescript.js +0 -280
  487. package/static/assets/codemirror/mode/lua/lua.js +0 -160
  488. package/static/assets/codemirror/mode/markdown/markdown.js +0 -886
  489. package/static/assets/codemirror/mode/mathematica/mathematica.js +0 -176
  490. package/static/assets/codemirror/mode/mbox/mbox.js +0 -129
  491. package/static/assets/codemirror/mode/meta.js +0 -221
  492. package/static/assets/codemirror/mode/mirc/mirc.js +0 -193
  493. package/static/assets/codemirror/mode/mllike/mllike.js +0 -359
  494. package/static/assets/codemirror/mode/modelica/modelica.js +0 -245
  495. package/static/assets/codemirror/mode/mscgen/mscgen.js +0 -175
  496. package/static/assets/codemirror/mode/mumps/mumps.js +0 -148
  497. package/static/assets/codemirror/mode/nginx/nginx.js +0 -178
  498. package/static/assets/codemirror/mode/nsis/nsis.js +0 -95
  499. package/static/assets/codemirror/mode/ntriples/ntriples.js +0 -195
  500. package/static/assets/codemirror/mode/octave/octave.js +0 -139
  501. package/static/assets/codemirror/mode/oz/oz.js +0 -252
  502. package/static/assets/codemirror/mode/pascal/pascal.js +0 -136
  503. package/static/assets/codemirror/mode/pegjs/pegjs.js +0 -111
  504. package/static/assets/codemirror/mode/perl/perl.js +0 -836
  505. package/static/assets/codemirror/mode/php/php.js +0 -234
  506. package/static/assets/codemirror/mode/pig/pig.js +0 -178
  507. package/static/assets/codemirror/mode/powershell/powershell.js +0 -398
  508. package/static/assets/codemirror/mode/properties/properties.js +0 -78
  509. package/static/assets/codemirror/mode/protobuf/protobuf.js +0 -72
  510. package/static/assets/codemirror/mode/pug/pug.js +0 -591
  511. package/static/assets/codemirror/mode/puppet/puppet.js +0 -220
  512. package/static/assets/codemirror/mode/python/python.js +0 -402
  513. package/static/assets/codemirror/mode/q/q.js +0 -139
  514. package/static/assets/codemirror/mode/r/r.js +0 -190
  515. package/static/assets/codemirror/mode/rpm/changes/index.html +0 -66
  516. package/static/assets/codemirror/mode/rpm/rpm.js +0 -109
  517. package/static/assets/codemirror/mode/rst/rst.js +0 -557
  518. package/static/assets/codemirror/mode/ruby/ruby.js +0 -303
  519. package/static/assets/codemirror/mode/rust/rust.js +0 -72
  520. package/static/assets/codemirror/mode/sas/sas.js +0 -303
  521. package/static/assets/codemirror/mode/sass/sass.js +0 -459
  522. package/static/assets/codemirror/mode/scheme/scheme.js +0 -284
  523. package/static/assets/codemirror/mode/shell/shell.js +0 -168
  524. package/static/assets/codemirror/mode/sieve/sieve.js +0 -193
  525. package/static/assets/codemirror/mode/slim/slim.js +0 -575
  526. package/static/assets/codemirror/mode/smalltalk/smalltalk.js +0 -168
  527. package/static/assets/codemirror/mode/smarty/smarty.js +0 -225
  528. package/static/assets/codemirror/mode/solr/solr.js +0 -104
  529. package/static/assets/codemirror/mode/soy/soy.js +0 -665
  530. package/static/assets/codemirror/mode/sparql/sparql.js +0 -184
  531. package/static/assets/codemirror/mode/spreadsheet/spreadsheet.js +0 -112
  532. package/static/assets/codemirror/mode/sql/sql.js +0 -529
  533. package/static/assets/codemirror/mode/stex/stex.js +0 -264
  534. package/static/assets/codemirror/mode/stylus/stylus.js +0 -775
  535. package/static/assets/codemirror/mode/swift/swift.js +0 -221
  536. package/static/assets/codemirror/mode/tcl/tcl.js +0 -140
  537. package/static/assets/codemirror/mode/textile/textile.js +0 -469
  538. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.css +0 -14
  539. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.js +0 -308
  540. package/static/assets/codemirror/mode/tiki/tiki.css +0 -26
  541. package/static/assets/codemirror/mode/tiki/tiki.js +0 -312
  542. package/static/assets/codemirror/mode/toml/toml.js +0 -88
  543. package/static/assets/codemirror/mode/tornado/tornado.js +0 -68
  544. package/static/assets/codemirror/mode/troff/troff.js +0 -84
  545. package/static/assets/codemirror/mode/ttcn/ttcn.js +0 -283
  546. package/static/assets/codemirror/mode/ttcn-cfg/ttcn-cfg.js +0 -214
  547. package/static/assets/codemirror/mode/turtle/turtle.js +0 -162
  548. package/static/assets/codemirror/mode/twig/twig.js +0 -141
  549. package/static/assets/codemirror/mode/vb/vb.js +0 -275
  550. package/static/assets/codemirror/mode/vbscript/vbscript.js +0 -350
  551. package/static/assets/codemirror/mode/velocity/velocity.js +0 -202
  552. package/static/assets/codemirror/mode/verilog/verilog.js +0 -781
  553. package/static/assets/codemirror/mode/vhdl/vhdl.js +0 -189
  554. package/static/assets/codemirror/mode/vue/vue.js +0 -77
  555. package/static/assets/codemirror/mode/wast/wast.js +0 -132
  556. package/static/assets/codemirror/mode/webidl/webidl.js +0 -195
  557. package/static/assets/codemirror/mode/xml/xml.js +0 -417
  558. package/static/assets/codemirror/mode/xquery/xquery.js +0 -448
  559. package/static/assets/codemirror/mode/yacas/yacas.js +0 -204
  560. package/static/assets/codemirror/mode/yaml/yaml.js +0 -120
  561. package/static/assets/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +0 -72
  562. package/static/assets/codemirror/mode/z80/z80.js +0 -116
  563. package/static/chunk-2KLC4T2Z.js +0 -1
  564. package/static/chunk-373XVRXW.js +0 -1
  565. package/static/chunk-3XVM35O2.js +0 -1
  566. package/static/chunk-3YVRP3VM.js +0 -2
  567. package/static/chunk-AF24EYXU.js +0 -1
  568. package/static/chunk-AKQVEHO6.js +0 -2
  569. package/static/chunk-AY2SZ3G6.js +0 -1
  570. package/static/chunk-BCVX464U.js +0 -2
  571. package/static/chunk-C36MW4ME.js +0 -562
  572. package/static/chunk-DKSEQTMX.js +0 -1
  573. package/static/chunk-FZ3JPGYZ.js +0 -1
  574. package/static/chunk-GUGNR5TF.js +0 -3
  575. package/static/chunk-H6NE33VX.js +0 -1
  576. package/static/chunk-HNQRZALS.js +0 -1
  577. package/static/chunk-JSWCNGXJ.js +0 -1
  578. package/static/chunk-KFJIQIGR.js +0 -1
  579. package/static/chunk-LVM4QB22.js +0 -1
  580. package/static/chunk-M3XVNQZQ.js +0 -1
  581. package/static/chunk-MFLIJH6T.js +0 -1
  582. package/static/chunk-MSUHTBB2.js +0 -1
  583. package/static/chunk-N3U6637P.js +0 -1
  584. package/static/chunk-NNV4OXSB.js +0 -1
  585. package/static/chunk-NO2LTNW3.js +0 -1
  586. package/static/chunk-OOGP4WSH.js +0 -2
  587. package/static/chunk-PCWDQPOM.js +0 -2
  588. package/static/chunk-PGZZP5W3.js +0 -1
  589. package/static/chunk-Q5KM7LTX.js +0 -1
  590. package/static/chunk-QHC6ZPQ4.js +0 -1
  591. package/static/chunk-QZU2S5CV.js +0 -1
  592. package/static/chunk-SBZ572Q4.js +0 -2
  593. package/static/chunk-SHIVUDP3.js +0 -1
  594. package/static/chunk-SLHTEGRU.js +0 -1
  595. package/static/chunk-SSFF27P2.js +0 -24
  596. package/static/chunk-TPYBFZS5.js +0 -1
  597. package/static/chunk-UEQCWMXD.js +0 -1
  598. package/static/chunk-UG5DMXYO.js +0 -1
  599. package/static/chunk-UJPPR4MX.js +0 -1
  600. package/static/chunk-V3AT2BKP.js +0 -1
  601. package/static/chunk-VKK5BSLX.js +0 -1
  602. package/static/chunk-WJW7CT6G.js +0 -27
  603. package/static/chunk-X5XGK6T7.js +0 -4
  604. package/static/chunk-YEKR5OPO.js +0 -1
  605. package/static/chunk-YW57T2PF.js +0 -1
  606. package/static/chunk-Z5J5F5SX.js +0 -1
  607. package/static/chunk-ZPF2DSQV.js +0 -1
  608. package/static/chunk-ZTCRGJ6Y.js +0 -7
  609. package/static/main-VOL6OMJ5.js +0 -9
  610. package/static/scripts-WRDOQIU5.js +0 -24
  611. package/static/styles-2C2UNCNB.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/shares/services/shares-queries.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, count, eq, inArray, isNotNull, isNull, ne, or, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, MySqlSelectDynamic, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { uniquePermissions } from '../../../common/functions'\nimport { createSlug, popFromObject } from '../../../common/shared'\nimport { CacheDecorator } from '../../../infrastructure/cache/cache.decorator'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport type { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport type { FileProps } from '../../files/interfaces/file-props.interface'\nimport type { FileSpace } from '../../files/interfaces/file-space.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { links } from '../../links/schemas/links.schema'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { spacesRoots } from '../../spaces/schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../../spaces/schemas/spaces.schema'\nimport { syncClients } from '../../sync/schemas/sync-clients.schema'\nimport { syncPaths } from '../../sync/schemas/sync-paths.schema'\nimport { GROUP_TYPE } from '../../users/constants/group'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport type { Owner } from '../../users/interfaces/owner.interface'\nimport type { UserModel } from '../../users/models/user.model'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SHARE_ALL_OPERATIONS, SHARE_TYPE } from '../constants/shares'\nimport type { ShareMemberDto } from '../dto/create-or-update-share.dto'\nimport type { ShareChildMember, ShareChildQuery } from '../interfaces/share-child.interface'\nimport type { ShareEnv } from '../interfaces/share-env.interface'\nimport type { ShareFile } from '../interfaces/share-file.interface'\nimport type { ShareLink } from '../interfaces/share-link.interface'\nimport type { ShareProps } from '../interfaces/share-props.interface'\nimport { ShareChild } from '../models/share-child.model'\nimport type { ShareMembers } from '../schemas/share-members.interface'\nimport type { Share } from '../schemas/share.interface'\nimport { sharesMembers } from '../schemas/shares-members.schema'\nimport { shares } from '../schemas/shares.schema'\n\n@Injectable()\nexport class SharesQueries {\n private readonly logger = new Logger(SharesQueries.name)\n private sharesListQuery: MySql2PreparedQuery<any> = null\n private shareIdsQuery: MySql2PreparedQuery<any> = null\n private shareLinksListQuery: MySql2PreparedQuery<any> = null\n private shareWithMembersQuery: MySql2PreparedQuery<any> = null\n private sharePermissionsQuery: MySql2PreparedQuery<any> = null\n private shareRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache\n ) {}\n\n async uniqueShareAlias(name: string): Promise<string> {\n let alias = createSlug(name, true)\n let count = 0\n // Personal space name is reserved\n while (await this.shareExistsForAlias(alias)) {\n count += 1\n alias = `${name}-${count}`\n }\n return alias\n }\n\n shareExistsForOwner(userId: number, shareId: number): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: and(eq(shares.id, shareId), eq(shares.ownerId, userId)) })\n }\n\n async childExistsForShareOwner(userId: number, shareId: number, childId: number, isAdmin: boolean = false): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${shares.ownerId} IS NULL AND ${+isAdmin} = 1))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id\n FROM child\n WHERE child.id = ${childId}\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n async findHighestParentShare(childShareId: number): Promise<number> {\n const parentShare: any = alias(shares, 'parentShare')\n const withParents: any = sql`\n WITH RECURSIVE parent (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${childShareId}\n UNION\n SELECT ${parentShare.id},\n ${parentShare.parentId}\n FROM ${shares} AS parentShare\n INNER JOIN parent AS cs ON ${parentShare.id} = cs.parentId)\n SELECT parent.id\n FROM parent\n WHERE parent.parentId is NULL\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withParents)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n selectShares(props: Partial<Record<keyof Share, any>>): Promise<Partial<Share>[]> {\n const where: SQL[] = convertToWhere(shares, props)\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId, alias: shares.alias, name: shares.name })\n .from(shares)\n .where(and(...where))\n }\n\n selectParentSharesFromSpaceId(spaceId: number, ownerIds?: number[]): Promise<Partial<Share>[]> {\n const where: SQL[] = [eq(shares.spaceId, spaceId), isNull(shares.spaceRootId), isNull(shares.parentId)]\n if (ownerIds && ownerIds.length) {\n where.push(inArray(shares.ownerId, ownerIds))\n }\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId })\n .from(shares)\n .where(and(...where))\n }\n\n sharesQuotaExternalPaths(shareId?: number): Promise<Partial<Share>[]> {\n return this.db\n .select({\n id: shares.id,\n alias: shares.alias,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n externalPath: shares.externalPath\n })\n .from(shares)\n .where(and(isNotNull(shares.externalPath), ...[...(shareId ? [eq(shares.id, shareId)] : [])]))\n }\n\n async listShareLinks(user: UserModel, shareId: number, asAdmin?: boolean): Promise<ShareLink>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin?: boolean): Promise<ShareLink[]>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin: boolean = false): Promise<ShareLink[] | ShareLink> {\n if (!this.shareLinksListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkGuest: any = alias(users, 'linkGuest')\n const select: ShareLink | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n name: shares.name,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n description: shares.description,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n link: {\n id: links.id,\n name: links.name,\n email: links.email,\n uuid: links.uuid,\n requireAuth: links.requireAuth,\n nbAccess: links.nbAccess,\n limitAccess: links.limitAccess,\n permissions: shareMembers.permissions,\n isActive: linkGuest.isActive,\n language: linkGuest.language,\n expiresAt: links.expiresAt,\n createdAt: links.createdAt,\n currentAccess: linkGuest.currentAccess,\n lastAccess: linkGuest.lastAccess,\n currentIp: linkGuest.currentIp,\n lastIp: linkGuest.lastIp\n }\n }\n this.shareLinksListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .innerJoin(links, eq(links.id, shareMembers.linkId))\n .innerJoin(linkGuest, eq(linkGuest.id, links.userId))\n .where(\n and(\n eq(shares.type, SHARE_TYPE.LINK),\n or(eq(sql.placeholder('shareId'), 0), eq(shares.id, sql.placeholder('shareId'))),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .prepare()\n }\n const shareLinks: ShareLink[] = await this.shareLinksListQuery.execute({\n userId: user.id,\n shareId: shareId || 0,\n isAdmin: +user.isAdmin,\n asAdmin: +asAdmin\n })\n if (shareId) {\n return shareLinks.length ? shareLinks[0] : null\n }\n return shareLinks\n }\n\n async getShareWithMembers(user: UserModel, shareId: number, asAdmin = false): Promise<ShareProps> {\n // asAdmin : true if the user is the owner of the parent share or if the share is requested from the administration\n if (!this.shareWithMembersQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkUsers: any = alias(users, 'linkUsers')\n const select: ShareProps | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n enabled: shares.enabled,\n description: shares.description,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n storageIndexing: shares.storageIndexing,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n disabledAt: shares.disabledAt,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n users: concatDistinctObjectsInArray(users.id, {\n id: users.id,\n login: users.login,\n name: userFullNameSQL(users),\n type: sql`IF (${users.role} = ${USER_ROLE.GUEST}, ${MEMBER_TYPE.GUEST}, ${MEMBER_TYPE.USER})`,\n description: users.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n }),\n groups: concatDistinctObjectsInArray(groups.id, {\n id: groups.id,\n name: groups.name,\n type: sql`IF (${groups.type} = ${GROUP_TYPE.PERSONAL}, ${MEMBER_TYPE.PGROUP}, ${MEMBER_TYPE.GROUP})`,\n description: groups.description,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n login: linkUsers.login,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n description: links.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n })\n }\n this.shareWithMembersQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .leftJoin(users, and(isNull(shareMembers.linkId), eq(users.id, shareMembers.userId)))\n .leftJoin(groups, eq(groups.id, shareMembers.groupId))\n .leftJoin(linkUsers, and(isNotNull(shareMembers.linkId), eq(linkUsers.id, shareMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, shareMembers.linkId)))\n .where(\n and(\n eq(shares.id, sql.placeholder('shareId')),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .groupBy(shares.id)\n .limit(1)\n .prepare()\n }\n const [share] = await this.shareWithMembersQuery.execute({ userId: user.id, shareId, isAdmin: +user.isAdmin, asAdmin: +asAdmin })\n if (!share) return null\n // merge members\n share.members = [...popFromObject('users', share), ...popFromObject('links', share), ...popFromObject('groups', share)]\n return share as ShareProps\n }\n\n async createShare(share: Partial<Share>): Promise<number> {\n return dbGetInsertedId(await this.db.insert(shares).values(share as Share))\n }\n\n async updateShare(id: number, set: Partial<Record<keyof Share, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(shares).set(set).where(eq(shares.id, id)).limit(1), 1)\n this.logger.debug(`${this.updateShare.name} - share (${id}) was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateShare.name} - share (${id}) was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async deleteShare(shareId: number): Promise<boolean> {\n return dbCheckAffectedRows(await this.db.delete(shares).where(eq(shares.id, shareId)), 1)\n }\n\n async updateMember(set: Partial<Record<keyof ShareMembers, any>>, filters: Partial<Record<keyof ShareMembers, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(sharesMembers, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug(`${this.updateMember.name} - ${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateMember.name} - ${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async updateMembers(\n shareId: number,\n add: ShareMemberDto[],\n update: Record<string | 'object', Partial<ShareMembers> | ShareMemberDto>[],\n remove: ShareMemberDto[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }>> {\n // store status\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }> = {\n [ACTION.ADD]: { userIds: [], groupIds: [] },\n [ACTION.UPDATE]: { userIds: [], groupIds: [] },\n [ACTION.DELETE]: { userIds: [], groupIds: [] }\n }\n // add\n for (const m of add) {\n try {\n dbCheckAffectedRows(\n await this.db.insert(sharesMembers).values({\n shareId: shareId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n permissions: m.permissions\n } as ShareMembers),\n 1\n )\n status[ACTION.ADD][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) added to the share (${shareId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not added to the share (${shareId}) -> : ${e}`)\n }\n }\n // update\n for (const props of update) {\n const m: ShareMemberDto = popFromObject('object', props)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(props)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.groupId, m.id)\n )\n )\n .limit(1),\n 1\n )\n status[ACTION.UPDATE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) was updated on share (${shareId}) : ${JSON.stringify(props)}`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not updated on share (${shareId}) : ${JSON.stringify(props)} : ${e}`)\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(sharesMembers)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.groupId, m.id)\n )\n ),\n 1\n )\n status[ACTION.DELETE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) removed from share (${shareId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not removed from share (${shareId}) : ${e}`)\n }\n }\n return status\n }\n\n async shareEnv(shareId: number): Promise<Partial<ShareEnv>> {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const select: ShareEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n enabled: shares.enabled,\n fileId: shares.fileId,\n spaceId: shares.spaceId,\n spaceRootId: shares.spaceRootId,\n inSharesRepository: sql`${1}`.mapWith(Boolean),\n root: {\n id: files.id,\n owner: { id: users.id, login: users.login },\n file: {\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`,\n inTrash: files.inTrash,\n space: { id: spaces.id, alias: spaces.alias },\n root: {\n id: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`,\n externalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`\n }\n },\n externalPath: shares.externalPath\n }\n }\n const [shareEnv] = await this.db\n .select(select)\n .from(shares)\n .leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n and(\n isNull(shares.externalPath),\n or(and(isNotNull(shares.fileId), eq(files.id, shares.fileId)), and(isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId)))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), isNotNull(files.spaceExternalRootId), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n .where(eq(shares.id, shareId))\n .execute()\n return shareEnv\n }\n\n @CacheDecorator()\n async shareIds(userId: number, isAdmin: number): Promise<number[]> {\n if (!this.shareIdsQuery) {\n const unionAlias = union(\n this.fromUserQuery({ id: shares.id }),\n this.fromGroupsQuery({ id: shares.id }),\n this.fromAdminSharesQuery({ id: shares.id })\n ).as('unionAlias')\n this.shareIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n return (await this.shareIdsQuery.execute({ userId: userId, isAdmin: +isAdmin })).map((r: { id: number }) => r.id)\n }\n\n async listShares(user: UserModel): Promise<ShareFile[]> {\n if (!this.sharesListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const select: ShareFile | SelectedFields<any, any> = {\n id: shares.id,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL, 1, 0)`.mapWith(Boolean),\n description: shares.description,\n enabled: shares.enabled,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n parent: {\n id: isNotNull(parentShare.id),\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n hasComments: fileHasCommentsSubquerySQL(\n sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL, ${shareRootFile.id}, ${files.id})`\n ),\n counts: {\n users: count(sql`CASE WHEN ${shareMembers.userId} IS NOT NULL AND ${shareMembers.linkId} IS NULL THEN 1 END`),\n groups: count(shareMembers.groupId),\n links: count(shareMembers.linkId)\n }\n }\n this.sharesListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .where(\n and(\n eq(shares.type, sql.placeholder('shareType')),\n or(eq(shares.ownerId, sql.placeholder('userId')), and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId)))\n )\n )\n .groupBy(shares.id)\n .prepare()\n }\n const r: ShareFile[] = await this.sharesListQuery.execute({ userId: user.id, shareType: SHARE_TYPE.COMMON, isAdmin: +user.isAdmin })\n await this.setShareCounts(r)\n return r\n }\n\n async listChildShares(userId: number, shareId: number, isAdmin: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n ${shares.fileId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${isAdmin} = 1 AND ${shares.ownerId} IS NULL))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n ${childShare.fileId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n WHERE child.id != ${shareId}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async listSpaceShares(spaceId: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const childShareSpaceRoot: any = alias(spacesRoots, 'childShareSpaceRoot')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n COALESCE(${shares.fileId}, ${shareSpaceRoot.fileId}) AS fileId\n FROM ${shares}\n LEFT JOIN ${spacesRoots} AS shareSpaceRoot ON ${shares.spaceRootId} = ${shareSpaceRoot.id}\n WHERE ${shares.spaceId} = ${spaceId}\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n COALESCE(${childShare.fileId}, ${childShareSpaceRoot.fileId}) AS fileId\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id\n LEFT JOIN ${spacesRoots} AS childShareSpaceRoot ON ${childShare.spaceRootId} = ${childShareSpaceRoot.id})\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async membersFromChildSharesPermissions(\n shareId: number,\n userIds: number[] | 'all',\n matchPermRegexp?: string,\n asParent: boolean = true\n ): Promise<ShareChildMember[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, alias, name) AS\n (SELECT ${shares.id}, ${shares.alias}, ${shares.name}\n FROM ${shares}\n WHERE ${asParent ? shares.parentId : shares.id} = ${shareId}\n AND ${userIds === 'all' ? 1 : inArray(shares.ownerId, userIds)}\n UNION\n SELECT ${childShare.id}, ${childShare.alias}, ${childShare.name}\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT ${sharesMembers.id} as id,\n ${sharesMembers.userId} as userId,\n ${sharesMembers.permissions} as userPermissions,\n ${sharesMembers.shareId},\n children.alias as shareAlias,\n children.name as shareName\n FROM children\n INNER JOIN ${sharesMembers} ON children.id = ${sharesMembers.shareId}\n `\n if (matchPermRegexp) {\n withChildren.append(sql`WHERE ${sharesMembers.permissions} REGEXP ${matchPermRegexp}`)\n }\n const [r]: ShareChildMember[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r\n }\n\n async shareRootFiles(user: UserModel, options: { withShares?: boolean; withHasComments?: boolean; withSyncs?: boolean }): Promise<FileProps[]> {\n if (!this.shareRootFilesQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const originOwner: any = alias(users, 'originOwner')\n const childShare: any = alias(shares, 'childShare')\n const selectUnion: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, '')`.as('path'),\n isDir: files.isDir,\n inTrash: files.inTrash,\n size: files.size,\n ctime: files.ctime,\n mtime: files.mtime,\n mime: files.mime,\n originOwnerLogin: sql`${originOwner.login}`.as('originOwnerLogin'),\n originSpaceAlias: sql`${spaces.alias}`.as('originSpaceAlias'),\n originSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('originSpaceRootExternalPath'),\n rootId: sql`${shares.id}`.as('rootId'),\n rootAlias: shares.alias,\n rootName: shares.name,\n rootDescription: shares.description,\n rootEnabled: shares.enabled,\n rootExternalPath: shares.externalPath,\n rootPermissions: sharesMembers.permissions,\n rootOwnerLogin: sql`${users.login}`.as('rootOwnerLogin'),\n rootOwnerEmail: sql`${users.email}`.as('rootOwnerEmail'),\n rootOwnerFullName: userFullNameSQL(users).as('rootOwnerFullName'),\n childShareId: sql`${childShare.id}`.as('childShareId'),\n childShareAlias: sql`${childShare.alias}`.as('childShareAlias'),\n childShareName: sql`${childShare.name}`.as('childShareName'),\n childShareType: sql`${childShare.type}`.as('childShareType'),\n syncPathId: sql`${syncPaths.id}`.as('syncPathId'),\n syncPathClientId: sql`${syncClients.id}`.as('syncPathClientId'),\n syncPathClientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`.as('syncPathClientName')\n }\n const filters: SQL[] = [or(isNull(shares.ownerId), ne(shares.ownerId, sql.placeholder('userId')))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, rootPermissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // if the child share is from a share with an external path, the child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNull(shares.fileId), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(spaces, and(isNull(shares.externalPath), isNotNull(files.spaceId), eq(spaces.id, files.spaceId)))\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(\n childShare,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(childShare.ownerId, sql.placeholder('userId')),\n eq(childShare.parentId, shares.id),\n or(\n and(isNull(childShare.externalPath), isNotNull(childShare.fileId), eq(childShare.fileId, shares.fileId)),\n and(\n isNull(childShare.externalPath),\n isNull(childShare.fileId),\n eq(childShare.spaceId, shares.spaceId),\n eq(childShare.spaceRootId, shares.spaceRootId)\n ),\n and(isNotNull(childShare.externalPath), isNull(childShare.fileId), eq(shares.externalPath, childShare.externalPath))\n )\n )\n )\n .leftJoin(syncClients, and(eq(sql.placeholder('withSyncs'), sql.raw('1')), eq(syncClients.ownerId, sql.placeholder('userId'))))\n .leftJoin(\n syncPaths,\n and(\n eq(sql.placeholder('withSyncs'), sql.raw('1')),\n eq(syncPaths.clientId, syncClients.id),\n isNull(syncPaths.fileId),\n eq(syncPaths.shareId, shares.id)\n )\n )\n .leftJoin(users, eq(users.id, shares.ownerId))\n .leftJoin(originOwner, and(isNull(shares.externalPath), eq(originOwner.id, files.ownerId)))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).as('union_alias')\n const select: FileProps | SelectedFields<any, any> = {\n id: unionAlias.id,\n path: unionAlias.path,\n isDir: unionAlias.isDir,\n inTrash: unionAlias.inTrash,\n size: unionAlias.size,\n ctime: unionAlias.ctime,\n mtime: unionAlias.mtime,\n mime: unionAlias.mime,\n origin: {\n ownerLogin: unionAlias.originOwnerLogin,\n spaceAlias: unionAlias.originSpaceAlias,\n spaceRootExternalPath: unionAlias.originSpaceRootExternalPath\n },\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n description: unionAlias.rootDescription,\n enabled: unionAlias.rootEnabled,\n externalPath: unionAlias.rootExternalPath,\n permissions: spaceGroupConcatPermissions(unionAlias.rootPermissions),\n owner: { login: unionAlias.rootOwnerLogin, email: unionAlias.rootOwnerEmail, fullName: unionAlias.rootOwnerFullName } as Owner\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(unionAlias.childShareId, {\n id: unionAlias.childShareId,\n alias: unionAlias.childShareAlias,\n name: unionAlias.childShareName,\n type: unionAlias.childShareType\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(unionAlias.syncPathId, {\n id: unionAlias.syncPathId,\n clientId: unionAlias.syncPathClientId,\n clientName: unionAlias.syncPathClientName\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(unionAlias.id)}, 0)`.mapWith(Boolean)\n }\n this.shareRootFilesQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.rootId).prepare()\n }\n const fps: FileProps[] = await this.shareRootFilesQuery.execute({\n userId: user.id,\n isAdmin: +user.isAdmin,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n for (const f of fps) {\n f.root.permissions = uniquePermissions(f.root.permissions)\n }\n return fps\n }\n\n @CacheDecorator()\n async permissions(userId: number, shareAlias: string, isAdmin: number = 0): Promise<Partial<SpaceEnv>> {\n if (!this.sharePermissionsQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n enabled: shares.enabled,\n permissions: sharesMembers.permissions,\n rootId: sql`${files.id}`.as('rootId'),\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: users.login,\n rootSpaceId: sql`${spaces.id}`.as('rootSpaceId'),\n rootSpaceAlias: sql`${spaces.alias}`.as('rootSpaceAlias'),\n rootPath: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`.as('rootPath'),\n rootInTrash: files.inTrash,\n rootExternalPath: shares.externalPath,\n rootExternalParentShareId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('rootExternalParentShareId'),\n rootSpaceRootId: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`.as('rootSpaceRootId'),\n rootSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('rootSpaceRootExternalPath')\n }\n const filters: SQL[] = [eq(shares.alias, sql.placeholder('shareAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, permissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // in case of share child from a share with external path, child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).as('union_alias')\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n root: {\n id: unionAlias.rootId,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: {\n path: unionAlias.rootPath,\n inTrash: unionAlias.rootInTrash,\n space: { id: unionAlias.rootSpaceId, alias: unionAlias.rootSpaceAlias },\n root: { id: unionAlias.rootSpaceRootId, externalPath: unionAlias.rootSpaceRootExternalPath }\n },\n externalPath: unionAlias.rootExternalPath,\n externalParentShareId: unionAlias.rootExternalParentShareId\n }\n }\n this.sharePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n // `isAdmin` is used in `fromAdminSharesQuery` function\n const [r]: Partial<SpaceEnv>[] = await this.sharePermissionsQuery.execute({ userId, shareAlias, isAdmin })\n if (r) {\n r.permissions = uniquePermissions(r.permissions)\n }\n return r\n }\n\n @CacheDecorator(900, true)\n async childSharesCount(shareId: number): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, parentId) AS\n (SELECT ${shares.id}, ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.parentId} IS NOT NULL\n AND ${shares.parentId} = ${shareId}\n UNION\n SELECT ${childShare.id}, cs.parentId\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT COUNT(children.id) as count\n FROM children\n GROUP BY parentId\n `\n const [r]: { count: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].count : 0\n }\n\n async clearCachePermissions(shareAlias: string, userIds: number[]) {\n // `permissions` argument must match with `this.permissions.name` function\n for (const userId of userIds) {\n const pattern = this.cache.genSlugKey(this.constructor.name, this.permissions.name, userId, shareAlias, '*')\n const keys = await this.cache.keys(pattern)\n if (keys.length) {\n this.logger.verbose(`${this.clearCachePermissions.name} - ${JSON.stringify(keys)}`)\n this.cache.mdel(keys).catch((e: Error) => this.logger.error(`${this.clearCachePermissions.name} - ${e}`))\n }\n }\n }\n\n private shareExistsForAlias(alias: string): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: eq(shares.alias, alias) })\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromAdminSharesQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sql.placeholder('isAdmin'), sql.raw('1')), isNull(shares.ownerId), ...filters]\n return this.db\n .select(select)\n .from(shares)\n .where(and(...where))\n }\n\n private shareFileSelect(): any[] {\n const shareRootFile: any = alias(files, 'shareRootFile')\n const parentShare: any = alias(shares, 'parentShare')\n const parentShareFile: any = alias(files, 'parentShareFile')\n const childShareFromRoot: any = alias(spacesRoots, 'childShareFromRoot')\n const shareMembers: any = alias(sharesMembers, 'shareMembers')\n const selectFile: FileSpace | SelectedFields<any, any> = {\n id: sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL,\n ${shareRootFile.id}, ${files.id})`.as('fileId'),\n ownerId: sql`IF (${shares.spaceId} IS NOT NULL,\n NULL, ${files.ownerId})`.as('fileOwnerId'),\n name: sql`IF (${shares.fileId} IS NULL AND ${spacesRoots.id} IS NOT NULL,\n ${spacesRoots.name},\n IF(${childShareFromRoot.id} IS NOT NULL\n OR ${shares.fileId} = ${parentShare.fileId}, ${parentShare.name}, ${files.name}))`.as('fileName'),\n path: sql`IF (${shareRootFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(shareRootFile)}, '/'), ''),\n IF(${parentShareFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n IF(${parentShareFile.id} = ${shares.fileId}, '.',\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(parentShareFile)}, '/'), '')),\n IF(${shares.fileId} IS NOT NULL, ${filePathSQL(files)}, '.')))`.as('filePath'),\n isDir: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.isDir}, ${files.isDir})`.as('fileIsDir'),\n inTrash: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.inTrash}, ${files.inTrash})`.as('fileInTrash'),\n mime: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.mime}, ${files.mime})`.as('fileMime'),\n space: {\n alias: spaces.alias,\n name: spaces.name,\n root: {\n alias: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.alias}, NULL)`,\n name: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.name}, NULL)`\n }\n }\n }\n return [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers]\n }\n\n private shareFileJoin(\n select: any,\n shareRootFile: any,\n parentShare: any,\n parentShareFile: any,\n childShareFromRoot: any,\n shareMembers: any\n ): MySqlSelectDynamic<any> {\n return this.db\n .select(select)\n .from(shares)\n .leftJoin(files, and(isNotNull(shares.fileId), eq(files.id, shares.fileId)))\n .leftJoin(spaces, and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceId), eq(spaces.id, shares.spaceId)))\n .leftJoin(\n spacesRoots,\n and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceRootId), eq(spacesRoots.id, shares.spaceRootId))\n )\n .leftJoin(\n childShareFromRoot,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.parentId),\n isNull(shares.fileId),\n isNotNull(shares.spaceRootId),\n eq(childShareFromRoot.id, shares.spaceRootId)\n )\n )\n .leftJoin(\n shareRootFile,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.spaceRootId),\n or(\n and(isNull(shares.parentId), eq(shareRootFile.id, spacesRoots.fileId)),\n and(isNotNull(shares.parentId), eq(shareRootFile.id, childShareFromRoot.fileId))\n )\n )\n )\n .leftJoin(parentShare, and(isNotNull(shares.parentId), eq(parentShare.id, shares.parentId)))\n .leftJoin(parentShareFile, and(isNotNull(shares.parentId), isNotNull(parentShare.fileId), eq(parentShareFile.id, parentShare.fileId)))\n .leftJoin(shareMembers, eq(shareMembers.shareId, shares.id))\n .$dynamic()\n }\n\n private async setShareCounts(shares: ShareFile[]) {\n if (!shares.length) return\n for (const share of shares) {\n share.counts.shares = await this.childSharesCount(share.id)\n }\n }\n}\n"],"names":["SharesQueries","uniqueShareAlias","name","alias","createSlug","count","shareExistsForAlias","shareExistsForOwner","userId","shareId","db","query","shares","findFirst","columns","id","where","and","eq","ownerId","childExistsForShareOwner","childId","isAdmin","childShare","withChildren","sql","parentId","r","execute","length","findHighestParentShare","childShareId","parentShare","withParents","selectShares","props","convertToWhere","select","from","selectParentSharesFromSpaceId","spaceId","ownerIds","isNull","spaceRootId","push","inArray","sharesQuotaExternalPaths","storageUsage","storageQuota","externalPath","isNotNull","listShareLinks","user","asAdmin","shareLinksListQuery","selectFile","shareRootFile","parentShareFile","childShareFromRoot","shareMembers","shareFileSelect","linkGuest","users","description","parent","file","link","links","email","uuid","requireAuth","nbAccess","limitAccess","permissions","isActive","language","expiresAt","createdAt","currentAccess","lastAccess","currentIp","lastIp","shareFileJoin","innerJoin","linkId","type","SHARE_TYPE","LINK","or","placeholder","prepare","shareLinks","getShareWithMembers","shareWithMembersQuery","linkUsers","enabled","storageIndexing","modifiedAt","disabledAt","concatDistinctObjectsInArray","login","userFullNameSQL","role","USER_ROLE","GUEST","MEMBER_TYPE","USER","dateTimeUTC","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","raw","leftJoin","groupId","groupBy","limit","share","members","popFromObject","createShare","dbGetInsertedId","insert","values","updateShare","set","dbCheckAffectedRows","update","logger","debug","JSON","stringify","e","error","deleteShare","delete","updateMember","filters","sharesMembers","updateMembers","add","remove","status","ACTION","ADD","userIds","groupIds","UPDATE","DELETE","m","shareEnv","shareSpaceRoot","spacesRoots","fileId","inSharesRepository","mapWith","Boolean","root","files","owner","path","filePathSQL","inTrash","space","spaces","spaceExternalRootId","shareIds","shareIdsQuery","unionAlias","union","fromUserQuery","fromGroupsQuery","fromAdminSharesQuery","as","map","listShares","sharesListQuery","hasComments","fileHasCommentsSubquerySQL","counts","shareType","COMMON","setShareCounts","listChildShares","mime","s","ShareChild","listSpaceShares","childShareSpaceRoot","membersFromChildSharesPermissions","matchPermRegexp","asParent","append","shareRootFiles","options","shareRootFilesQuery","originOwner","selectUnion","isDir","size","ctime","mtime","originOwnerLogin","originSpaceAlias","originSpaceRootExternalPath","rootId","rootAlias","rootName","rootDescription","rootEnabled","rootExternalPath","rootPermissions","rootOwnerLogin","rootOwnerEmail","rootOwnerFullName","childShareAlias","childShareName","childShareType","syncPathId","syncPaths","syncPathClientId","syncClients","syncPathClientName","info","ne","fromUser","$dynamic","fromGroups","fromAdminShares","SHARE_ALL_OPERATIONS","q","clientId","origin","ownerLogin","spaceAlias","spaceRootExternalPath","spaceGroupConcatPermissions","fullName","parse","syncs","clientName","fps","withHasComments","withShares","withSyncs","f","uniquePermissions","shareAlias","sharePermissionsQuery","rootOwnerId","rootSpaceId","rootSpaceAlias","rootPath","rootInTrash","rootExternalParentShareId","rootSpaceRootId","rootSpaceRootExternalPath","externalParentShareId","childSharesCount","clearCachePermissions","pattern","cache","genSlugKey","keys","verbose","mdel","catch","usersGroups","Logger"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/shares/services/shares-queries.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, count, eq, inArray, isNotNull, isNull, ne, or, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, MySqlSelectDynamic, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { uniquePermissions } from '../../../common/functions'\nimport { createSlug, popFromObject } from '../../../common/shared'\nimport { CacheDecorator } from '../../../infrastructure/cache/cache.decorator'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport type { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport type { FileProps } from '../../files/interfaces/file-props.interface'\nimport type { FileSpace } from '../../files/interfaces/file-space.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { links } from '../../links/schemas/links.schema'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { spacesRoots } from '../../spaces/schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../../spaces/schemas/spaces.schema'\nimport { syncClients } from '../../sync/schemas/sync-clients.schema'\nimport { syncPaths } from '../../sync/schemas/sync-paths.schema'\nimport { GROUP_TYPE } from '../../users/constants/group'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport type { Owner } from '../../users/interfaces/owner.interface'\nimport type { UserModel } from '../../users/models/user.model'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SHARE_ALL_OPERATIONS, SHARE_TYPE } from '../constants/shares'\nimport type { ShareMemberDto } from '../dto/create-or-update-share.dto'\nimport type { ShareChildMember, ShareChildQuery } from '../interfaces/share-child.interface'\nimport type { ShareEnv } from '../interfaces/share-env.interface'\nimport type { ShareFile } from '../interfaces/share-file.interface'\nimport type { ShareLink } from '../interfaces/share-link.interface'\nimport type { ShareProps } from '../interfaces/share-props.interface'\nimport { ShareChild } from '../models/share-child.model'\nimport type { ShareMembers } from '../schemas/share-members.interface'\nimport type { Share } from '../schemas/share.interface'\nimport { sharesMembers } from '../schemas/shares-members.schema'\nimport { shares } from '../schemas/shares.schema'\n\n@Injectable()\nexport class SharesQueries {\n private readonly logger = new Logger(SharesQueries.name)\n private sharesListQuery: MySql2PreparedQuery<any> = null\n private shareIdsQuery: MySql2PreparedQuery<any> = null\n private shareLinksListQuery: MySql2PreparedQuery<any> = null\n private shareWithMembersQuery: MySql2PreparedQuery<any> = null\n private sharePermissionsQuery: MySql2PreparedQuery<any> = null\n private shareRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache\n ) {}\n\n async uniqueShareAlias(name: string): Promise<string> {\n let alias = createSlug(name, true)\n let count = 0\n // Personal space name is reserved\n while (await this.shareExistsForAlias(alias)) {\n count += 1\n alias = `${name}-${count}`\n }\n return alias\n }\n\n shareExistsForOwner(userId: number, shareId: number): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: and(eq(shares.id, shareId), eq(shares.ownerId, userId)) })\n }\n\n async childExistsForShareOwner(userId: number, shareId: number, childId: number, isAdmin: boolean = false): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${shares.ownerId} IS NULL AND ${+isAdmin} = 1))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id\n FROM child\n WHERE child.id = ${childId}\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n async findHighestParentShare(childShareId: number): Promise<number> {\n const parentShare: any = alias(shares, 'parentShare')\n const withParents: any = sql`\n WITH RECURSIVE parent (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${childShareId}\n UNION\n SELECT ${parentShare.id},\n ${parentShare.parentId}\n FROM ${shares} AS parentShare\n INNER JOIN parent AS cs ON ${parentShare.id} = cs.parentId)\n SELECT parent.id\n FROM parent\n WHERE parent.parentId is NULL\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withParents)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n selectShares(props: Partial<Record<keyof Share, any>>): Promise<Partial<Share>[]> {\n const where: SQL[] = convertToWhere(shares, props)\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId, alias: shares.alias, name: shares.name })\n .from(shares)\n .where(and(...where))\n }\n\n selectParentSharesFromSpaceId(spaceId: number, ownerIds?: number[]): Promise<Partial<Share>[]> {\n const where: SQL[] = [eq(shares.spaceId, spaceId), isNull(shares.spaceRootId), isNull(shares.parentId)]\n if (ownerIds && ownerIds.length) {\n where.push(inArray(shares.ownerId, ownerIds))\n }\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId })\n .from(shares)\n .where(and(...where))\n }\n\n sharesQuotaExternalPaths(shareId?: number): Promise<Partial<Share>[]> {\n return this.db\n .select({\n id: shares.id,\n alias: shares.alias,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n externalPath: shares.externalPath\n })\n .from(shares)\n .where(and(isNotNull(shares.externalPath), ...[...(shareId ? [eq(shares.id, shareId)] : [])]))\n }\n\n async listShareLinks(user: UserModel, shareId: number, asAdmin?: boolean): Promise<ShareLink>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin?: boolean): Promise<ShareLink[]>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin: boolean = false): Promise<ShareLink[] | ShareLink> {\n if (!this.shareLinksListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkGuest: any = alias(users, 'linkGuest')\n const select: ShareLink | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n name: shares.name,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n description: shares.description,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n link: {\n id: links.id,\n name: links.name,\n email: links.email,\n uuid: links.uuid,\n requireAuth: links.requireAuth,\n nbAccess: links.nbAccess,\n limitAccess: links.limitAccess,\n permissions: shareMembers.permissions,\n isActive: linkGuest.isActive,\n language: linkGuest.language,\n expiresAt: links.expiresAt,\n createdAt: links.createdAt,\n currentAccess: linkGuest.currentAccess,\n lastAccess: linkGuest.lastAccess,\n currentIp: linkGuest.currentIp,\n lastIp: linkGuest.lastIp\n }\n }\n this.shareLinksListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .innerJoin(links, eq(links.id, shareMembers.linkId))\n .innerJoin(linkGuest, eq(linkGuest.id, links.userId))\n .where(\n and(\n eq(shares.type, SHARE_TYPE.LINK),\n or(eq(sql.placeholder('shareId'), 0), eq(shares.id, sql.placeholder('shareId'))),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .prepare()\n }\n const shareLinks: ShareLink[] = await this.shareLinksListQuery.execute({\n userId: user.id,\n shareId: shareId || 0,\n isAdmin: +user.isAdmin,\n asAdmin: +asAdmin\n })\n if (shareId) {\n return shareLinks.length ? shareLinks[0] : null\n }\n return shareLinks\n }\n\n async getShareWithMembers(user: UserModel, shareId: number, asAdmin = false): Promise<ShareProps> {\n // asAdmin : true if the user is the owner of the parent share or if the share is requested from the administration\n if (!this.shareWithMembersQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkUsers: any = alias(users, 'linkUsers')\n const select: ShareProps | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n enabled: shares.enabled,\n description: shares.description,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n storageIndexing: shares.storageIndexing,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n disabledAt: shares.disabledAt,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n users: concatDistinctObjectsInArray(users.id, {\n id: users.id,\n login: users.login,\n name: userFullNameSQL(users),\n type: sql`IF (${users.role} = ${USER_ROLE.GUEST}, ${MEMBER_TYPE.GUEST}, ${MEMBER_TYPE.USER})`,\n description: users.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n }),\n groups: concatDistinctObjectsInArray(groups.id, {\n id: groups.id,\n name: groups.name,\n type: sql`IF (${groups.type} = ${GROUP_TYPE.PERSONAL}, ${MEMBER_TYPE.PGROUP}, ${MEMBER_TYPE.GROUP})`,\n description: groups.description,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n login: linkUsers.login,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n description: links.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n })\n }\n this.shareWithMembersQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .leftJoin(users, and(isNull(shareMembers.linkId), eq(users.id, shareMembers.userId)))\n .leftJoin(groups, eq(groups.id, shareMembers.groupId))\n .leftJoin(linkUsers, and(isNotNull(shareMembers.linkId), eq(linkUsers.id, shareMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, shareMembers.linkId)))\n .where(\n and(\n eq(shares.id, sql.placeholder('shareId')),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .groupBy(shares.id)\n .limit(1)\n .prepare()\n }\n const [share] = await this.shareWithMembersQuery.execute({ userId: user.id, shareId, isAdmin: +user.isAdmin, asAdmin: +asAdmin })\n if (!share) return null\n // merge members\n share.members = [...popFromObject('users', share), ...popFromObject('links', share), ...popFromObject('groups', share)]\n return share as ShareProps\n }\n\n async createShare(share: Partial<Share>): Promise<number> {\n return dbGetInsertedId(await this.db.insert(shares).values(share as Share))\n }\n\n async updateShare(id: number, set: Partial<Record<keyof Share, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(shares).set(set).where(eq(shares.id, id)).limit(1), 1)\n this.logger.debug(`${this.updateShare.name} - share (${id}) was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateShare.name} - share (${id}) was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async deleteShare(shareId: number): Promise<boolean> {\n return dbCheckAffectedRows(await this.db.delete(shares).where(eq(shares.id, shareId)), 1)\n }\n\n async updateMember(set: Partial<Record<keyof ShareMembers, any>>, filters: Partial<Record<keyof ShareMembers, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(sharesMembers, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug(`${this.updateMember.name} - ${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateMember.name} - ${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async updateMembers(\n shareId: number,\n add: ShareMemberDto[],\n update: Record<string | 'object', Partial<ShareMembers> | ShareMemberDto>[],\n remove: ShareMemberDto[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }>> {\n // store status\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }> = {\n [ACTION.ADD]: { userIds: [], groupIds: [] },\n [ACTION.UPDATE]: { userIds: [], groupIds: [] },\n [ACTION.DELETE]: { userIds: [], groupIds: [] }\n }\n // add\n for (const m of add) {\n try {\n dbCheckAffectedRows(\n await this.db.insert(sharesMembers).values({\n shareId: shareId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n permissions: m.permissions\n } as ShareMembers),\n 1\n )\n status[ACTION.ADD][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) added to the share (${shareId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not added to the share (${shareId}) -> : ${e}`)\n }\n }\n // update\n for (const props of update) {\n const m: ShareMemberDto = popFromObject('object', props)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(props)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.groupId, m.id)\n )\n )\n .limit(1),\n 1\n )\n status[ACTION.UPDATE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) was updated on share (${shareId}) : ${JSON.stringify(props)}`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not updated on share (${shareId}) : ${JSON.stringify(props)} : ${e}`)\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(sharesMembers)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.groupId, m.id)\n )\n ),\n 1\n )\n status[ACTION.DELETE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) removed from share (${shareId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not removed from share (${shareId}) : ${e}`)\n }\n }\n return status\n }\n\n async shareEnv(shareId: number): Promise<Partial<ShareEnv>> {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const select: ShareEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n enabled: shares.enabled,\n fileId: shares.fileId,\n spaceId: shares.spaceId,\n spaceRootId: shares.spaceRootId,\n inSharesRepository: sql`${1}`.mapWith(Boolean),\n root: {\n id: files.id,\n owner: { id: users.id, login: users.login },\n file: {\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`,\n inTrash: files.inTrash,\n space: { id: spaces.id, alias: spaces.alias },\n root: {\n id: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`,\n externalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`\n }\n },\n externalPath: shares.externalPath\n }\n }\n const [shareEnv] = await this.db\n .select(select)\n .from(shares)\n .leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n and(\n isNull(shares.externalPath),\n or(and(isNotNull(shares.fileId), eq(files.id, shares.fileId)), and(isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId)))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), isNotNull(files.spaceExternalRootId), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n .where(eq(shares.id, shareId))\n .execute()\n return shareEnv\n }\n\n @CacheDecorator()\n async shareIds(userId: number, isAdmin: number): Promise<number[]> {\n if (!this.shareIdsQuery) {\n const unionAlias = union(\n this.fromUserQuery({ id: shares.id }),\n this.fromGroupsQuery({ id: shares.id }),\n this.fromAdminSharesQuery({ id: shares.id })\n ).as('unionAlias')\n this.shareIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n return (await this.shareIdsQuery.execute({ userId: userId, isAdmin: +isAdmin })).map((r: { id: number }) => r.id)\n }\n\n async listShares(user: UserModel): Promise<ShareFile[]> {\n if (!this.sharesListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const select: ShareFile | SelectedFields<any, any> = {\n id: shares.id,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL, 1, 0)`.mapWith(Boolean),\n description: shares.description,\n enabled: shares.enabled,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n parent: {\n id: isNotNull(parentShare.id),\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n hasComments: fileHasCommentsSubquerySQL(\n sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL, ${shareRootFile.id}, ${files.id})`\n ),\n counts: {\n users: count(sql`CASE WHEN ${shareMembers.userId} IS NOT NULL AND ${shareMembers.linkId} IS NULL THEN 1 END`),\n groups: count(shareMembers.groupId),\n links: count(shareMembers.linkId)\n }\n }\n this.sharesListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .where(\n and(\n eq(shares.type, sql.placeholder('shareType')),\n or(eq(shares.ownerId, sql.placeholder('userId')), and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId)))\n )\n )\n .groupBy(shares.id)\n .prepare()\n }\n const r: ShareFile[] = await this.sharesListQuery.execute({ userId: user.id, shareType: SHARE_TYPE.COMMON, isAdmin: +user.isAdmin })\n await this.setShareCounts(r)\n return r\n }\n\n async listChildShares(userId: number, shareId: number, isAdmin: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n ${shares.fileId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${isAdmin} = 1 AND ${shares.ownerId} IS NULL))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n ${childShare.fileId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n WHERE child.id != ${shareId}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async listSpaceShares(spaceId: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const childShareSpaceRoot: any = alias(spacesRoots, 'childShareSpaceRoot')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n COALESCE(${shares.fileId}, ${shareSpaceRoot.fileId}) AS fileId\n FROM ${shares}\n LEFT JOIN ${spacesRoots} AS shareSpaceRoot ON ${shares.spaceRootId} = ${shareSpaceRoot.id}\n WHERE ${shares.spaceId} = ${spaceId}\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n COALESCE(${childShare.fileId}, ${childShareSpaceRoot.fileId}) AS fileId\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id\n LEFT JOIN ${spacesRoots} AS childShareSpaceRoot ON ${childShare.spaceRootId} = ${childShareSpaceRoot.id})\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async membersFromChildSharesPermissions(\n shareId: number,\n userIds: number[] | 'all',\n matchPermRegexp?: string,\n asParent: boolean = true\n ): Promise<ShareChildMember[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, alias, name) AS\n (SELECT ${shares.id}, ${shares.alias}, ${shares.name}\n FROM ${shares}\n WHERE ${asParent ? shares.parentId : shares.id} = ${shareId}\n AND ${userIds === 'all' ? 1 : inArray(shares.ownerId, userIds)}\n UNION\n SELECT ${childShare.id}, ${childShare.alias}, ${childShare.name}\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT ${sharesMembers.id} as id,\n ${sharesMembers.userId} as userId,\n ${sharesMembers.permissions} as userPermissions,\n ${sharesMembers.shareId},\n children.alias as shareAlias,\n children.name as shareName\n FROM children\n INNER JOIN ${sharesMembers} ON children.id = ${sharesMembers.shareId}\n `\n if (matchPermRegexp) {\n withChildren.append(sql`WHERE ${sharesMembers.permissions} REGEXP ${matchPermRegexp}`)\n }\n const [r]: ShareChildMember[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r\n }\n\n async shareRootFiles(user: UserModel, options: { withShares?: boolean; withHasComments?: boolean; withSyncs?: boolean }): Promise<FileProps[]> {\n if (!this.shareRootFilesQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const originOwner: any = alias(users, 'originOwner')\n const childShare: any = alias(shares, 'childShare')\n const selectUnion: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, '')`.as('path'),\n isDir: files.isDir,\n inTrash: files.inTrash,\n size: files.size,\n ctime: files.ctime,\n mtime: files.mtime,\n mime: files.mime,\n originOwnerId: sql`${originOwner.id}`.as('originOwnerId'),\n originOwnerLogin: sql`${originOwner.login}`.as('originOwnerLogin'),\n originSpaceId: sql`${spaces.id}`.as('originSpaceId'),\n originSpaceAlias: sql`${spaces.alias}`.as('originSpaceAlias'),\n originSpaceExternalRootId: sql`${files.spaceExternalRootId}`.as('originSpaceExternalRootId'),\n originSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('originSpaceRootExternalPath'),\n originShareExternalId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('originShareExternalId'),\n rootId: sql`${shares.id}`.as('rootId'),\n rootAlias: shares.alias,\n rootName: shares.name,\n rootDescription: shares.description,\n rootEnabled: shares.enabled,\n rootExternalPath: shares.externalPath,\n rootPermissions: sharesMembers.permissions,\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: sql`${users.login}`.as('rootOwnerLogin'),\n rootOwnerEmail: sql`${users.email}`.as('rootOwnerEmail'),\n rootOwnerFullName: userFullNameSQL(users).as('rootOwnerFullName'),\n childShareId: sql`${childShare.id}`.as('childShareId'),\n childShareAlias: sql`${childShare.alias}`.as('childShareAlias'),\n childShareName: sql`${childShare.name}`.as('childShareName'),\n childShareType: sql`${childShare.type}`.as('childShareType'),\n syncPathId: sql`${syncPaths.id}`.as('syncPathId'),\n syncPathClientId: sql`${syncClients.id}`.as('syncPathClientId'),\n syncPathClientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`.as('syncPathClientName')\n }\n const filters: SQL[] = [or(isNull(shares.ownerId), ne(shares.ownerId, sql.placeholder('userId')))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, rootPermissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // if the child share is from a share with an external path, the child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNull(shares.fileId), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(spaces, and(isNull(shares.externalPath), isNotNull(files.spaceId), eq(spaces.id, files.spaceId)))\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(\n childShare,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(childShare.ownerId, sql.placeholder('userId')),\n eq(childShare.parentId, shares.id),\n or(\n and(isNull(childShare.externalPath), isNotNull(childShare.fileId), eq(childShare.fileId, shares.fileId)),\n and(\n isNull(childShare.externalPath),\n isNull(childShare.fileId),\n eq(childShare.spaceId, shares.spaceId),\n eq(childShare.spaceRootId, shares.spaceRootId)\n ),\n and(isNotNull(childShare.externalPath), isNull(childShare.fileId), eq(shares.externalPath, childShare.externalPath))\n )\n )\n )\n .leftJoin(syncClients, and(eq(sql.placeholder('withSyncs'), sql.raw('1')), eq(syncClients.ownerId, sql.placeholder('userId'))))\n .leftJoin(\n syncPaths,\n and(\n eq(sql.placeholder('withSyncs'), sql.raw('1')),\n eq(syncPaths.clientId, syncClients.id),\n isNull(syncPaths.fileId),\n eq(syncPaths.shareId, shares.id)\n )\n )\n .leftJoin(users, eq(users.id, shares.ownerId))\n .leftJoin(originOwner, and(isNull(shares.externalPath), eq(originOwner.id, files.ownerId)))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).as('union_alias')\n const select: FileProps | SelectedFields<any, any> = {\n id: unionAlias.id,\n path: unionAlias.path,\n isDir: unionAlias.isDir,\n inTrash: unionAlias.inTrash,\n size: unionAlias.size,\n ctime: unionAlias.ctime,\n mtime: unionAlias.mtime,\n mime: unionAlias.mime,\n origin: {\n ownerId: unionAlias.originOwnerId,\n ownerLogin: unionAlias.originOwnerLogin,\n spaceId: unionAlias.originSpaceId,\n spaceAlias: unionAlias.originSpaceAlias,\n spaceExternalRootId: unionAlias.originSpaceExternalRootId,\n spaceRootExternalPath: unionAlias.originSpaceRootExternalPath,\n shareExternalId: unionAlias.originShareExternalId\n },\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n description: unionAlias.rootDescription,\n enabled: unionAlias.rootEnabled,\n externalPath: unionAlias.rootExternalPath,\n permissions: spaceGroupConcatPermissions(unionAlias.rootPermissions),\n owner: {\n id: unionAlias.rootOwnerId,\n login: unionAlias.rootOwnerLogin,\n email: unionAlias.rootOwnerEmail,\n fullName: unionAlias.rootOwnerFullName\n } satisfies Owner\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(unionAlias.childShareId, {\n id: unionAlias.childShareId,\n alias: unionAlias.childShareAlias,\n name: unionAlias.childShareName,\n type: unionAlias.childShareType\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(unionAlias.syncPathId, {\n id: unionAlias.syncPathId,\n clientId: unionAlias.syncPathClientId,\n clientName: unionAlias.syncPathClientName\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(unionAlias.id)}, 0)`.mapWith(Boolean)\n }\n this.shareRootFilesQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.rootId).prepare()\n }\n const fps: FileProps[] = await this.shareRootFilesQuery.execute({\n userId: user.id,\n isAdmin: +user.isAdmin,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n for (const f of fps) {\n f.root.permissions = uniquePermissions(f.root.permissions)\n }\n return fps\n }\n\n @CacheDecorator()\n async permissions(userId: number, shareAlias: string, isAdmin: number = 0): Promise<Partial<SpaceEnv>> {\n if (!this.sharePermissionsQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n enabled: shares.enabled,\n permissions: sharesMembers.permissions,\n rootId: sql`${files.id}`.as('rootId'),\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: users.login,\n rootSpaceId: sql`${spaces.id}`.as('rootSpaceId'),\n rootSpaceAlias: sql`${spaces.alias}`.as('rootSpaceAlias'),\n rootPath: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`.as('rootPath'),\n rootInTrash: files.inTrash,\n rootExternalPath: shares.externalPath,\n rootExternalParentShareId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('rootExternalParentShareId'),\n rootSpaceRootId: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`.as('rootSpaceRootId'),\n rootSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('rootSpaceRootExternalPath')\n }\n const filters: SQL[] = [eq(shares.alias, sql.placeholder('shareAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, permissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // in case of share child from a share with external path, child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).as('union_alias')\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n root: {\n id: unionAlias.rootId,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: {\n path: unionAlias.rootPath,\n inTrash: unionAlias.rootInTrash,\n space: { id: unionAlias.rootSpaceId, alias: unionAlias.rootSpaceAlias },\n root: { id: unionAlias.rootSpaceRootId, externalPath: unionAlias.rootSpaceRootExternalPath }\n },\n externalPath: unionAlias.rootExternalPath,\n externalParentShareId: unionAlias.rootExternalParentShareId\n }\n }\n this.sharePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n // `isAdmin` is used in `fromAdminSharesQuery` function\n const [r]: Partial<SpaceEnv>[] = await this.sharePermissionsQuery.execute({ userId, shareAlias, isAdmin })\n if (r) {\n r.permissions = uniquePermissions(r.permissions)\n }\n return r\n }\n\n @CacheDecorator(900, true)\n async childSharesCount(shareId: number): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, parentId) AS\n (SELECT ${shares.id}, ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.parentId} IS NOT NULL\n AND ${shares.parentId} = ${shareId}\n UNION\n SELECT ${childShare.id}, cs.parentId\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT COUNT(children.id) as count\n FROM children\n GROUP BY parentId\n `\n const [r]: { count: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].count : 0\n }\n\n async clearCachePermissions(shareAlias: string, userIds: number[]) {\n // `permissions` argument must match with `this.permissions.name` function\n for (const userId of userIds) {\n const pattern = this.cache.genSlugKey(this.constructor.name, this.permissions.name, userId, shareAlias, '*')\n const keys = await this.cache.keys(pattern)\n if (keys.length) {\n this.logger.verbose(`${this.clearCachePermissions.name} - ${JSON.stringify(keys)}`)\n this.cache.mdel(keys).catch((e: Error) => this.logger.error(`${this.clearCachePermissions.name} - ${e}`))\n }\n }\n }\n\n private shareExistsForAlias(alias: string): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: eq(shares.alias, alias) })\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromAdminSharesQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sql.placeholder('isAdmin'), sql.raw('1')), isNull(shares.ownerId), ...filters]\n return this.db\n .select(select)\n .from(shares)\n .where(and(...where))\n }\n\n private shareFileSelect(): any[] {\n const shareRootFile: any = alias(files, 'shareRootFile')\n const parentShare: any = alias(shares, 'parentShare')\n const parentShareFile: any = alias(files, 'parentShareFile')\n const childShareFromRoot: any = alias(spacesRoots, 'childShareFromRoot')\n const shareMembers: any = alias(sharesMembers, 'shareMembers')\n const selectFile: FileSpace | SelectedFields<any, any> = {\n id: sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL,\n ${shareRootFile.id}, ${files.id})`.as('fileId'),\n ownerId: sql`IF (${shares.spaceId} IS NOT NULL,\n NULL, ${files.ownerId})`.as('fileOwnerId'),\n name: sql`IF (${shares.fileId} IS NULL AND ${spacesRoots.id} IS NOT NULL,\n ${spacesRoots.name},\n IF(${childShareFromRoot.id} IS NOT NULL\n OR ${shares.fileId} = ${parentShare.fileId}, ${parentShare.name}, ${files.name}))`.as('fileName'),\n path: sql`IF (${shareRootFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(shareRootFile)}, '/'), ''),\n IF(${parentShareFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n IF(${parentShareFile.id} = ${shares.fileId}, '.',\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(parentShareFile)}, '/'), '')),\n IF(${shares.fileId} IS NOT NULL, ${filePathSQL(files)}, '.')))`.as('filePath'),\n isDir: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.isDir}, ${files.isDir})`.as('fileIsDir'),\n inTrash: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.inTrash}, ${files.inTrash})`.as('fileInTrash'),\n mime: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.mime}, ${files.mime})`.as('fileMime'),\n space: {\n alias: spaces.alias,\n name: spaces.name,\n root: {\n alias: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.alias}, NULL)`,\n name: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.name}, NULL)`\n }\n }\n }\n return [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers]\n }\n\n private shareFileJoin(\n select: any,\n shareRootFile: any,\n parentShare: any,\n parentShareFile: any,\n childShareFromRoot: any,\n shareMembers: any\n ): MySqlSelectDynamic<any> {\n return this.db\n .select(select)\n .from(shares)\n .leftJoin(files, and(isNotNull(shares.fileId), eq(files.id, shares.fileId)))\n .leftJoin(spaces, and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceId), eq(spaces.id, shares.spaceId)))\n .leftJoin(\n spacesRoots,\n and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceRootId), eq(spacesRoots.id, shares.spaceRootId))\n )\n .leftJoin(\n childShareFromRoot,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.parentId),\n isNull(shares.fileId),\n isNotNull(shares.spaceRootId),\n eq(childShareFromRoot.id, shares.spaceRootId)\n )\n )\n .leftJoin(\n shareRootFile,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.spaceRootId),\n or(\n and(isNull(shares.parentId), eq(shareRootFile.id, spacesRoots.fileId)),\n and(isNotNull(shares.parentId), eq(shareRootFile.id, childShareFromRoot.fileId))\n )\n )\n )\n .leftJoin(parentShare, and(isNotNull(shares.parentId), eq(parentShare.id, shares.parentId)))\n .leftJoin(parentShareFile, and(isNotNull(shares.parentId), isNotNull(parentShare.fileId), eq(parentShareFile.id, parentShare.fileId)))\n .leftJoin(shareMembers, eq(shareMembers.shareId, shares.id))\n .$dynamic()\n }\n\n private async setShareCounts(shares: ShareFile[]) {\n if (!shares.length) return\n for (const share of shares) {\n share.counts.shares = await this.childSharesCount(share.id)\n }\n }\n}\n"],"names":["SharesQueries","uniqueShareAlias","name","alias","createSlug","count","shareExistsForAlias","shareExistsForOwner","userId","shareId","db","query","shares","findFirst","columns","id","where","and","eq","ownerId","childExistsForShareOwner","childId","isAdmin","childShare","withChildren","sql","parentId","r","execute","length","findHighestParentShare","childShareId","parentShare","withParents","selectShares","props","convertToWhere","select","from","selectParentSharesFromSpaceId","spaceId","ownerIds","isNull","spaceRootId","push","inArray","sharesQuotaExternalPaths","storageUsage","storageQuota","externalPath","isNotNull","listShareLinks","user","asAdmin","shareLinksListQuery","selectFile","shareRootFile","parentShareFile","childShareFromRoot","shareMembers","shareFileSelect","linkGuest","users","description","parent","file","link","links","email","uuid","requireAuth","nbAccess","limitAccess","permissions","isActive","language","expiresAt","createdAt","currentAccess","lastAccess","currentIp","lastIp","shareFileJoin","innerJoin","linkId","type","SHARE_TYPE","LINK","or","placeholder","prepare","shareLinks","getShareWithMembers","shareWithMembersQuery","linkUsers","enabled","storageIndexing","modifiedAt","disabledAt","concatDistinctObjectsInArray","login","userFullNameSQL","role","USER_ROLE","GUEST","MEMBER_TYPE","USER","dateTimeUTC","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","raw","leftJoin","groupId","groupBy","limit","share","members","popFromObject","createShare","dbGetInsertedId","insert","values","updateShare","set","dbCheckAffectedRows","update","logger","debug","JSON","stringify","e","error","deleteShare","delete","updateMember","filters","sharesMembers","updateMembers","add","remove","status","ACTION","ADD","userIds","groupIds","UPDATE","DELETE","m","shareEnv","shareSpaceRoot","spacesRoots","fileId","inSharesRepository","mapWith","Boolean","root","files","owner","path","filePathSQL","inTrash","space","spaces","spaceExternalRootId","shareIds","shareIdsQuery","unionAlias","union","fromUserQuery","fromGroupsQuery","fromAdminSharesQuery","as","map","listShares","sharesListQuery","hasComments","fileHasCommentsSubquerySQL","counts","shareType","COMMON","setShareCounts","listChildShares","mime","s","ShareChild","listSpaceShares","childShareSpaceRoot","membersFromChildSharesPermissions","matchPermRegexp","asParent","append","shareRootFiles","options","shareRootFilesQuery","originOwner","selectUnion","isDir","size","ctime","mtime","originOwnerId","originOwnerLogin","originSpaceId","originSpaceAlias","originSpaceExternalRootId","originSpaceRootExternalPath","originShareExternalId","rootId","rootAlias","rootName","rootDescription","rootEnabled","rootExternalPath","rootPermissions","rootOwnerId","rootOwnerLogin","rootOwnerEmail","rootOwnerFullName","childShareAlias","childShareName","childShareType","syncPathId","syncPaths","syncPathClientId","syncClients","syncPathClientName","info","ne","fromUser","$dynamic","fromGroups","fromAdminShares","SHARE_ALL_OPERATIONS","q","clientId","origin","ownerLogin","spaceAlias","spaceRootExternalPath","shareExternalId","spaceGroupConcatPermissions","fullName","parse","syncs","clientName","fps","withHasComments","withShares","withSyncs","f","uniquePermissions","shareAlias","sharePermissionsQuery","rootSpaceId","rootSpaceAlias","rootPath","rootInTrash","rootExternalParentShareId","rootSpaceRootId","rootSpaceRootExternalPath","externalParentShareId","childSharesCount","clearCachePermissions","pattern","cache","genSlugKey","keys","verbose","mdel","catch","usersGroups","Logger"],"mappings":"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"}
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "__esModule", {
9
9
  const _tsjest = require("@golevelup/ts-jest");
10
10
  const _common = require("@nestjs/common");
11
11
  const _testing = require("@nestjs/testing");
12
- const _functions = require("../../../common/functions");
12
+ const _shared = require("../../../common/shared");
13
13
  const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
14
14
  const _contextmanagerservice = require("../../../infrastructure/context/services/context-manager.service");
15
15
  const _constants = require("../../../infrastructure/database/constants");
@@ -204,7 +204,7 @@ describe(_spaceguard.SpaceGuard.name, ()=>{
204
204
  path: fakeSpace.root.file.path
205
205
  });
206
206
  expect(req.space.permissions).toBe(_spaces.SPACE_ALL_OPERATIONS);
207
- expect(req.space.envPermissions).toBe((0, _functions.intersectPermissions)(fakeSpace.permissions, fakeSpace.root.permissions).split(_spaces.SPACE_PERMS_SEP).filter((p)=>p !== _spaces.SPACE_OPERATION.DELETE).join(_spaces.SPACE_PERMS_SEP));
207
+ expect(req.space.envPermissions).toBe((0, _shared.intersectPermissions)(fakeSpace.permissions, fakeSpace.root.permissions).split(_spaces.SPACE_PERMS_SEP).filter((p)=>p !== _spaces.SPACE_OPERATION.DELETE).join(_spaces.SPACE_PERMS_SEP));
208
208
  expect(req.space.inFilesRepository).toBe(true);
209
209
  expect(req.space.inPersonalSpace).toBe(false);
210
210
  expect(req.space.inTrashRepository).toBe(false);