@things-factory/dataset 5.0.14 → 5.0.15

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 (96) hide show
  1. package/README.md +20 -0
  2. package/assets/data-report.jpg +0 -0
  3. package/assets/glue-table-indices.png +0 -0
  4. package/client/pages/data-archive/data-archive-list-page.js +290 -0
  5. package/client/pages/data-archive/data-archive-request-popup.js +198 -0
  6. package/client/pages/data-key-set/data-key-set-list-page.js +97 -2
  7. package/client/pages/data-report/data-report-embed-page.js +16 -12
  8. package/client/pages/data-report/data-report-list-page.js +16 -13
  9. package/client/pages/data-report/data-report-samples-page.js +186 -0
  10. package/client/pages/data-set/data-set-list-page.js +8 -0
  11. package/client/route.js +20 -12
  12. package/config/config.development.js +21 -0
  13. package/config/config.production.js +32 -11
  14. package/dist-server/controllers/create-data-sample.js +3 -1
  15. package/dist-server/controllers/create-data-sample.js.map +1 -1
  16. package/dist-server/controllers/jasper-report.js +17 -12
  17. package/dist-server/controllers/jasper-report.js.map +1 -1
  18. package/dist-server/controllers/shiny-report.js +44 -0
  19. package/dist-server/controllers/shiny-report.js.map +1 -0
  20. package/dist-server/routes.js +8 -0
  21. package/dist-server/routes.js.map +1 -1
  22. package/dist-server/service/data-archive/data-archive-mutation.js +211 -0
  23. package/dist-server/service/data-archive/data-archive-mutation.js.map +1 -0
  24. package/dist-server/service/data-archive/data-archive-query.js +85 -0
  25. package/dist-server/service/data-archive/data-archive-query.js.map +1 -0
  26. package/dist-server/service/data-archive/data-archive-type.js +74 -0
  27. package/dist-server/service/data-archive/data-archive-type.js.map +1 -0
  28. package/dist-server/service/data-archive/data-archive.js +80 -0
  29. package/dist-server/service/data-archive/data-archive.js.map +1 -0
  30. package/dist-server/service/data-archive/index.js +9 -0
  31. package/dist-server/service/data-archive/index.js.map +1 -0
  32. package/dist-server/service/data-key-set/data-key-item-type.js.map +1 -1
  33. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -1
  34. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
  35. package/dist-server/service/data-key-set/data-key-set-type.js +17 -0
  36. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -1
  37. package/dist-server/service/data-key-set/data-key-set.js +11 -0
  38. package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
  39. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -1
  40. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  41. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
  42. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
  43. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  44. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  45. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  46. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  47. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  48. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -1
  49. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  50. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  51. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  52. package/dist-server/service/data-set/data-item-type.js.map +1 -1
  53. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  54. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  55. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  56. package/dist-server/service/data-set/data-set.js +2 -0
  57. package/dist-server/service/data-set/data-set.js.map +1 -1
  58. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  59. package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -1
  60. package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
  61. package/dist-server/service/data-set-history/event-subscriber.js.map +1 -1
  62. package/dist-server/service/data-spec/data-spec-query.js.map +1 -1
  63. package/dist-server/service/data-spec/data-spec.js.map +1 -1
  64. package/dist-server/service/index.js +5 -2
  65. package/dist-server/service/index.js.map +1 -1
  66. package/dist-server/tsconfig.tsbuildinfo +1 -1
  67. package/helps/dataset/data-archive.md +6 -0
  68. package/package.json +7 -7
  69. package/server/controllers/create-data-sample.ts +4 -0
  70. package/server/controllers/jasper-report.ts +17 -12
  71. package/server/controllers/shiny-report.ts +63 -0
  72. package/server/routes.ts +11 -0
  73. package/server/service/data-archive/data-archive-mutation.ts +234 -0
  74. package/server/service/data-archive/data-archive-query.ts +56 -0
  75. package/server/service/data-archive/data-archive-type.ts +49 -0
  76. package/server/service/data-archive/data-archive.ts +69 -0
  77. package/server/service/data-archive/index.ts +6 -0
  78. package/server/service/data-key-set/data-key-set-type.ts +13 -0
  79. package/server/service/data-key-set/data-key-set.ts +9 -0
  80. package/server/service/data-set/data-set.ts +3 -1
  81. package/server/service/index.ts +5 -2
  82. package/things-factory.config.js +20 -12
  83. package/translations/en.json +15 -1
  84. package/translations/ko.json +14 -1
  85. package/translations/ms.json +2 -0
  86. package/translations/zh.json +2 -0
  87. package/dist-server/service/data-item/data-item-mutation.js +0 -69
  88. package/dist-server/service/data-item/data-item-mutation.js.map +0 -1
  89. package/dist-server/service/data-item/data-item-query.js +0 -100
  90. package/dist-server/service/data-item/data-item-query.js.map +0 -1
  91. package/dist-server/service/data-item/data-item-type.js +0 -80
  92. package/dist-server/service/data-item/data-item-type.js.map +0 -1
  93. package/dist-server/service/data-item/data-item.js +0 -136
  94. package/dist-server/service/data-item/data-item.js.map +0 -1
  95. package/dist-server/service/data-item/index.js +0 -9
  96. package/dist-server/service/data-item/index.js.map +0 -1
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderShinyReport = void 0;
4
+ const env_1 = require("@things-factory/env");
5
+ const querystring = require('querystring');
6
+ const debug = require('debug')('things-factory:dataset:shiny-report');
7
+ const dataReportConfig = env_1.config.get('dataReport');
8
+ const { shiny: { endpoint: { protocol: PROTOCOL, host: HOST, port: PORT }, datasource: { database: DATABASE } } } = Object.assign({
9
+ shiny: {
10
+ endpoint: {},
11
+ datasource: {}
12
+ }
13
+ }, dataReportConfig);
14
+ async function renderShinyReport(context) {
15
+ debug('render:context', context);
16
+ try {
17
+ const { access_token: token } = querystring.parse(context.header.cookie, ';');
18
+ const { state: { domain }, query, response, } = context;
19
+ const urlParams = querystring.stringify(Object.assign(Object.assign({ token }, query), { database: DATABASE,
20
+ domain: domain === null || domain === void 0 ? void 0 : domain.subdomain }));
21
+ // const jsonParams = JSON.stringify({
22
+ // ...query,
23
+ // ...{ database: DATABASE,
24
+ // domain: domain?.subdomain }
25
+ // })
26
+ const protocol = `${PROTOCOL || 'http'}://`;
27
+ const host = `${HOST}:${PORT}/`;
28
+ const subpath = (query === null || query === void 0 ? void 0 : query.reportView) || '';
29
+ if (!subpath) {
30
+ return context.body = '';
31
+ }
32
+ // filter not empty and join '/'
33
+ const url = host.split('/').concat(subpath.split('/'))
34
+ .filter(x => x).join('/');
35
+ // const reportUrl = `${protocol}${url}/?params=${jsonParams}`
36
+ const reportUrl = `${protocol}${url}/?${urlParams}`;
37
+ response.redirect(reportUrl);
38
+ }
39
+ catch (ex) {
40
+ context.body = `Error: ${ex.message} || ''`;
41
+ }
42
+ }
43
+ exports.renderShinyReport = renderShinyReport;
44
+ //# sourceMappingURL=shiny-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiny-report.js","sourceRoot":"","sources":["../../server/controllers/shiny-report.ts"],"names":[],"mappings":";;;AAEA,6CAA4C;AAE5C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,qCAAqC,CAAC,CAAA;AACrE,MAAM,gBAAgB,GAAG,YAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AACjD,MAAM,EACJ,KAAK,EAAE,EACL,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EACxD,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACnC,EACF,GAAG,MAAM,CAAC,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;KACf;CAAC,EAAE,gBAAgB,CAAC,CAAA;AAGhB,KAAK,UAAU,iBAAiB,CAAC,OAAY;IAClD,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAEhC,IAAI;QACF,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC7E,MAAM,EACJ,KAAK,EAAE,EAAE,MAAM,EAAE,EACjB,KAAK,EACL,QAAQ,GACT,GAAG,OAAO,CAAA;QAEX,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,+BACrC,KAAK,IACF,KAAK,GACL,EAAE,QAAQ,EAAE,QAAQ;YACvB,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE,EAC3B,CAAA;QAEF,uCAAuC;QACvC,eAAe;QACf,+BAA+B;QAC/B,gCAAgC;QAChC,KAAK;QAEL,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,MAAM,KAAK,CAAA;QAC3C,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,CAAA;QAC/B,MAAM,OAAO,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,KAAI,EAAE,CAAA;QAEvC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,OAAO,CAAC,IAAI,GAAG,EAAE,CAAA;SACzB;QAED,gCAAgC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,8DAA8D;QAC9D,MAAM,SAAS,GAAG,GAAG,QAAQ,GAAG,GAAG,KAAK,SAAS,EAAE,CAAA;QAEnD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;KAC7B;IAAC,OAAM,EAAE,EAAE;QACV,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC,OAAO,QAAQ,CAAA;KAC5C;AAEH,CAAC;AA3CD,8CA2CC","sourcesContent":["import FormData from 'form-data'\nimport fetch from 'node-fetch'\nimport { config } from '@things-factory/env'\n\nconst querystring = require('querystring')\nconst debug = require('debug')('things-factory:dataset:shiny-report')\nconst dataReportConfig = config.get('dataReport')\nconst {\n shiny: {\n endpoint: { protocol: PROTOCOL, host: HOST, port: PORT },\n datasource: { database: DATABASE }\n }\n} = Object.assign({\n shiny: {\n endpoint: {},\n datasource: {}\n }}, dataReportConfig)\n\n\nexport async function renderShinyReport(context: any) {\n debug('render:context', context)\n \n try {\n const { access_token: token } = querystring.parse(context.header.cookie, ';')\n const {\n state: { domain },\n query,\n response,\n } = context\n \n const urlParams = querystring.stringify({ \n token,\n ...query, \n ...{ database: DATABASE, \n domain: domain?.subdomain }\n })\n \n // const jsonParams = JSON.stringify({ \n // ...query, \n // ...{ database: DATABASE, \n // domain: domain?.subdomain }\n // })\n \n const protocol = `${PROTOCOL || 'http'}://`\n const host = `${HOST}:${PORT}/`\n const subpath = query?.reportView || ''\n\n if (!subpath) {\n return context.body = ''\n }\n\n // filter not empty and join '/'\n const url = host.split('/').concat(subpath.split('/'))\n .filter(x => x).join('/')\n // const reportUrl = `${protocol}${url}/?params=${jsonParams}`\n const reportUrl = `${protocol}${url}/?${urlParams}`\n\n response.redirect(reportUrl)\n } catch(ex) {\n context.body = `Error: ${ex.message} || ''`\n }\n \n}\n"]}
@@ -4,6 +4,7 @@ const typeorm_1 = require("typeorm");
4
4
  const auth_base_1 = require("@things-factory/auth-base");
5
5
  const create_data_sample_1 = require("./controllers/create-data-sample");
6
6
  const jasper_report_1 = require("./controllers/jasper-report");
7
+ const shiny_report_1 = require("./controllers/shiny-report");
7
8
  const data_sensor_1 = require("./service/data-sensor/data-sensor");
8
9
  process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) => {
9
10
  /*
@@ -73,5 +74,12 @@ process.on('bootstrap-module-domain-private-route', (app, domainPrivateRouter) =
73
74
  domainPrivateRouter.get('/data-report/jasper', async (context, next) => {
74
75
  context.body = await (0, jasper_report_1.renderJasperReport)(context);
75
76
  });
77
+ domainPrivateRouter.get('/data-report/shiny', async (context, next) => {
78
+ await (0, shiny_report_1.renderShinyReport)(context);
79
+ });
80
+ domainPrivateRouter.get('/data-report/:reportType', async (context, next) => {
81
+ let { reportType } = context.params;
82
+ context.body = `${reportType} Not Implemented.`;
83
+ });
76
84
  });
77
85
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,qCAAuC;AAEvC,yDAAgD;AAEhD,yEAAmE;AACnE,+DAAgE;AAChE,mEAA8D;AAE9D,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;;;;OAKG;IAEH,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9D,SAAS;QACT,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;QAChF,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;SACpG;QAED,uBAAuB;QACvB,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;YAC3C,+BAA+B;YAC/B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAU,CAAC,CAAC,OAAO,CAAC;gBACxD,KAAK,EAAE,EAAE,QAAQ,EAAE;gBACnB,SAAS,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC;aAC9C,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,aAAa,CAAC,CAAA;aACvE;YAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,iBAAiB,CAAC,CAAA;aACjF;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,iBAAiB,CAAC,CAAA;aACrF;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,iBAAiB,CAAC,CAAA;aACnF;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAC9B,MAAM,IAAI,GAAS,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;gBACtD,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;oBAC9B,QAAQ,EAAE,WAAW;iBACtB;aACF,CAAC,CAAA;YAEF,OAAO,MAAM,IAAA,qCAAgB,EAC3B;gBACE,OAAO;gBACP,IAAI;gBACJ,OAAO;gBACP,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;aACjC,EACD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAChC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;IACH,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACrE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,kCAAkB,EAAC,OAAO,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { getConnection } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\n\nimport { createDataSample } from './controllers/create-data-sample'\nimport { renderJasperReport } from './controllers/jasper-report'\nimport { DataSensor } from './service/data-sensor/data-sensor'\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n\n globalPublicRouter.post('/sensor-data', async (context, next) => {\n // 데이타 검증\n const { deviceId, data, rawData, timestamp = Date.now() } = context.request.body\n if (!deviceId || !data) {\n throw new Error(`deviceId(${deviceId}) and data(${JSON.stringify(data)}) properties are mandatory`)\n }\n\n // make new data-sample\n await getConnection().transaction(async tx => {\n // find sensor through deviceId\n const sensor = await tx.getRepository(DataSensor).findOne({\n where: { deviceId },\n relations: ['domain', 'appliance', 'dataSet']\n })\n\n if (!sensor) {\n throw new Error(`Sensor having given deviceId(${deviceId}) not found`)\n }\n\n if (!sensor.active) {\n throw new Error(`State of the sensor given deviceId(${deviceId}) is not active`)\n }\n\n if (!sensor.appliance) {\n throw new Error(`Appliance of the sensor given deviceId(${deviceId}) is not set up`)\n }\n\n if (!sensor.dataSet) {\n throw new Error(`DataSet of the sensor given deviceId(${deviceId}) is not set up`)\n }\n\n const domain = sensor.domain\n const dataSet = sensor.dataSet\n const user: User = await tx.getRepository(User).findOne({\n where: {\n reference: sensor.appliance.id,\n userType: 'appliance'\n }\n })\n\n return await createDataSample(\n {\n dataSet,\n data,\n rawData,\n source: deviceId,\n collectedAt: new Date(timestamp)\n },\n { state: { domain, user, tx } }\n )\n })\n\n context.status = 200\n })\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n domainPrivateRouter.get('/data-report/jasper', async (context, next) => {\n context.body = await renderJasperReport(context)\n })\n})\n"]}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,qCAAuC;AAEvC,yDAAgD;AAEhD,yEAAmE;AACnE,+DAAgE;AAChE,6DAA8D;AAC9D,mEAA8D;AAE9D,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;;;;OAKG;IAEH,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9D,SAAS;QACT,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;QAChF,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;SACpG;QAED,uBAAuB;QACvB,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;YAC3C,+BAA+B;YAC/B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAU,CAAC,CAAC,OAAO,CAAC;gBACxD,KAAK,EAAE,EAAE,QAAQ,EAAE;gBACnB,SAAS,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC;aAC9C,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,aAAa,CAAC,CAAA;aACvE;YAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,iBAAiB,CAAC,CAAA;aACjF;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,iBAAiB,CAAC,CAAA;aACrF;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,iBAAiB,CAAC,CAAA;aACnF;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAC9B,MAAM,IAAI,GAAS,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;gBACtD,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;oBAC9B,QAAQ,EAAE,WAAW;iBACtB;aACF,CAAC,CAAA;YAEF,OAAO,MAAM,IAAA,qCAAgB,EAC3B;gBACE,OAAO;gBACP,IAAI;gBACJ,OAAO;gBACP,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;aACjC,EACD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAChC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;IACH,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACrE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,kCAAkB,EAAC,OAAO,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,mBAAmB,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACpE,MAAM,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,mBAAmB,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC1E,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;QACnC,OAAO,CAAC,IAAI,GAAG,GAAG,UAAU,mBAAmB,CAAA;IACjD,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA","sourcesContent":["import { getConnection } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\n\nimport { createDataSample } from './controllers/create-data-sample'\nimport { renderJasperReport } from './controllers/jasper-report'\nimport { renderShinyReport } from './controllers/shiny-report'\nimport { DataSensor } from './service/data-sensor/data-sensor'\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n\n globalPublicRouter.post('/sensor-data', async (context, next) => {\n // 데이타 검증\n const { deviceId, data, rawData, timestamp = Date.now() } = context.request.body\n if (!deviceId || !data) {\n throw new Error(`deviceId(${deviceId}) and data(${JSON.stringify(data)}) properties are mandatory`)\n }\n\n // make new data-sample\n await getConnection().transaction(async tx => {\n // find sensor through deviceId\n const sensor = await tx.getRepository(DataSensor).findOne({\n where: { deviceId },\n relations: ['domain', 'appliance', 'dataSet']\n })\n\n if (!sensor) {\n throw new Error(`Sensor having given deviceId(${deviceId}) not found`)\n }\n\n if (!sensor.active) {\n throw new Error(`State of the sensor given deviceId(${deviceId}) is not active`)\n }\n\n if (!sensor.appliance) {\n throw new Error(`Appliance of the sensor given deviceId(${deviceId}) is not set up`)\n }\n\n if (!sensor.dataSet) {\n throw new Error(`DataSet of the sensor given deviceId(${deviceId}) is not set up`)\n }\n\n const domain = sensor.domain\n const dataSet = sensor.dataSet\n const user: User = await tx.getRepository(User).findOne({\n where: {\n reference: sensor.appliance.id,\n userType: 'appliance'\n }\n })\n\n return await createDataSample(\n {\n dataSet,\n data,\n rawData,\n source: deviceId,\n collectedAt: new Date(timestamp)\n },\n { state: { domain, user, tx } }\n )\n })\n\n context.status = 200\n })\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n domainPrivateRouter.get('/data-report/jasper', async (context, next) => {\n context.body = await renderJasperReport(context)\n })\n\n domainPrivateRouter.get('/data-report/shiny', async (context, next) => {\n await renderShinyReport(context)\n })\n\n domainPrivateRouter.get('/data-report/:reportType', async (context, next) => {\n let { reportType } = context.params\n context.body = `${reportType} Not Implemented.`\n })\n \n})\n"]}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataArchiveMutation = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const typeorm_1 = require("typeorm");
7
+ const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
8
+ const data_archive_1 = require("./data-archive");
9
+ const data_archive_type_1 = require("./data-archive-type");
10
+ const { config } = require('@things-factory/env');
11
+ const crypto = require('crypto');
12
+ let DataArchiveMutation = class DataArchiveMutation {
13
+ /**
14
+ * It may use 'func-[dev]-data-set-download' in https://github.com/operatochef/serverless
15
+ * This function requests athena query and save the result as csv.gz in s3
16
+ */
17
+ async generatePresignedUrl(patch, context) {
18
+ const { domain, user, tx } = context.state;
19
+ // const dataArchiveRepo = tx.getRepository(DataArchive)
20
+ const { dataset: { endpoint: { host, port = 80 }, datasource: { database } } } = config.get('dataArchive');
21
+ const body = JSON.stringify(Object.assign({ domain: domain === null || domain === void 0 ? void 0 : domain.subdomain, database }, patch === null || patch === void 0 ? void 0 : patch.requestParams));
22
+ const fetched = await (0, node_fetch_1.default)(`${host}:${port}`, {
23
+ method: 'POST',
24
+ headers: { 'Content-Type': 'application/json' },
25
+ body
26
+ });
27
+ let result;
28
+ if (fetched.ok) {
29
+ const response = await fetched.json();
30
+ patch.downloadUrl = response['presignedUrl'];
31
+ patch.status = 'done';
32
+ result = await this.updateDataArchive(patch.id, patch, context);
33
+ }
34
+ else {
35
+ console.log(fetched.text());
36
+ patch.status = 'error';
37
+ result = await this.updateDataArchive(patch.id, patch, context);
38
+ }
39
+ return result;
40
+ }
41
+ async createDataArchive(dataArchive, context) {
42
+ const { domain, user, tx } = context.state;
43
+ const dataArchiveRepo = tx.getRepository(data_archive_1.DataArchive);
44
+ const result = await dataArchiveRepo.save(Object.assign(Object.assign({}, dataArchive), { domain, creator: user, updater: user }));
45
+ return result;
46
+ }
47
+ async updateDataArchive(id, patch, context) {
48
+ const { domain, user, tx } = context.state;
49
+ const dataArchiveRepo = tx.getRepository(data_archive_1.DataArchive);
50
+ const dataArchive = await dataArchiveRepo.findOne({
51
+ where: { domain, id },
52
+ relations: ['domain', 'creator', 'updater']
53
+ });
54
+ const result = await dataArchiveRepo.save(Object.assign(Object.assign(Object.assign({}, dataArchive), patch), { updater: user }));
55
+ return result;
56
+ }
57
+ async updateMultipleDataArchive(patches, context) {
58
+ const { domain, user, tx } = context.state;
59
+ const dataArchiveRepo = tx.getRepository(data_archive_1.DataArchive);
60
+ let results = [];
61
+ const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
62
+ const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
63
+ if (_createRecords.length > 0) {
64
+ const cuFlag = '+';
65
+ for (let i = 0; i < _createRecords.length; i++) {
66
+ const newRecord = _createRecords[i];
67
+ const result = await dataArchiveRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
68
+ results.push(Object.assign(Object.assign({}, result), { cuFlag }));
69
+ }
70
+ }
71
+ if (_updateRecords.length > 0) {
72
+ const cuFlag = 'M';
73
+ for (let i = 0; i < _updateRecords.length; i++) {
74
+ const newRecord = _updateRecords[i];
75
+ const dataArchive = await dataArchiveRepo.findOne(newRecord.id, {
76
+ relations: ['domain', 'creator', 'updater']
77
+ });
78
+ const result = await dataArchiveRepo.save(Object.assign(Object.assign(Object.assign({}, dataArchive), newRecord), { updater: user }));
79
+ results.push(Object.assign(Object.assign({}, result), { cuFlag }));
80
+ }
81
+ }
82
+ return results;
83
+ }
84
+ async deleteDataArchive(id, context) {
85
+ const { domain, tx } = context.state;
86
+ await tx.getRepository(data_archive_1.DataArchive).delete({ domain, id });
87
+ return true;
88
+ }
89
+ async deleteDataArchives(ids, context) {
90
+ const { domain, tx } = context.state;
91
+ await tx.getRepository(data_archive_1.DataArchive).delete({
92
+ domain,
93
+ id: (0, typeorm_1.In)(ids)
94
+ });
95
+ return true;
96
+ }
97
+ async importDataArchives(dataArchives, context) {
98
+ const { domain, tx } = context.state;
99
+ const dataArchiveRepo = tx.getRepository(data_archive_1.DataArchive);
100
+ await Promise.all(dataArchives.map(async (dataArchive) => {
101
+ const createdDataArchive = await dataArchiveRepo.save(Object.assign({ domain }, dataArchive));
102
+ }));
103
+ return true;
104
+ }
105
+ async copyDataArchives(ids, context) {
106
+ const { domain, user, tx } = context.state;
107
+ const dataArchiveRepo = tx.getRepository(data_archive_1.DataArchive);
108
+ const originals = await dataArchiveRepo.find({
109
+ where: {
110
+ id: (0, typeorm_1.In)(ids),
111
+ domain
112
+ },
113
+ relations: ['domain']
114
+ });
115
+ if (originals.length == 0) {
116
+ return [];
117
+ }
118
+ var newCopys = originals.map(dataArchive => {
119
+ let dataArchiveId = crypto.randomUUID();
120
+ return Object.assign(Object.assign({}, dataArchive), { id: dataArchiveId, domain, creator: user, updater: user, updatedAt: undefined, createdAt: undefined });
121
+ });
122
+ var copiedDataArchives = await dataArchiveRepo.save(newCopys);
123
+ return copiedDataArchives;
124
+ }
125
+ };
126
+ tslib_1.__decorate([
127
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
128
+ (0, type_graphql_1.Directive)('@transaction'),
129
+ (0, type_graphql_1.Mutation)(returns => data_archive_1.DataArchive, { description: 'To create new DataArchive' }),
130
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('patch')),
131
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
132
+ tslib_1.__metadata("design:type", Function),
133
+ tslib_1.__metadata("design:paramtypes", [data_archive_type_1.DataArchivePatch, Object]),
134
+ tslib_1.__metadata("design:returntype", Promise)
135
+ ], DataArchiveMutation.prototype, "generatePresignedUrl", null);
136
+ tslib_1.__decorate([
137
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
138
+ (0, type_graphql_1.Directive)('@transaction'),
139
+ (0, type_graphql_1.Mutation)(returns => data_archive_1.DataArchive, { description: 'To create new DataArchive' }),
140
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('dataArchive')),
141
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
142
+ tslib_1.__metadata("design:type", Function),
143
+ tslib_1.__metadata("design:paramtypes", [data_archive_type_1.NewDataArchive, Object]),
144
+ tslib_1.__metadata("design:returntype", Promise)
145
+ ], DataArchiveMutation.prototype, "createDataArchive", null);
146
+ tslib_1.__decorate([
147
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
148
+ (0, type_graphql_1.Directive)('@transaction'),
149
+ (0, type_graphql_1.Mutation)(returns => data_archive_1.DataArchive, { description: 'To modify DataArchive information' }),
150
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
151
+ tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
152
+ tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
153
+ tslib_1.__metadata("design:type", Function),
154
+ tslib_1.__metadata("design:paramtypes", [String, data_archive_type_1.DataArchivePatch, Object]),
155
+ tslib_1.__metadata("design:returntype", Promise)
156
+ ], DataArchiveMutation.prototype, "updateDataArchive", null);
157
+ tslib_1.__decorate([
158
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
159
+ (0, type_graphql_1.Directive)('@transaction'),
160
+ (0, type_graphql_1.Mutation)(returns => [data_archive_1.DataArchive], { description: "To modify multiple DataArchives' information" }),
161
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [data_archive_type_1.DataArchivePatch])),
162
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
163
+ tslib_1.__metadata("design:type", Function),
164
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
165
+ tslib_1.__metadata("design:returntype", Promise)
166
+ ], DataArchiveMutation.prototype, "updateMultipleDataArchive", null);
167
+ tslib_1.__decorate([
168
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
169
+ (0, type_graphql_1.Directive)('@transaction'),
170
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete DataArchive' }),
171
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
172
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
173
+ tslib_1.__metadata("design:type", Function),
174
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
175
+ tslib_1.__metadata("design:returntype", Promise)
176
+ ], DataArchiveMutation.prototype, "deleteDataArchive", null);
177
+ tslib_1.__decorate([
178
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
179
+ (0, type_graphql_1.Directive)('@transaction'),
180
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete multiple dataArchives' }),
181
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
182
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
183
+ tslib_1.__metadata("design:type", Function),
184
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
185
+ tslib_1.__metadata("design:returntype", Promise)
186
+ ], DataArchiveMutation.prototype, "deleteDataArchives", null);
187
+ tslib_1.__decorate([
188
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
189
+ (0, type_graphql_1.Directive)('@transaction'),
190
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To import multiple data-archives' }),
191
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('dataArchives', type => [data_archive_type_1.DataArchivePatch])),
192
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
193
+ tslib_1.__metadata("design:type", Function),
194
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
195
+ tslib_1.__metadata("design:returntype", Promise)
196
+ ], DataArchiveMutation.prototype, "importDataArchives", null);
197
+ tslib_1.__decorate([
198
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
199
+ (0, type_graphql_1.Directive)('@transaction'),
200
+ (0, type_graphql_1.Mutation)(returns => [data_archive_1.DataArchive], { description: 'To copy multiple data-archives' }),
201
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
202
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
203
+ tslib_1.__metadata("design:type", Function),
204
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
205
+ tslib_1.__metadata("design:returntype", Promise)
206
+ ], DataArchiveMutation.prototype, "copyDataArchives", null);
207
+ DataArchiveMutation = tslib_1.__decorate([
208
+ (0, type_graphql_1.Resolver)(data_archive_1.DataArchive)
209
+ ], DataArchiveMutation);
210
+ exports.DataArchiveMutation = DataArchiveMutation;
211
+ //# sourceMappingURL=data-archive-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-archive-mutation.js","sourceRoot":"","sources":["../../../server/service/data-archive/data-archive-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\nimport fetch from 'node-fetch'\n\nimport { DataArchive } from './data-archive'\nimport { DataArchivePatch, NewDataArchive } from './data-archive-type'\n\nconst { config } = require('@things-factory/env')\nconst crypto = require('crypto')\n\n@Resolver(DataArchive)\nexport class DataArchiveMutation {\n\n /** \n * It may use 'func-[dev]-data-set-download' in https://github.com/operatochef/serverless \n * This function requests athena query and save the result as csv.gz in s3\n */\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataArchive, { description: 'To create new DataArchive' })\n async generatePresignedUrl(@Arg('patch') patch: DataArchivePatch, @Ctx() context: any): Promise<DataArchive> {\n const { domain, user, tx } = context.state\n // const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const { dataset: { endpoint: { host, port=80 }, datasource: { database } }} = config.get('dataArchive')\n \n const body = JSON.stringify({ \n domain: domain?.subdomain,\n database,\n ...patch?.requestParams\n })\n\n const fetched = await fetch(`${host}:${port}`, {\n method: 'POST',\n headers: {'Content-Type': 'application/json'},\n body\n })\n \n let result\n if (fetched.ok) {\n const response = await fetched.json()\n patch.downloadUrl = response['presignedUrl']\n patch.status = 'done'\n\n result = await this.updateDataArchive(patch.id, patch, context)\n } else {\n console.log(fetched.text())\n patch.status = 'error'\n\n result = await this.updateDataArchive(patch.id, patch, context)\n }\n\n return result\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataArchive, { description: 'To create new DataArchive' })\n async createDataArchive(@Arg('dataArchive') dataArchive: NewDataArchive, @Ctx() context: any): Promise<DataArchive> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const result = await dataArchiveRepo.save({\n ...dataArchive,\n domain,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataArchive, { description: 'To modify DataArchive information' })\n async updateDataArchive(@Arg('id') id: string, @Arg('patch') patch: DataArchivePatch, @Ctx() context: any): Promise<DataArchive> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const dataArchive = await dataArchiveRepo.findOne({\n where: { domain, id },\n relations: ['domain', 'creator', 'updater']\n })\n\n const result = await dataArchiveRepo.save({\n ...dataArchive,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataArchive], { description: \"To modify multiple DataArchives' information\" })\n async updateMultipleDataArchive(\n @Arg('patches', type => [DataArchivePatch]) patches: DataArchivePatch[],\n @Ctx() context: any\n ): Promise<DataArchive[]> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n\n if (_createRecords.length > 0) {\n const cuFlag = '+'\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await dataArchiveRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n if (_updateRecords.length > 0) {\n const cuFlag = 'M'\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const dataArchive = await dataArchiveRepo.findOne(newRecord.id, {\n relations: ['domain', 'creator', 'updater']\n })\n\n const result = await dataArchiveRepo.save({\n ...dataArchive,\n ...newRecord,\n updater: user\n })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n return results\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete DataArchive' })\n async deleteDataArchive(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(DataArchive).delete({ domain, id })\n return true\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple dataArchives' })\n async deleteDataArchives(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(DataArchive).delete({\n domain,\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple data-archives' })\n async importDataArchives(\n @Arg('dataArchives', type => [DataArchivePatch]) dataArchives: DataArchive[],\n @Ctx() context: any\n ): Promise<boolean> {\n const { domain, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n await Promise.all(\n dataArchives.map(async (dataArchive: DataArchive) => {\n const createdDataArchive: DataArchive = await dataArchiveRepo.save({\n domain,\n ...dataArchive\n })\n })\n )\n\n return true\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataArchive], { description: 'To copy multiple data-archives' })\n async copyDataArchives(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<DataArchive[]> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const originals = await dataArchiveRepo.find({\n where: {\n id: In(ids),\n domain\n },\n relations: ['domain']\n })\n\n if (originals.length == 0) {\n return []\n }\n\n var newCopys = originals.map(dataArchive => {\n let dataArchiveId = crypto.randomUUID()\n\n return {\n ...dataArchive,\n id: dataArchiveId,\n domain,\n creator: user,\n updater: user,\n updatedAt: undefined,\n createdAt: undefined\n }\n })\n\n var copiedDataArchives = await dataArchiveRepo.save(newCopys)\n\n return copiedDataArchives\n }\n}\n"]}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DataArchiveQuery = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const type_graphql_1 = require("type-graphql");
7
+ const typeorm_1 = require("typeorm");
8
+ const auth_base_1 = require("@things-factory/auth-base");
9
+ const shell_1 = require("@things-factory/shell");
10
+ const data_archive_1 = require("./data-archive");
11
+ const data_archive_type_1 = require("./data-archive-type");
12
+ var parser = require('cron-parser');
13
+ let DataArchiveQuery = class DataArchiveQuery {
14
+ async dataArchive(id, context) {
15
+ const { domain } = context.state;
16
+ return await (0, typeorm_1.getRepository)(data_archive_1.DataArchive).findOne({
17
+ where: { domain, id }
18
+ });
19
+ }
20
+ async dataArchives(params, context) {
21
+ const { domain } = context.state;
22
+ const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
23
+ repository: (0, typeorm_1.getRepository)(data_archive_1.DataArchive),
24
+ params,
25
+ domain,
26
+ alias: 'dataArchive',
27
+ searchables: []
28
+ });
29
+ const [items, total] = await queryBuilder.getManyAndCount();
30
+ return { items, total };
31
+ }
32
+ async domain(dataArchive) {
33
+ return await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(dataArchive.domainId);
34
+ }
35
+ async updater(dataArchive) {
36
+ return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(dataArchive.updaterId);
37
+ }
38
+ async creator(dataArchive) {
39
+ return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(dataArchive.creatorId);
40
+ }
41
+ };
42
+ tslib_1.__decorate([
43
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "query", domainOwnerGranted: true)'),
44
+ (0, type_graphql_1.Query)(returns => data_archive_1.DataArchive, { description: 'To fetch a DataArchive' }),
45
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
46
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
47
+ tslib_1.__metadata("design:type", Function),
48
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
49
+ tslib_1.__metadata("design:returntype", Promise)
50
+ ], DataArchiveQuery.prototype, "dataArchive", null);
51
+ tslib_1.__decorate([
52
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "query", domainOwnerGranted: true)'),
53
+ (0, type_graphql_1.Query)(returns => data_archive_type_1.DataArchiveList, { description: 'To fetch multiple DataArchives' }),
54
+ tslib_1.__param(0, (0, type_graphql_1.Args)()),
55
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
56
+ tslib_1.__metadata("design:type", Function),
57
+ tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object, Object]),
58
+ tslib_1.__metadata("design:returntype", Promise)
59
+ ], DataArchiveQuery.prototype, "dataArchives", null);
60
+ tslib_1.__decorate([
61
+ (0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
62
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
63
+ tslib_1.__metadata("design:type", Function),
64
+ tslib_1.__metadata("design:paramtypes", [data_archive_1.DataArchive]),
65
+ tslib_1.__metadata("design:returntype", Promise)
66
+ ], DataArchiveQuery.prototype, "domain", null);
67
+ tslib_1.__decorate([
68
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
69
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
70
+ tslib_1.__metadata("design:type", Function),
71
+ tslib_1.__metadata("design:paramtypes", [data_archive_1.DataArchive]),
72
+ tslib_1.__metadata("design:returntype", Promise)
73
+ ], DataArchiveQuery.prototype, "updater", null);
74
+ tslib_1.__decorate([
75
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
76
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
77
+ tslib_1.__metadata("design:type", Function),
78
+ tslib_1.__metadata("design:paramtypes", [data_archive_1.DataArchive]),
79
+ tslib_1.__metadata("design:returntype", Promise)
80
+ ], DataArchiveQuery.prototype, "creator", null);
81
+ DataArchiveQuery = tslib_1.__decorate([
82
+ (0, type_graphql_1.Resolver)(data_archive_1.DataArchive)
83
+ ], DataArchiveQuery);
84
+ exports.DataArchiveQuery = DataArchiveQuery;
85
+ //# sourceMappingURL=data-archive-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-archive-query.js","sourceRoot":"","sources":["../../../server/service/data-archive/data-archive-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { getRepository } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'\n\nimport { DataArchive } from './data-archive'\nimport { DataArchiveList } from './data-archive-type'\n\nvar parser = require('cron-parser')\n\n@Resolver(DataArchive)\nexport class DataArchiveQuery {\n @Directive('@privilege(category: \"data-archive\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataArchive, { description: 'To fetch a DataArchive' })\n async dataArchive(@Arg('id') id: string, @Ctx() context: any): Promise<DataArchive> {\n const { domain } = context.state\n\n return await getRepository(DataArchive).findOne({\n where: { domain, id }\n })\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataArchiveList, { description: 'To fetch multiple DataArchives' })\n async dataArchives(@Args() params: ListParam, @Ctx() context: any): Promise<DataArchiveList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataArchive),\n params,\n domain,\n alias: 'dataArchive',\n searchables: []\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() dataArchive: DataArchive): Promise<Domain> {\n return await getRepository(Domain).findOne(dataArchive.domainId)\n }\n\n @FieldResolver(type => User)\n async updater(@Root() dataArchive: DataArchive): Promise<User> {\n return await getRepository(User).findOne(dataArchive.updaterId)\n }\n\n @FieldResolver(type => User)\n async creator(@Root() dataArchive: DataArchive): Promise<User> {\n return await getRepository(User).findOne(dataArchive.creatorId)\n }\n}\n"]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataArchiveList = exports.DataArchivePatch = exports.NewDataArchive = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const data_archive_1 = require("./data-archive");
7
+ const shell_1 = require("@things-factory/shell");
8
+ let NewDataArchive = class NewDataArchive {
9
+ };
10
+ tslib_1.__decorate([
11
+ (0, type_graphql_1.Field)({ nullable: true }),
12
+ tslib_1.__metadata("design:type", String)
13
+ ], NewDataArchive.prototype, "type", void 0);
14
+ tslib_1.__decorate([
15
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
16
+ tslib_1.__metadata("design:type", Object)
17
+ ], NewDataArchive.prototype, "requestParams", void 0);
18
+ tslib_1.__decorate([
19
+ (0, type_graphql_1.Field)({ nullable: true }),
20
+ tslib_1.__metadata("design:type", String)
21
+ ], NewDataArchive.prototype, "downloadUrl", void 0);
22
+ tslib_1.__decorate([
23
+ (0, type_graphql_1.Field)({ nullable: true }),
24
+ tslib_1.__metadata("design:type", String)
25
+ ], NewDataArchive.prototype, "status", void 0);
26
+ NewDataArchive = tslib_1.__decorate([
27
+ (0, type_graphql_1.InputType)()
28
+ ], NewDataArchive);
29
+ exports.NewDataArchive = NewDataArchive;
30
+ let DataArchivePatch = class DataArchivePatch {
31
+ };
32
+ tslib_1.__decorate([
33
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true }),
34
+ tslib_1.__metadata("design:type", String)
35
+ ], DataArchivePatch.prototype, "id", void 0);
36
+ tslib_1.__decorate([
37
+ (0, type_graphql_1.Field)({ nullable: true }),
38
+ tslib_1.__metadata("design:type", String)
39
+ ], DataArchivePatch.prototype, "type", void 0);
40
+ tslib_1.__decorate([
41
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
42
+ tslib_1.__metadata("design:type", Object)
43
+ ], DataArchivePatch.prototype, "requestParams", void 0);
44
+ tslib_1.__decorate([
45
+ (0, type_graphql_1.Field)({ nullable: true }),
46
+ tslib_1.__metadata("design:type", String)
47
+ ], DataArchivePatch.prototype, "downloadUrl", void 0);
48
+ tslib_1.__decorate([
49
+ (0, type_graphql_1.Field)({ nullable: true }),
50
+ tslib_1.__metadata("design:type", String)
51
+ ], DataArchivePatch.prototype, "status", void 0);
52
+ tslib_1.__decorate([
53
+ (0, type_graphql_1.Field)({ nullable: true }),
54
+ tslib_1.__metadata("design:type", String)
55
+ ], DataArchivePatch.prototype, "cuFlag", void 0);
56
+ DataArchivePatch = tslib_1.__decorate([
57
+ (0, type_graphql_1.InputType)()
58
+ ], DataArchivePatch);
59
+ exports.DataArchivePatch = DataArchivePatch;
60
+ let DataArchiveList = class DataArchiveList {
61
+ };
62
+ tslib_1.__decorate([
63
+ (0, type_graphql_1.Field)(type => [data_archive_1.DataArchive]),
64
+ tslib_1.__metadata("design:type", Array)
65
+ ], DataArchiveList.prototype, "items", void 0);
66
+ tslib_1.__decorate([
67
+ (0, type_graphql_1.Field)(type => type_graphql_1.Int),
68
+ tslib_1.__metadata("design:type", Number)
69
+ ], DataArchiveList.prototype, "total", void 0);
70
+ DataArchiveList = tslib_1.__decorate([
71
+ (0, type_graphql_1.ObjectType)()
72
+ ], DataArchiveList);
73
+ exports.DataArchiveList = DataArchiveList;
74
+ //# sourceMappingURL=data-archive-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-archive-type.js","sourceRoot":"","sources":["../../../server/service/data-archive/data-archive-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AACpE,iDAA4C;AAC5C,iDAA+D;AAGxD,IAAM,cAAc,GAApB,MAAM,cAAc;CAa1B,CAAA;AAZC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACY;AAEtC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACV;AAEtC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACN;AAEpB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACX;AAXJ,cAAc;IAD1B,IAAA,wBAAS,GAAE;GACC,cAAc,CAa1B;AAbY,wCAAc;AAgBpB,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAkB5B,CAAA;AAjBC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC3B;AAEX;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACY;AAEtC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACV;AAEtC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAEpB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACX;AAEf;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACZ;AAjBH,gBAAgB;IAD5B,IAAA,wBAAS,GAAE;GACC,gBAAgB,CAkB5B;AAlBY,4CAAgB;AAqBtB,IAAM,eAAe,GAArB,MAAM,eAAe;CAM3B,CAAA;AALC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,0BAAW,CAAC,CAAC;;8CACT;AAEpB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;8CACN;AALF,eAAe;IAD3B,IAAA,yBAAU,GAAE;GACA,eAAe,CAM3B;AANY,0CAAe","sourcesContent":["import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'\nimport { DataArchive } from './data-archive'\nimport { ObjectRef, ScalarObject } from '@things-factory/shell'\n\n@InputType()\nexport class NewDataArchive {\n @Field({ nullable: true })\n type?: 'manual' | 'automatic' | string\n \n @Field(type => ScalarObject, { nullable: true })\n requestParams?: { [key: string]: any }\n\n @Field({ nullable: true })\n downloadUrl?: string\n\n @Field({ nullable: true })\n status?: string\n\n}\n\n@InputType()\nexport class DataArchivePatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n type?: 'manual' | 'automatic' | string\n\n @Field(type => ScalarObject, { nullable: true })\n requestParams?: { [key: string]: any }\n\n @Field({ nullable: true })\n downloadUrl?: string\n\n @Field({ nullable: true })\n status?: string\n\n @Field({ nullable: true })\n cuFlag: string\n}\n\n@ObjectType()\nexport class DataArchiveList {\n @Field(type => [DataArchive])\n items: DataArchive[]\n\n @Field(type => Int)\n total: number\n}\n"]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var _a, _b, _c;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DataArchive = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const type_graphql_1 = require("type-graphql");
7
+ const typeorm_1 = require("typeorm");
8
+ const auth_base_1 = require("@things-factory/auth-base");
9
+ const shell_1 = require("@things-factory/shell");
10
+ let DataArchive = class DataArchive {
11
+ };
12
+ tslib_1.__decorate([
13
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
14
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID),
15
+ tslib_1.__metadata("design:type", String)
16
+ ], DataArchive.prototype, "id", void 0);
17
+ tslib_1.__decorate([
18
+ (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
19
+ (0, type_graphql_1.Field)({ nullable: true }),
20
+ tslib_1.__metadata("design:type", typeof (_a = typeof shell_1.Domain !== "undefined" && shell_1.Domain) === "function" ? _a : Object)
21
+ ], DataArchive.prototype, "domain", void 0);
22
+ tslib_1.__decorate([
23
+ (0, typeorm_1.RelationId)((dataArchive) => dataArchive.domain),
24
+ tslib_1.__metadata("design:type", String)
25
+ ], DataArchive.prototype, "domainId", void 0);
26
+ tslib_1.__decorate([
27
+ (0, typeorm_1.Column)({ nullable: true }),
28
+ (0, type_graphql_1.Field)({ nullable: true }),
29
+ tslib_1.__metadata("design:type", String)
30
+ ], DataArchive.prototype, "type", void 0);
31
+ tslib_1.__decorate([
32
+ (0, typeorm_1.Column)('simple-json', { nullable: true }),
33
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
34
+ tslib_1.__metadata("design:type", Object)
35
+ ], DataArchive.prototype, "requestParams", void 0);
36
+ tslib_1.__decorate([
37
+ (0, typeorm_1.Column)({ nullable: true }),
38
+ (0, type_graphql_1.Field)({ nullable: true }),
39
+ tslib_1.__metadata("design:type", String)
40
+ ], DataArchive.prototype, "downloadUrl", void 0);
41
+ tslib_1.__decorate([
42
+ (0, typeorm_1.Column)({ nullable: true }),
43
+ (0, type_graphql_1.Field)({ nullable: true }),
44
+ tslib_1.__metadata("design:type", String)
45
+ ], DataArchive.prototype, "status", void 0);
46
+ tslib_1.__decorate([
47
+ (0, typeorm_1.CreateDateColumn)(),
48
+ (0, type_graphql_1.Field)({ nullable: true }),
49
+ tslib_1.__metadata("design:type", Date)
50
+ ], DataArchive.prototype, "createdAt", void 0);
51
+ tslib_1.__decorate([
52
+ (0, typeorm_1.UpdateDateColumn)(),
53
+ (0, type_graphql_1.Field)({ nullable: true }),
54
+ tslib_1.__metadata("design:type", Date)
55
+ ], DataArchive.prototype, "updatedAt", void 0);
56
+ tslib_1.__decorate([
57
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
58
+ (0, type_graphql_1.Field)({ nullable: true }),
59
+ tslib_1.__metadata("design:type", typeof (_b = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _b : Object)
60
+ ], DataArchive.prototype, "creator", void 0);
61
+ tslib_1.__decorate([
62
+ (0, typeorm_1.RelationId)((dataArchive) => dataArchive.creator),
63
+ tslib_1.__metadata("design:type", String)
64
+ ], DataArchive.prototype, "creatorId", void 0);
65
+ tslib_1.__decorate([
66
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
67
+ (0, type_graphql_1.Field)({ nullable: true }),
68
+ tslib_1.__metadata("design:type", typeof (_c = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _c : Object)
69
+ ], DataArchive.prototype, "updater", void 0);
70
+ tslib_1.__decorate([
71
+ (0, typeorm_1.RelationId)((dataArchive) => dataArchive.creator),
72
+ tslib_1.__metadata("design:type", String)
73
+ ], DataArchive.prototype, "updaterId", void 0);
74
+ DataArchive = tslib_1.__decorate([
75
+ (0, typeorm_1.Entity)(),
76
+ (0, typeorm_1.Index)('ix_data_archive_0', (dataArchive) => [dataArchive.id], { unique: true }),
77
+ (0, type_graphql_1.ObjectType)({ description: 'Entity for DataArchive' })
78
+ ], DataArchive);
79
+ exports.DataArchive = DataArchive;
80
+ //# sourceMappingURL=data-archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-archive.js","sourceRoot":"","sources":["../../../server/service/data-archive/data-archive.ts"],"names":[],"mappings":";;;;;AAAA,+CAAsE;AACtE,qCAUgB;AAEhB,yDAAsD;AACtD,iDAA4D;AAKrD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAiDvB,CAAA;AAhDC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;uCACC;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0DACjB,cAAM,oBAAN,cAAM;2CAAA;AAEf;IAAC,IAAA,oBAAU,EAAC,CAAC,WAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;;6CAC5C;AAEjB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACY;AAEtC;IAAC,IAAA,gBAAM,EAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACzC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACV;AAEtC;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACN;AAEpB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACX;AAEf;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;8CAAA;AAEhB;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;8CAAA;AAEhB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0DAChB,gBAAI,oBAAJ,gBAAI;4CAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,WAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;;8CAC5C;AAElB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0DAChB,gBAAI,oBAAJ,gBAAI;4CAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,WAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;;8CAC5C;AAhDP,WAAW;IAHvB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,mBAAmB,EAAE,CAAC,WAAwB,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5F,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;GACzC,WAAW,CAiDvB;AAjDY,kCAAW","sourcesContent":["import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'\nimport {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToOne,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn,\n VersionColumn\n} from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Domain, ScalarObject } from '@things-factory/shell'\n\n@Entity()\n@Index('ix_data_archive_0', (dataArchive: DataArchive) => [dataArchive.id], { unique: true })\n@ObjectType({ description: 'Entity for DataArchive' })\nexport class DataArchive {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true })\n domain?: Domain\n\n @RelationId((dataArchive: DataArchive) => dataArchive.domain)\n domainId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n type?: 'manual' | 'automatic' | string\n\n @Column('simple-json', { nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n requestParams?: { [key: string]: any }\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n downloadUrl?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n status?: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field({ nullable: true })\n creator?: User\n\n @RelationId((dataArchive: DataArchive) => dataArchive.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field({ nullable: true })\n updater?: User\n\n @RelationId((dataArchive: DataArchive) => dataArchive.creator)\n updaterId?: string\n}\n"]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvers = exports.entities = void 0;
4
+ const data_archive_1 = require("./data-archive");
5
+ const data_archive_mutation_1 = require("./data-archive-mutation");
6
+ const data_archive_query_1 = require("./data-archive-query");
7
+ exports.entities = [data_archive_1.DataArchive];
8
+ exports.resolvers = [data_archive_query_1.DataArchiveQuery, data_archive_mutation_1.DataArchiveMutation];
9
+ //# sourceMappingURL=index.js.map