@dosgato/api 0.0.2

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 (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/access/access.model.d.ts +2 -0
  4. package/dist/access/access.model.js +14 -0
  5. package/dist/access/access.model.js.map +1 -0
  6. package/dist/access/access.resolver.d.ts +15 -0
  7. package/dist/access/access.resolver.js +133 -0
  8. package/dist/access/access.resolver.js.map +1 -0
  9. package/dist/asset/asset.database.d.ts +12 -0
  10. package/dist/asset/asset.database.js +116 -0
  11. package/dist/asset/asset.database.js.map +1 -0
  12. package/dist/asset/asset.model.d.ts +81 -0
  13. package/dist/asset/asset.model.js +271 -0
  14. package/dist/asset/asset.model.js.map +1 -0
  15. package/dist/asset/asset.resolver.d.ts +32 -0
  16. package/dist/asset/asset.resolver.js +325 -0
  17. package/dist/asset/asset.resolver.js.map +1 -0
  18. package/dist/asset/asset.service.d.ts +35 -0
  19. package/dist/asset/asset.service.js +225 -0
  20. package/dist/asset/asset.service.js.map +1 -0
  21. package/dist/assetfolder/assetfolder.database.d.ts +7 -0
  22. package/dist/assetfolder/assetfolder.database.js +85 -0
  23. package/dist/assetfolder/assetfolder.database.js.map +1 -0
  24. package/dist/assetfolder/assetfolder.model.d.ts +56 -0
  25. package/dist/assetfolder/assetfolder.model.js +160 -0
  26. package/dist/assetfolder/assetfolder.model.js.map +1 -0
  27. package/dist/assetfolder/assetfolder.resolver.d.ts +25 -0
  28. package/dist/assetfolder/assetfolder.resolver.js +255 -0
  29. package/dist/assetfolder/assetfolder.resolver.js.map +1 -0
  30. package/dist/assetfolder/assetfolder.service.d.ts +39 -0
  31. package/dist/assetfolder/assetfolder.service.js +355 -0
  32. package/dist/assetfolder/assetfolder.service.js.map +1 -0
  33. package/dist/assetrule/assetrule.database.d.ts +5 -0
  34. package/dist/assetrule/assetrule.database.js +161 -0
  35. package/dist/assetrule/assetrule.database.js.map +1 -0
  36. package/dist/assetrule/assetrule.model.d.ts +71 -0
  37. package/dist/assetrule/assetrule.model.js +221 -0
  38. package/dist/assetrule/assetrule.model.js.map +1 -0
  39. package/dist/assetrule/assetrule.resolver.d.ts +12 -0
  40. package/dist/assetrule/assetrule.resolver.js +100 -0
  41. package/dist/assetrule/assetrule.resolver.js.map +1 -0
  42. package/dist/assetrule/assetrule.service.d.ts +26 -0
  43. package/dist/assetrule/assetrule.service.js +184 -0
  44. package/dist/assetrule/assetrule.service.js.map +1 -0
  45. package/dist/createdb.d.ts +2 -0
  46. package/dist/createdb.js +541 -0
  47. package/dist/createdb.js.map +1 -0
  48. package/dist/data/data.database.d.ts +7 -0
  49. package/dist/data/data.database.js +265 -0
  50. package/dist/data/data.database.js.map +1 -0
  51. package/dist/data/data.indexing.d.ts +2 -0
  52. package/dist/data/data.indexing.js +23 -0
  53. package/dist/data/data.indexing.js.map +1 -0
  54. package/dist/data/data.model.d.ts +69 -0
  55. package/dist/data/data.model.js +206 -0
  56. package/dist/data/data.model.js.map +1 -0
  57. package/dist/data/data.resolver.d.ts +36 -0
  58. package/dist/data/data.resolver.js +384 -0
  59. package/dist/data/data.resolver.js.map +1 -0
  60. package/dist/data/data.service.d.ts +41 -0
  61. package/dist/data/data.service.js +374 -0
  62. package/dist/data/data.service.js.map +1 -0
  63. package/dist/datafolder/datafolder.database.d.ts +7 -0
  64. package/dist/datafolder/datafolder.database.js +72 -0
  65. package/dist/datafolder/datafolder.database.js.map +1 -0
  66. package/dist/datafolder/datafolder.model.d.ts +48 -0
  67. package/dist/datafolder/datafolder.model.js +139 -0
  68. package/dist/datafolder/datafolder.model.js.map +1 -0
  69. package/dist/datafolder/datafolder.resolver.d.ts +24 -0
  70. package/dist/datafolder/datafolder.resolver.js +243 -0
  71. package/dist/datafolder/datafolder.resolver.js.map +1 -0
  72. package/dist/datafolder/datafolder.service.d.ts +32 -0
  73. package/dist/datafolder/datafolder.service.js +223 -0
  74. package/dist/datafolder/datafolder.service.js.map +1 -0
  75. package/dist/dataroot/dataroot.model.d.ts +19 -0
  76. package/dist/dataroot/dataroot.model.js +72 -0
  77. package/dist/dataroot/dataroot.model.js.map +1 -0
  78. package/dist/dataroot/dataroot.resolver.d.ts +11 -0
  79. package/dist/dataroot/dataroot.resolver.js +87 -0
  80. package/dist/dataroot/dataroot.resolver.js.map +1 -0
  81. package/dist/dataroot/dataroot.service.d.ts +12 -0
  82. package/dist/dataroot/dataroot.service.js +62 -0
  83. package/dist/dataroot/dataroot.service.js.map +1 -0
  84. package/dist/datarule/datarule.database.d.ts +5 -0
  85. package/dist/datarule/datarule.database.js +144 -0
  86. package/dist/datarule/datarule.database.js.map +1 -0
  87. package/dist/datarule/datarule.model.d.ts +55 -0
  88. package/dist/datarule/datarule.model.js +200 -0
  89. package/dist/datarule/datarule.model.js.map +1 -0
  90. package/dist/datarule/datarule.resolver.d.ts +13 -0
  91. package/dist/datarule/datarule.resolver.js +114 -0
  92. package/dist/datarule/datarule.resolver.js.map +1 -0
  93. package/dist/datarule/datarule.service.d.ts +27 -0
  94. package/dist/datarule/datarule.service.js +191 -0
  95. package/dist/datarule/datarule.service.js.map +1 -0
  96. package/dist/fixtures.d.ts +1 -0
  97. package/dist/fixtures.js +697 -0
  98. package/dist/fixtures.js.map +1 -0
  99. package/dist/fixturetemplates.d.ts +110 -0
  100. package/dist/fixturetemplates.js +178 -0
  101. package/dist/fixturetemplates.js.map +1 -0
  102. package/dist/globalrule/globalrule.database.d.ts +5 -0
  103. package/dist/globalrule/globalrule.database.js +65 -0
  104. package/dist/globalrule/globalrule.database.js.map +1 -0
  105. package/dist/globalrule/globalrule.model.d.ts +34 -0
  106. package/dist/globalrule/globalrule.model.js +120 -0
  107. package/dist/globalrule/globalrule.model.js.map +1 -0
  108. package/dist/globalrule/globalrule.resolver.d.ts +11 -0
  109. package/dist/globalrule/globalrule.resolver.js +85 -0
  110. package/dist/globalrule/globalrule.resolver.js.map +1 -0
  111. package/dist/globalrule/globalrule.service.d.ts +18 -0
  112. package/dist/globalrule/globalrule.service.js +111 -0
  113. package/dist/globalrule/globalrule.service.js.map +1 -0
  114. package/dist/group/group.database.d.ts +41 -0
  115. package/dist/group/group.database.js +190 -0
  116. package/dist/group/group.database.js.map +1 -0
  117. package/dist/group/group.model.d.ts +19 -0
  118. package/dist/group/group.model.js +70 -0
  119. package/dist/group/group.model.js.map +1 -0
  120. package/dist/group/group.resolver.d.ts +27 -0
  121. package/dist/group/group.resolver.js +275 -0
  122. package/dist/group/group.resolver.js.map +1 -0
  123. package/dist/group/group.service.d.ts +46 -0
  124. package/dist/group/group.service.js +384 -0
  125. package/dist/group/group.service.js.map +1 -0
  126. package/dist/index.d.ts +18 -0
  127. package/dist/index.js +109 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/internal.d.ts +88 -0
  130. package/dist/internal.js +89 -0
  131. package/dist/internal.js.map +1 -0
  132. package/dist/migrations.d.ts +2 -0
  133. package/dist/migrations.js +41 -0
  134. package/dist/migrations.js.map +1 -0
  135. package/dist/organization/organization.database.d.ts +2 -0
  136. package/dist/organization/organization.database.js +16 -0
  137. package/dist/organization/organization.database.js.map +1 -0
  138. package/dist/organization/organization.model.d.ts +5 -0
  139. package/dist/organization/organization.model.js +35 -0
  140. package/dist/organization/organization.model.js.map +1 -0
  141. package/dist/organization/organization.resolver.d.ts +6 -0
  142. package/dist/organization/organization.resolver.js +43 -0
  143. package/dist/organization/organization.resolver.js.map +1 -0
  144. package/dist/organization/organization.service.d.ts +12 -0
  145. package/dist/organization/organization.service.js +35 -0
  146. package/dist/organization/organization.service.js.map +1 -0
  147. package/dist/page/page.database.d.ts +10 -0
  148. package/dist/page/page.database.js +269 -0
  149. package/dist/page/page.database.js.map +1 -0
  150. package/dist/page/page.indexing.d.ts +3 -0
  151. package/dist/page/page.indexing.js +26 -0
  152. package/dist/page/page.indexing.js.map +1 -0
  153. package/dist/page/page.migrations.d.ts +13 -0
  154. package/dist/page/page.migrations.js +55 -0
  155. package/dist/page/page.migrations.js.map +1 -0
  156. package/dist/page/page.model.d.ts +88 -0
  157. package/dist/page/page.model.js +272 -0
  158. package/dist/page/page.model.js.map +1 -0
  159. package/dist/page/page.resolver.d.ts +48 -0
  160. package/dist/page/page.resolver.js +542 -0
  161. package/dist/page/page.resolver.js.map +1 -0
  162. package/dist/page/page.service.d.ts +59 -0
  163. package/dist/page/page.service.js +399 -0
  164. package/dist/page/page.service.js.map +1 -0
  165. package/dist/page/page.util.d.ts +3 -0
  166. package/dist/page/page.util.js +16 -0
  167. package/dist/page/page.util.js.map +1 -0
  168. package/dist/page/page.validation.d.ts +2 -0
  169. package/dist/page/page.validation.js +21 -0
  170. package/dist/page/page.validation.js.map +1 -0
  171. package/dist/pagerule/pagerule.database.d.ts +5 -0
  172. package/dist/pagerule/pagerule.database.js +212 -0
  173. package/dist/pagerule/pagerule.database.js.map +1 -0
  174. package/dist/pagerule/pagerule.model.d.ts +71 -0
  175. package/dist/pagerule/pagerule.model.js +272 -0
  176. package/dist/pagerule/pagerule.model.js.map +1 -0
  177. package/dist/pagerule/pagerule.resolver.d.ts +13 -0
  178. package/dist/pagerule/pagerule.resolver.js +114 -0
  179. package/dist/pagerule/pagerule.resolver.js.map +1 -0
  180. package/dist/pagerule/pagerule.service.d.ts +23 -0
  181. package/dist/pagerule/pagerule.service.js +180 -0
  182. package/dist/pagerule/pagerule.service.js.map +1 -0
  183. package/dist/pagetree/pagetree.database.d.ts +13 -0
  184. package/dist/pagetree/pagetree.database.js +84 -0
  185. package/dist/pagetree/pagetree.database.js.map +1 -0
  186. package/dist/pagetree/pagetree.model.d.ts +43 -0
  187. package/dist/pagetree/pagetree.model.js +146 -0
  188. package/dist/pagetree/pagetree.model.js.map +1 -0
  189. package/dist/pagetree/pagetree.resolver.d.ts +23 -0
  190. package/dist/pagetree/pagetree.resolver.js +238 -0
  191. package/dist/pagetree/pagetree.resolver.js.map +1 -0
  192. package/dist/pagetree/pagetree.service.d.ts +25 -0
  193. package/dist/pagetree/pagetree.service.js +221 -0
  194. package/dist/pagetree/pagetree.service.js.map +1 -0
  195. package/dist/role/role.database.d.ts +17 -0
  196. package/dist/role/role.database.js +74 -0
  197. package/dist/role/role.database.js.map +1 -0
  198. package/dist/role/role.model.d.ts +26 -0
  199. package/dist/role/role.model.js +84 -0
  200. package/dist/role/role.model.js.map +1 -0
  201. package/dist/role/role.resolver.d.ts +27 -0
  202. package/dist/role/role.resolver.js +294 -0
  203. package/dist/role/role.resolver.js.map +1 -0
  204. package/dist/role/role.service.d.ts +33 -0
  205. package/dist/role/role.service.js +265 -0
  206. package/dist/role/role.service.js.map +1 -0
  207. package/dist/run.d.ts +1 -0
  208. package/dist/run.js +29 -0
  209. package/dist/run.js.map +1 -0
  210. package/dist/scalars/datetime.d.ts +2 -0
  211. package/dist/scalars/datetime.js +19 -0
  212. package/dist/scalars/datetime.js.map +1 -0
  213. package/dist/scalars/index.d.ts +3 -0
  214. package/dist/scalars/index.js +4 -0
  215. package/dist/scalars/index.js.map +1 -0
  216. package/dist/scalars/jsondata.d.ts +2 -0
  217. package/dist/scalars/jsondata.js +15 -0
  218. package/dist/scalars/jsondata.js.map +1 -0
  219. package/dist/scalars/urlsafestring.d.ts +4 -0
  220. package/dist/scalars/urlsafestring.js +28 -0
  221. package/dist/scalars/urlsafestring.js.map +1 -0
  222. package/dist/site/site.database.d.ts +15 -0
  223. package/dist/site/site.database.js +164 -0
  224. package/dist/site/site.database.js.map +1 -0
  225. package/dist/site/site.model.d.ts +62 -0
  226. package/dist/site/site.model.js +197 -0
  227. package/dist/site/site.model.js.map +1 -0
  228. package/dist/site/site.resolver.d.ts +30 -0
  229. package/dist/site/site.resolver.js +326 -0
  230. package/dist/site/site.resolver.js.map +1 -0
  231. package/dist/site/site.service.d.ts +35 -0
  232. package/dist/site/site.service.js +199 -0
  233. package/dist/site/site.service.js.map +1 -0
  234. package/dist/siterule/siterule.database.d.ts +5 -0
  235. package/dist/siterule/siterule.database.js +139 -0
  236. package/dist/siterule/siterule.database.js.map +1 -0
  237. package/dist/siterule/siterule.model.d.ts +53 -0
  238. package/dist/siterule/siterule.model.js +203 -0
  239. package/dist/siterule/siterule.model.js.map +1 -0
  240. package/dist/siterule/siterule.resolver.d.ts +12 -0
  241. package/dist/siterule/siterule.resolver.js +100 -0
  242. package/dist/siterule/siterule.resolver.js.map +1 -0
  243. package/dist/siterule/siterule.service.d.ts +23 -0
  244. package/dist/siterule/siterule.service.js +148 -0
  245. package/dist/siterule/siterule.service.js.map +1 -0
  246. package/dist/template/template.database.d.ts +15 -0
  247. package/dist/template/template.database.js +61 -0
  248. package/dist/template/template.database.js.map +1 -0
  249. package/dist/template/template.model.d.ts +32 -0
  250. package/dist/template/template.model.js +124 -0
  251. package/dist/template/template.model.js.map +1 -0
  252. package/dist/template/template.resolver.d.ts +22 -0
  253. package/dist/template/template.resolver.js +216 -0
  254. package/dist/template/template.resolver.js.map +1 -0
  255. package/dist/template/template.service.d.ts +27 -0
  256. package/dist/template/template.service.js +192 -0
  257. package/dist/template/template.service.js.map +1 -0
  258. package/dist/templaterule/templaterule.database.d.ts +5 -0
  259. package/dist/templaterule/templaterule.database.js +80 -0
  260. package/dist/templaterule/templaterule.database.js.map +1 -0
  261. package/dist/templaterule/templaterule.model.d.ts +38 -0
  262. package/dist/templaterule/templaterule.model.js +136 -0
  263. package/dist/templaterule/templaterule.model.js.map +1 -0
  264. package/dist/templaterule/templaterule.resolver.d.ts +12 -0
  265. package/dist/templaterule/templaterule.resolver.js +100 -0
  266. package/dist/templaterule/templaterule.resolver.js.map +1 -0
  267. package/dist/templaterule/templaterule.service.d.ts +19 -0
  268. package/dist/templaterule/templaterule.service.js +123 -0
  269. package/dist/templaterule/templaterule.service.js.map +1 -0
  270. package/dist/user/user.database.d.ts +22 -0
  271. package/dist/user/user.database.js +116 -0
  272. package/dist/user/user.database.js.map +1 -0
  273. package/dist/user/user.model.d.ts +42 -0
  274. package/dist/user/user.model.js +122 -0
  275. package/dist/user/user.model.js.map +1 -0
  276. package/dist/user/user.resolver.d.ts +16 -0
  277. package/dist/user/user.resolver.js +140 -0
  278. package/dist/user/user.resolver.js.map +1 -0
  279. package/dist/user/user.service.d.ts +29 -0
  280. package/dist/user/user.service.js +195 -0
  281. package/dist/user/user.service.js.map +1 -0
  282. package/dist/util/authservice.d.ts +28 -0
  283. package/dist/util/authservice.js +131 -0
  284. package/dist/util/authservice.js.map +1 -0
  285. package/dist/util/dates.d.ts +2 -0
  286. package/dist/util/dates.js +4 -0
  287. package/dist/util/dates.js.map +1 -0
  288. package/dist/util/filehandler.d.ts +15 -0
  289. package/dist/util/filehandler.js +48 -0
  290. package/dist/util/filehandler.js.map +1 -0
  291. package/dist/util/index.d.ts +13 -0
  292. package/dist/util/index.js +26 -0
  293. package/dist/util/index.js.map +1 -0
  294. package/dist/util/indexing.d.ts +12 -0
  295. package/dist/util/indexing.js +74 -0
  296. package/dist/util/indexing.js.map +1 -0
  297. package/dist/util/migrations.d.ts +15 -0
  298. package/dist/util/migrations.js +2 -0
  299. package/dist/util/migrations.js.map +1 -0
  300. package/dist/util/mutationlogger.d.ts +1 -0
  301. package/dist/util/mutationlogger.js +9 -0
  302. package/dist/util/mutationlogger.js.map +1 -0
  303. package/dist/util/registry.d.ts +25 -0
  304. package/dist/util/registry.js +66 -0
  305. package/dist/util/registry.js.map +1 -0
  306. package/dist/util/rules.d.ts +6 -0
  307. package/dist/util/rules.js +31 -0
  308. package/dist/util/rules.js.map +1 -0
  309. package/dist/util/sharedtypes.d.ts +3 -0
  310. package/dist/util/sharedtypes.js +2 -0
  311. package/dist/util/sharedtypes.js.map +1 -0
  312. package/dist/util/stopwords.d.ts +1 -0
  313. package/dist/util/stopwords.js +152 -0
  314. package/dist/util/stopwords.js.map +1 -0
  315. package/dist/version/version.model.d.ts +11 -0
  316. package/dist/version/version.model.js +46 -0
  317. package/dist/version/version.model.js.map +1 -0
  318. package/dist/version/version.resolver.d.ts +6 -0
  319. package/dist/version/version.resolver.js +45 -0
  320. package/dist/version/version.resolver.js.map +1 -0
  321. package/dist/versionedservice/service.d.ts +148 -0
  322. package/dist/versionedservice/service.js +547 -0
  323. package/dist/versionedservice/service.js.map +1 -0
  324. package/dist/versionedservice/types.d.ts +87 -0
  325. package/dist/versionedservice/types.js +11 -0
  326. package/dist/versionedservice/types.js.map +1 -0
  327. package/package.json +50 -0
  328. package/readme/DosGato.mwb +0 -0
  329. package/readme/DosGato.mwb.bak +0 -0
  330. package/readme/upgradeflow2.png +0 -0
@@ -0,0 +1,223 @@
1
+ import { BaseService } from '@txstate-mws/graphql-server';
2
+ import { PrimaryKeyLoader, OneToManyLoader } from 'dataloader-factory';
3
+ import { isNotNull, someAsync } from 'txstate-utils';
4
+ import { DataFolder, DosGatoService, getDataFolders, DataServiceInternal, createDataFolder, DataFolderResponse, renameDataFolder, deleteDataFolder, undeleteDataFolders, TemplateService, TemplateType, SiteService, DataFoldersResponse, moveDataFolders, DeletedFilter } from '../internal.js';
5
+ const dataFoldersByIdLoader = new PrimaryKeyLoader({
6
+ fetch: async (ids) => {
7
+ return await getDataFolders({ ids, deleted: DeletedFilter.SHOW });
8
+ },
9
+ extractId: (item) => item.id
10
+ });
11
+ const dataFoldersByInternalIdLoader = new PrimaryKeyLoader({
12
+ fetch: async (internalIds) => {
13
+ return await getDataFolders({ internalIds, deleted: DeletedFilter.SHOW });
14
+ },
15
+ extractId: (item) => item.internalId,
16
+ idLoader: dataFoldersByIdLoader
17
+ });
18
+ dataFoldersByIdLoader.addIdLoader(dataFoldersByInternalIdLoader);
19
+ const dataFoldersBySiteIdLoader = new OneToManyLoader({
20
+ fetch: async (siteIds, filter) => {
21
+ return await getDataFolders({ ...filter, siteIds });
22
+ },
23
+ extractKey: (d) => d.siteId,
24
+ keysFromFilter: (filter) => filter?.siteIds ?? [],
25
+ idLoader: dataFoldersByIdLoader
26
+ });
27
+ const globalDataFoldersByTemplateIds = new OneToManyLoader({
28
+ fetch: async (templateIds, filter) => await getDataFolders({ ...filter, templateIds, global: true }),
29
+ extractKey: f => f.templateId,
30
+ keysFromFilter: (filter) => filter?.templateIds ?? [],
31
+ idLoader: dataFoldersByIdLoader
32
+ });
33
+ export class DataFolderServiceInternal extends BaseService {
34
+ async find(filter) {
35
+ filter = await this.processFilters(filter);
36
+ return await getDataFolders(filter);
37
+ }
38
+ async findById(id) {
39
+ return await this.loaders.get(dataFoldersByIdLoader).load(id);
40
+ }
41
+ async findByIds(ids) {
42
+ return await this.loaders.loadMany(dataFoldersByIdLoader, ids);
43
+ }
44
+ async findByInternalId(internalId) {
45
+ return await this.loaders.get(dataFoldersByInternalIdLoader).load(internalId);
46
+ }
47
+ async findBySiteId(siteId, filter) {
48
+ filter = await this.processFilters(filter);
49
+ return await this.loaders.get(dataFoldersBySiteIdLoader, filter).load(siteId);
50
+ }
51
+ async findByDataRoot(dataroot, filter) {
52
+ if (dataroot.site)
53
+ return await this.findBySiteId(dataroot.site.id, { ...filter, templateIds: [dataroot.template.id] });
54
+ else
55
+ return await this.loaders.get(globalDataFoldersByTemplateIds, filter).load(dataroot.template.id);
56
+ }
57
+ async getPath(folder) {
58
+ return '/' + folder.name;
59
+ }
60
+ async processFilters(filter) {
61
+ if (filter?.templateKeys) {
62
+ const templates = await this.svc(TemplateService).findByKeys(filter.templateKeys);
63
+ const ids = templates.map(t => t.id);
64
+ if (filter.templateIds) {
65
+ filter.templateIds.push(...ids);
66
+ }
67
+ else
68
+ filter.templateIds = ids;
69
+ }
70
+ return filter;
71
+ }
72
+ }
73
+ export class DataFolderService extends DosGatoService {
74
+ constructor() {
75
+ super(...arguments);
76
+ this.raw = this.svc(DataFolderServiceInternal);
77
+ }
78
+ async find(filter) {
79
+ return await this.removeUnauthorized(await this.raw.find(filter));
80
+ }
81
+ async findById(id) {
82
+ return await this.removeUnauthorized(await this.raw.findById(id));
83
+ }
84
+ async findByInternalId(internalId) {
85
+ return await this.removeUnauthorized(await this.raw.findByInternalId(internalId));
86
+ }
87
+ async findBySiteId(siteId, filter) {
88
+ return await this.removeUnauthorized(await this.raw.findBySiteId(siteId, filter));
89
+ }
90
+ async findByDataRoot(dataroot, filter) {
91
+ return await this.removeUnauthorized(await this.raw.findByDataRoot(dataroot, filter));
92
+ }
93
+ async getPath(folder) {
94
+ return await this.raw.getPath(folder);
95
+ }
96
+ async create(args) {
97
+ const template = await this.svc(TemplateService).findByKey(args.templateKey);
98
+ if (!template)
99
+ throw new Error(`Template with key ${args.templateKey} not found.`);
100
+ if (template.type !== TemplateType.DATA)
101
+ throw new Error(`Template with key ${args.templateKey} is not a data template.`);
102
+ if (args.siteId) {
103
+ const site = await this.svc(SiteService).findById(args.siteId);
104
+ if (!site)
105
+ throw new Error('Cannot create data folder. Site does not exist.');
106
+ }
107
+ const folder = new DataFolder({ id: 0, guid: 0, name: args.name, templateId: template.id, siteId: args.siteId });
108
+ if (!await this.haveDataFolderPerm(folder, 'create')) {
109
+ throw new Error(`Current user is not permitted to create ${args.siteId ? 'datafolders in this site.' : 'global data folders.'}`);
110
+ }
111
+ try {
112
+ const datafolder = await createDataFolder(args.name, template.id, args.siteId);
113
+ this.loaders.clear();
114
+ return new DataFolderResponse({ dataFolder: datafolder, success: true });
115
+ }
116
+ catch (err) {
117
+ console.error(err);
118
+ throw new Error('Could not create data folder');
119
+ }
120
+ }
121
+ async rename(folderId, name) {
122
+ const folder = await this.raw.findById(folderId);
123
+ if (!folder)
124
+ throw new Error('Cannot rename a data folder that does not exist.');
125
+ if (!(await this.haveDataFolderPerm(folder, 'update')))
126
+ throw new Error(`Current user is not permitted to rename folder ${String(folder.name)}.`);
127
+ try {
128
+ await renameDataFolder(folder.id, name);
129
+ this.loaders.clear();
130
+ const updatedFolder = await this.raw.findById(folderId);
131
+ return new DataFolderResponse({ dataFolder: updatedFolder, success: true });
132
+ }
133
+ catch (err) {
134
+ console.error(err);
135
+ throw new Error('Could not rename data folder');
136
+ }
137
+ }
138
+ async move(folderIds, siteId) {
139
+ const dataFolders = (await Promise.all(folderIds.map(async (id) => await this.raw.findById(id)))).filter(isNotNull);
140
+ if (await someAsync(dataFolders, async (d) => !(await this.mayMove(d)))) {
141
+ throw new Error('Current user is not permitted to move one or more data folders');
142
+ }
143
+ if (siteId) {
144
+ const site = await this.svc(SiteService).findById(siteId);
145
+ if (!site)
146
+ throw new Error('Data folders cannot be added to a site that does not exist.');
147
+ // TODO: Does the user have permission to move data folders to this site?
148
+ }
149
+ else {
150
+ if (!(await this.haveGlobalPerm('manageGlobalData')))
151
+ throw new Error('Current user is not permitted to add global data folders');
152
+ }
153
+ try {
154
+ await moveDataFolders(dataFolders.map((f) => f.id), siteId);
155
+ this.loaders.clear();
156
+ const moved = await this.raw.findByIds(dataFolders.map(f => f.id));
157
+ return new DataFoldersResponse({ dataFolders: moved, success: true });
158
+ }
159
+ catch (err) {
160
+ console.error(err);
161
+ throw new Error('Unable to move one or more data folders');
162
+ }
163
+ }
164
+ async delete(folderIds) {
165
+ const dataFolders = (await Promise.all(folderIds.map(async (id) => await this.raw.findById(id)))).filter(isNotNull);
166
+ if (await someAsync(dataFolders, async (d) => !(await this.mayDelete(d)))) {
167
+ throw new Error('Current user is not permitted to delete one or more data folders');
168
+ }
169
+ const currentUser = await this.currentUser();
170
+ try {
171
+ await deleteDataFolder(dataFolders.map(f => f.id), currentUser.internalId);
172
+ this.loaders.clear();
173
+ const deletedFolders = await this.raw.findByIds(dataFolders.map(f => f.id));
174
+ return new DataFoldersResponse({ dataFolders: deletedFolders, success: true });
175
+ }
176
+ catch (err) {
177
+ console.error(err);
178
+ throw new Error('Unable to delete one or more data folders');
179
+ }
180
+ }
181
+ async undelete(folderIds) {
182
+ const dataFolders = (await Promise.all(folderIds.map(async (id) => await this.raw.findById(id)))).filter(isNotNull);
183
+ if (await someAsync(dataFolders, async (d) => !(await this.mayUndelete(d)))) {
184
+ throw new Error('Current user is not permitted to restore one or more data folders');
185
+ }
186
+ try {
187
+ await undeleteDataFolders(dataFolders.map(f => f.id));
188
+ this.loaders.clear();
189
+ const restoredFolders = await this.raw.findByIds(dataFolders.map(f => f.id));
190
+ return new DataFoldersResponse({ dataFolders: restoredFolders, success: true });
191
+ }
192
+ catch (err) {
193
+ console.error(err);
194
+ throw new Error('Unable to restore one or more data folders');
195
+ }
196
+ }
197
+ async mayView(folder) {
198
+ if (await this.haveDataFolderPerm(folder, 'view'))
199
+ return true;
200
+ const dataEntries = await this.svc(DataServiceInternal).findByFolderInternalId(folder.internalId);
201
+ for (const d of dataEntries) {
202
+ if (await this.haveDataPerm(d, 'view'))
203
+ return true;
204
+ }
205
+ return false;
206
+ }
207
+ async mayCreate(folder) {
208
+ return await this.haveDataFolderPerm(folder, 'create');
209
+ }
210
+ async mayUpdate(folder) {
211
+ return await this.haveDataFolderPerm(folder, 'update');
212
+ }
213
+ async mayMove(folder) {
214
+ return await this.haveDataFolderPerm(folder, 'move');
215
+ }
216
+ async mayDelete(folder) {
217
+ return await this.haveDataFolderPerm(folder, 'delete');
218
+ }
219
+ async mayUndelete(folder) {
220
+ return await this.haveDataFolderPerm(folder, 'undelete');
221
+ }
222
+ }
223
+ //# sourceMappingURL=datafolder.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datafolder.service.js","sourceRoot":"","sources":["../../src/datafolder/datafolder.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Site, Template } from '../internal.js';
2
+ export declare class DataRoot {
3
+ id: string;
4
+ site?: Site;
5
+ template: Template;
6
+ constructor(site: Site | undefined, template: Template);
7
+ }
8
+ export declare class DataRootFilter {
9
+ ids?: string[];
10
+ templateKeys?: string[];
11
+ templateIds?: number[];
12
+ siteIds?: string[];
13
+ global?: boolean;
14
+ }
15
+ export declare class DataRootPermissions {
16
+ }
17
+ export declare enum DataRootPermission {
18
+ CREATE = "create"
19
+ }
@@ -0,0 +1,72 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ObjectType, Field, ID, InputType, registerEnumType } from 'type-graphql';
11
+ import { Site, Template } from '../internal.js';
12
+ let DataRoot = class DataRoot {
13
+ constructor(site, template) {
14
+ this.id = `${site?.id ?? 'global'}-${template.id}`;
15
+ this.site = site;
16
+ this.template = template;
17
+ }
18
+ };
19
+ __decorate([
20
+ Field(type => ID),
21
+ __metadata("design:type", String)
22
+ ], DataRoot.prototype, "id", void 0);
23
+ __decorate([
24
+ Field(type => Site, { nullable: true }),
25
+ __metadata("design:type", Site)
26
+ ], DataRoot.prototype, "site", void 0);
27
+ __decorate([
28
+ Field(type => Template),
29
+ __metadata("design:type", Template)
30
+ ], DataRoot.prototype, "template", void 0);
31
+ DataRoot = __decorate([
32
+ ObjectType({ description: 'Each site has an array of dataroots, one per registered templateKey. It contains the data and datafolders of that template type in the site. There is also a set of dataroots for global data.' }),
33
+ __metadata("design:paramtypes", [Object, Template])
34
+ ], DataRoot);
35
+ export { DataRoot };
36
+ let DataRootFilter = class DataRootFilter {
37
+ };
38
+ __decorate([
39
+ Field(type => [ID], { nullable: true }),
40
+ __metadata("design:type", Array)
41
+ ], DataRootFilter.prototype, "ids", void 0);
42
+ __decorate([
43
+ Field(type => [ID], { nullable: true, description: 'Return dataroots designated for data of one of the given templates.' }),
44
+ __metadata("design:type", Array)
45
+ ], DataRootFilter.prototype, "templateKeys", void 0);
46
+ __decorate([
47
+ Field(type => [ID], { nullable: true, description: 'Return dataroots that are associated with one of the given sites.' }),
48
+ __metadata("design:type", Array)
49
+ ], DataRootFilter.prototype, "siteIds", void 0);
50
+ __decorate([
51
+ Field(type => Boolean, { nullable: true, description: 'true -> return only dataroots that are not associated with a site; false -> return only dataroots that are associated with a site; null -> return global and non-global dataroots' }),
52
+ __metadata("design:type", Boolean)
53
+ ], DataRootFilter.prototype, "global", void 0);
54
+ DataRootFilter = __decorate([
55
+ InputType()
56
+ ], DataRootFilter);
57
+ export { DataRootFilter };
58
+ let DataRootPermissions = class DataRootPermissions {
59
+ };
60
+ DataRootPermissions = __decorate([
61
+ ObjectType()
62
+ ], DataRootPermissions);
63
+ export { DataRootPermissions };
64
+ export var DataRootPermission;
65
+ (function (DataRootPermission) {
66
+ DataRootPermission["CREATE"] = "create";
67
+ })(DataRootPermission || (DataRootPermission = {}));
68
+ registerEnumType(DataRootPermission, {
69
+ name: 'DataRootPermission',
70
+ description: 'All the action types that can be individually permissioned on a data entry.'
71
+ });
72
+ //# sourceMappingURL=dataroot.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataroot.model.js","sourceRoot":"","sources":["../../src/dataroot/dataroot.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACjF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG/C,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAUnB,YAAa,IAAoB,EAAE,QAAkB;QACnD,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAA;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF,CAAA;AAbC;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;;oCACR;AAGV;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACjC,IAAI;sCAAA;AAGX;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;8BACd,QAAQ;0CAAA;AARP,QAAQ;IADpB,UAAU,CAAC,EAAE,WAAW,EAAE,gMAAgM,EAAE,CAAC;6CAW/K,QAAQ;GAV1C,QAAQ,CAepB;SAfY,QAAQ;AAkBrB,IAAa,cAAc,GAA3B,MAAa,cAAc;CAc1B,CAAA;AAZC;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CAC1B;AAGd;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,qEAAqE,EAAE,CAAC;;oDACrG;AAKvB;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mEAAmE,EAAE,CAAC;;+CACxG;AAGlB;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mLAAmL,EAAE,CAAC;;8CAC7N;AAbL,cAAc;IAD1B,SAAS,EAAE;GACC,cAAc,CAc1B;SAdY,cAAc;AAiB3B,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;CAAG,CAAA;AAAtB,mBAAmB;IAD/B,UAAU,EAAE;GACA,mBAAmB,CAAG;SAAtB,mBAAmB;AAEhC,MAAM,CAAN,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;AACnB,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,QAE7B;AACD,gBAAgB,CAAC,kBAAkB,EAAE;IACnC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,6EAA6E;CAC3F,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { Context } from '@txstate-mws/graphql-server';
2
+ import { Data, DataFilter, DataFolder, DataFolderFilter, DataRoot, DataRootFilter } from '../internal.js';
3
+ export declare class DataRootResolver {
4
+ dataroots(ctx: Context, filter?: DataRootFilter): Promise<DataRoot[]>;
5
+ data(ctx: Context, dataroot: DataRoot, filter?: DataFilter): Promise<Data[]>;
6
+ datafolders(ctx: Context, dataroot: DataRoot, filter?: DataFolderFilter): Promise<DataFolder[]>;
7
+ permissions(dataRoot: DataRoot): DataRoot;
8
+ }
9
+ export declare class DataRootPermissionsResolver {
10
+ create(ctx: Context, folder: DataRoot): Promise<boolean>;
11
+ }
@@ -0,0 +1,87 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql';
14
+ import { Context } from '@txstate-mws/graphql-server';
15
+ import { Data, DataFilter, DataFolder, DataFolderFilter, DataFolderService, DataRoot, DataRootFilter, DataRootPermissions, DataRootService, DataService } from '../internal.js';
16
+ let DataRootResolver = class DataRootResolver {
17
+ async dataroots(ctx, filter) {
18
+ return await ctx.svc(DataRootService).find(filter);
19
+ }
20
+ async data(ctx, dataroot, filter) {
21
+ return await ctx.svc(DataService).findByDataRoot(dataroot, filter);
22
+ }
23
+ async datafolders(ctx, dataroot, filter) {
24
+ return await ctx.svc(DataFolderService).findByDataRoot(dataroot, filter);
25
+ }
26
+ permissions(dataRoot) {
27
+ return dataRoot;
28
+ }
29
+ };
30
+ __decorate([
31
+ Query(returns => [DataRoot]),
32
+ __param(0, Ctx()),
33
+ __param(1, Arg('filter', { nullable: true })),
34
+ __metadata("design:type", Function),
35
+ __metadata("design:paramtypes", [Context, DataRootFilter]),
36
+ __metadata("design:returntype", Promise)
37
+ ], DataRootResolver.prototype, "dataroots", null);
38
+ __decorate([
39
+ FieldResolver(returns => [Data]),
40
+ __param(0, Ctx()),
41
+ __param(1, Root()),
42
+ __param(2, Arg('filter', { nullable: true })),
43
+ __metadata("design:type", Function),
44
+ __metadata("design:paramtypes", [Context, DataRoot, DataFilter]),
45
+ __metadata("design:returntype", Promise)
46
+ ], DataRootResolver.prototype, "data", null);
47
+ __decorate([
48
+ FieldResolver(returns => [DataFolder]),
49
+ __param(0, Ctx()),
50
+ __param(1, Root()),
51
+ __param(2, Arg('filter', { nullable: true })),
52
+ __metadata("design:type", Function),
53
+ __metadata("design:paramtypes", [Context, DataRoot, DataFolderFilter]),
54
+ __metadata("design:returntype", Promise)
55
+ ], DataRootResolver.prototype, "datafolders", null);
56
+ __decorate([
57
+ FieldResolver(returns => DataRootPermissions, {
58
+ description: `Reveal the simplified results after all authorization rules are taken into account
59
+ for the current user. Makes it easy to light up, disable, or hide buttons in the UI.`
60
+ }),
61
+ __param(0, Root()),
62
+ __metadata("design:type", Function),
63
+ __metadata("design:paramtypes", [DataRoot]),
64
+ __metadata("design:returntype", void 0)
65
+ ], DataRootResolver.prototype, "permissions", null);
66
+ DataRootResolver = __decorate([
67
+ Resolver(of => DataRoot)
68
+ ], DataRootResolver);
69
+ export { DataRootResolver };
70
+ let DataRootPermissionsResolver = class DataRootPermissionsResolver {
71
+ async create(ctx, folder) {
72
+ return await ctx.svc(DataRootService).mayCreate(folder);
73
+ }
74
+ };
75
+ __decorate([
76
+ FieldResolver(returns => Boolean, { description: 'User may create or move data inside this data root.' }),
77
+ __param(0, Ctx()),
78
+ __param(1, Root()),
79
+ __metadata("design:type", Function),
80
+ __metadata("design:paramtypes", [Context, DataRoot]),
81
+ __metadata("design:returntype", Promise)
82
+ ], DataRootPermissionsResolver.prototype, "create", null);
83
+ DataRootPermissionsResolver = __decorate([
84
+ Resolver(of => DataRootPermissions)
85
+ ], DataRootPermissionsResolver);
86
+ export { DataRootPermissionsResolver };
87
+ //# sourceMappingURL=dataroot.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataroot.resolver.js","sourceRoot":"","sources":["../../src/dataroot/dataroot.resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { DataFolder, DataRoot, DataRootFilter, DosGatoService, Site, Template } from '../internal.js';
2
+ export declare class DataRootService extends DosGatoService<DataRoot> {
3
+ templatesById?: Map<number, Template>;
4
+ templatesByKey?: Map<string, Template>;
5
+ allSites?: Site[];
6
+ find(filter?: DataRootFilter): Promise<DataRoot[]>;
7
+ findBySite(site: Site, filter?: DataRootFilter): Promise<DataRoot[]>;
8
+ findByFolder(folder: DataFolder): Promise<DataRoot>;
9
+ mayView(obj: DataRoot): Promise<boolean>;
10
+ mayViewForEdit(obj: DataRoot): Promise<boolean>;
11
+ mayCreate(obj: DataRoot): Promise<boolean>;
12
+ }
@@ -0,0 +1,62 @@
1
+ import { intersect, isNotNull, keyby } from 'txstate-utils';
2
+ import { DataRoot, DosGatoService, SiteService, SiteServiceInternal, TemplateService, TemplateType } from '../internal.js';
3
+ export class DataRootService extends DosGatoService {
4
+ async find(filter) {
5
+ const siteService = this.svc(SiteServiceInternal);
6
+ this.templatesById ?? (this.templatesById = (await this.svc(TemplateService).find({ types: [TemplateType.DATA] })).reduce((map, template) => map.set(template.id, template), new Map()));
7
+ this.templatesByKey ?? (this.templatesByKey = Array.from(this.templatesById.values()).reduce((map, template) => map.set(template.key, template), new Map()));
8
+ filter ?? (filter = {});
9
+ const idPairs = (filter.ids ?? []).map(id => {
10
+ const [siteId, templateId] = id.split('-');
11
+ return { siteId: siteId === 'global' ? undefined : siteId, templateId: Number(templateId) };
12
+ });
13
+ filter.templateIds = intersect({ skipEmpty: true }, filter.templateIds, idPairs.map(p => p.templateId));
14
+ filter.templateKeys = intersect({ skipEmpty: true }, filter.templateKeys, filter.templateIds?.map(tid => this.templatesById.get(tid)?.key).filter(isNotNull));
15
+ filter.siteIds = intersect({ skipEmpty: true }, filter.siteIds, idPairs.map(p => p.siteId).filter(isNotNull));
16
+ const templates = filter.templateKeys.length
17
+ ? filter.templateKeys.map(k => this.templatesByKey.get(k)).filter(isNotNull)
18
+ : Array.from(this.templatesById.values());
19
+ let pairs = [];
20
+ if (filter.global !== false)
21
+ pairs.push(...templates.map(t => ({ templateId: t.id })));
22
+ let sitesById = {};
23
+ if (filter.global !== true) {
24
+ let sites;
25
+ if (filter.siteIds?.length) {
26
+ sites = (await Promise.all(filter.siteIds.map(async (id) => await siteService.findById(id)))).filter(isNotNull);
27
+ }
28
+ else {
29
+ this.allSites ?? (this.allSites = await this.svc(SiteServiceInternal).find());
30
+ sites = this.allSites;
31
+ }
32
+ sitesById = keyby(sites, 'id');
33
+ for (const site of sites)
34
+ pairs.push(...templates.map(t => ({ siteId: site.id, templateId: t.id })));
35
+ }
36
+ pairs = intersect({ skipEmpty: true }, pairs, idPairs);
37
+ const filledPairs = pairs.map(p => ({ site: sitesById[p.siteId ?? ''], template: this.templatesById.get(p.templateId) }));
38
+ const dataRoots = filledPairs.filter(p => p.template).map(p => new DataRoot(p.site, p.template));
39
+ return await this.removeUnauthorized(dataRoots);
40
+ }
41
+ async findBySite(site, filter) {
42
+ return await this.find({ ...filter, siteIds: [site.id], global: false });
43
+ }
44
+ async findByFolder(folder) {
45
+ const dataroots = folder.siteId
46
+ ? await this.find({ global: false, siteIds: [folder.siteId], templateIds: [folder.templateId] })
47
+ : await this.find({ global: true, templateIds: [folder.templateId] });
48
+ return dataroots[0];
49
+ }
50
+ async mayView(obj) {
51
+ if (obj.site)
52
+ return await this.svc(SiteService).mayView(obj.site);
53
+ return await this.haveDataRootPerm(obj, 'view');
54
+ }
55
+ async mayViewForEdit(obj) {
56
+ return await this.haveDataRootPerm(obj, 'viewForEdit');
57
+ }
58
+ async mayCreate(obj) {
59
+ return await this.haveDataRootPerm(obj, 'create');
60
+ }
61
+ }
62
+ //# sourceMappingURL=dataroot.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataroot.service.js","sourceRoot":"","sources":["../../src/dataroot/dataroot.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { DataRule, DataRuleFilter, CreateDataRuleInput, UpdateDataRuleInput } from '../internal.js';
2
+ export declare function getDataRules(filter: DataRuleFilter): Promise<DataRule[]>;
3
+ export declare function createDataRule(args: CreateDataRuleInput): Promise<number>;
4
+ export declare function updateDataRule(args: UpdateDataRuleInput): Promise<number>;
5
+ export declare function deleteDataRule(ruleId: string): Promise<number>;