@things-factory/operato-board 6.0.0-alpha.1 → 6.0.0-alpha.11

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.
@@ -88,6 +88,12 @@ export default class BoardTileList extends LitElement {
88
88
  -o-transition: opacity 0.8s;
89
89
  transition: opacity 0.8s;
90
90
  }
91
+
92
+ @media screen and (max-width: 800px), screen and (max-height: 600px) {
93
+ board-creation-card {
94
+ display: none;
95
+ }
96
+ }
91
97
  `
92
98
  ]
93
99
  }
@@ -1,4 +1,5 @@
1
1
  import '@things-factory/notification'
2
+ import '@things-factory/board-ui'
2
3
  import './viewparts/menu-tools'
3
4
  import './apptools/favorite-tool'
4
5
  import '@operato/help/ox-help-panel.js'
@@ -158,4 +159,12 @@ export default function bootstrap() {
158
159
  template: html` <notification-setting-let></notification-setting-let> `
159
160
  }
160
161
  })
162
+
163
+ store.dispatch({
164
+ type: ADD_SETTING,
165
+ setting: {
166
+ seq: 21,
167
+ template: html` <board-view-setting-let></board-view-setting-let> `
168
+ }
169
+ })
161
170
  }
@@ -327,8 +327,8 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
327
327
 
328
328
  async onCreateGroup(group) {
329
329
  try {
330
- await createGroup(group)
331
- this._notify('info', i18next.t('text.group created', { group: group.name }))
330
+ const data = await createGroup(group)
331
+ data && this._notify('info', i18next.t('text.group created', { group: group.name }))
332
332
  } catch (ex) {
333
333
  this._notify('error', ex, ex)
334
334
  }
@@ -338,8 +338,8 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
338
338
 
339
339
  async onUpdateGroup(group) {
340
340
  try {
341
- await updateGroup(group)
342
- this._notify('info', i18next.t('text.group updated', { group: group.name }))
341
+ const data = await updateGroup(group)
342
+ data && this._notify('info', i18next.t('text.group updated', { group: group.name }))
343
343
  } catch (ex) {
344
344
  this._notify('error', ex, ex)
345
345
  }
@@ -349,8 +349,8 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
349
349
 
350
350
  async onDeleteGroup(group) {
351
351
  try {
352
- await deleteGroup(group.id)
353
- this._notify('info', i18next.t('text.group deleted', { group: group.name }))
352
+ const data = await deleteGroup(group.id)
353
+ data && this._notify('info', i18next.t('text.group deleted', { group: group.name }))
354
354
  } catch (ex) {
355
355
  this._notify('error', ex, ex)
356
356
  }
@@ -367,9 +367,9 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
367
367
  }
368
368
  }
369
369
 
370
- await createBoard(board)
370
+ const data = await createBoard(board)
371
371
 
372
- this._notify('info', i18next.t('text.board created', { board: board.name }))
372
+ data && this._notify('info', i18next.t('text.board created', { board: board.name }))
373
373
  } catch (ex) {
374
374
  this._notify('error', ex, ex)
375
375
  }
@@ -379,8 +379,8 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
379
379
 
380
380
  async onUpdateBoard(board) {
381
381
  try {
382
- await updateBoard(board)
383
- this._notify('info', i18next.t('text.board updated', { board: board.name }))
382
+ const data = await updateBoard(board)
383
+ data && this._notify('info', i18next.t('text.board updated', { board: board.name }))
384
384
  } catch (ex) {
385
385
  this._notify('error', ex, ex)
386
386
  }
@@ -390,8 +390,8 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
390
390
 
391
391
  async onDeleteBoard(board) {
392
392
  try {
393
- await deleteBoard(board.id)
394
- this._notify('info', i18next.t('text.board deleted', { board: board.name }))
393
+ const data = await deleteBoard(board.id)
394
+ data && this._notify('info', i18next.t('text.board deleted', { board: board.name }))
395
395
  } catch (ex) {
396
396
  this._notify('error', ex, ex)
397
397
  }
@@ -401,7 +401,7 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
401
401
 
402
402
  async onJoinPlayGroup({ board, playGroup }) {
403
403
  try {
404
- await client.mutate({
404
+ const { data } = await client.mutate({
405
405
  mutation: gql`
406
406
  mutation JoinPlayGroup($id: String!, $boardIds: [String!]!) {
407
407
  joinPlayGroup(id: $id, boardIds: $boardIds) {
@@ -415,7 +415,8 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
415
415
  }
416
416
  })
417
417
 
418
- this._notify('info', i18next.t('text.joined into play-group', { board: board.name, playGroup: playGroup.name }))
418
+ data &&
419
+ this._notify('info', i18next.t('text.joined into play-group', { board: board.name, playGroup: playGroup.name }))
419
420
  } catch (ex) {
420
421
  this._notify('error', ex, ex)
421
422
  }
@@ -423,7 +424,7 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
423
424
 
424
425
  async onLeavePlayGroup({ board, playGroup }) {
425
426
  try {
426
- await client.mutate({
427
+ const { data } = await client.mutate({
427
428
  mutation: gql`
428
429
  mutation ($id: String!, $boardIds: [String!]!) {
429
430
  leavePlayGroup(id: $id, boardIds: $boardIds) {
@@ -437,14 +438,15 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
437
438
  }
438
439
  })
439
440
 
440
- this._notify('info', i18next.t('text.leaved from play-group', { board: board.name, playGroup: playGroup.name }))
441
+ data &&
442
+ this._notify('info', i18next.t('text.leaved from play-group', { board: board.name, playGroup: playGroup.name }))
441
443
  } catch (ex) {
442
444
  this._notify('error', ex, ex)
443
445
  }
444
446
  }
445
447
 
446
448
  async refreshFavorites() {
447
- const response = await client.query({
449
+ const { data } = await client.query({
448
450
  query: gql`
449
451
  query {
450
452
  myFavorites {
@@ -455,10 +457,11 @@ class BoardListPage extends localize(i18next)(connect(store)(InfiniteScrollable(
455
457
  `
456
458
  })
457
459
 
458
- store.dispatch({
459
- type: UPDATE_FAVORITES,
460
- favorites: response.data.myFavorites.map(favorite => favorite.routing)
461
- })
460
+ data &&
461
+ store.dispatch({
462
+ type: UPDATE_FAVORITES,
463
+ favorites: data.myFavorites.map(favorite => favorite.routing)
464
+ })
462
465
  }
463
466
 
464
467
  _notify(level, message, ex) {
package/client/route.js CHANGED
@@ -42,13 +42,5 @@ export default function route(page) {
42
42
  case 'scenario-list':
43
43
  import('./pages/scenario-list-page')
44
44
  return page
45
-
46
- case 'headroom-test':
47
- import('./pages/headroom-test-page')
48
- return page
49
-
50
- case 'sticky-test':
51
- import('./pages/sticky-test-page')
52
- return page
53
45
  }
54
46
  }
@@ -183,16 +183,14 @@ export class BoardInfo extends LitElement {
183
183
  </select>
184
184
  <label>${i18next.t('label.creator')}</label>
185
185
  <span>
186
- <mwc-icon>person</mwc-icon> ${board.creator && board.creator.name} <mwc-icon>schedule</mwc-icon> ${new Date(
187
- Number(board.createdAt)
188
- ).toLocaleString()}
186
+ <mwc-icon>person</mwc-icon> ${(board.creator && board.creator.name) || 'anonymous'}
187
+ <mwc-icon>schedule</mwc-icon> ${new Date(Number(board.createdAt)).toLocaleString()}
189
188
  </span>
190
189
 
191
190
  <label>${i18next.t('label.updater')}</label>
192
191
  <span>
193
- <mwc-icon>person</mwc-icon> ${board.updater && board.updater.name} <mwc-icon>schedule</mwc-icon> ${new Date(
194
- Number(board.updatedAt)
195
- ).toLocaleString()}
192
+ <mwc-icon>person</mwc-icon> ${(board.updater && board.updater.name) || 'anonymouse'}
193
+ <mwc-icon>schedule</mwc-icon> ${new Date(Number(board.updatedAt)).toLocaleString()}
196
194
  </span>
197
195
 
198
196
  <div buttons>
@@ -198,6 +198,12 @@ export class GroupInfo extends LitElement {
198
198
  }
199
199
  }
200
200
 
201
+ firstUpdated() {
202
+ setTimeout(() => {
203
+ ;(this.renderRoot.querySelector('input[type=text]') as any).focus()
204
+ }, 100)
205
+ }
206
+
201
207
  async refresh() {
202
208
  if (!this.groupId) {
203
209
  /* model이 없으므로, 기본 모델을 제공함. */
@@ -200,6 +200,12 @@ export class PlayGroupInfo extends LitElement {
200
200
  }
201
201
  }
202
202
 
203
+ firstUpdated() {
204
+ setTimeout(() => {
205
+ ;(this.renderRoot.querySelector('input[type=text]') as any).focus()
206
+ }, 100)
207
+ }
208
+
203
209
  async refresh() {
204
210
  if (!this.playGroupId) {
205
211
  /* model이 없으므로, 기본 모델을 제공함. */
@@ -1,10 +1,12 @@
1
1
  {
2
- "License Type": "Evaluation",
3
- "Purchase Date": "2022.07.22",
4
- "Expiration Date": "2022.10.22",
5
- "Host Address": "UNLIMITED",
6
- "Max Target Count": 0,
7
- "Max Domain Count": 0,
8
- "Permissions For Board Usage": "Viewer",
9
- "Key": "5eyJMaWNlbnNlIFR5cGUiOiJFdmFsdWF0aW9uIiwiUHVyY2hhc2UgRGF0ZSI6IjIwMjIuMDcuMjIiLCJFeHBpcmF0aW9uIERhdGUiOiIyMDIyLjEwLjIyIiwiSG9zdCBBZGRyZXNzIjoiVU5MSU1JVEVEIiwiTWF4IFRhcmdldCBDb3VudCI6MCwiTWF4IERvbWFpbiBDb3VudCI6MCwiUGVybWlzc2lvbnMgRm9yIEJvYXJkIFVzYWdlIjoiVmlld2VyIiwiS2V5IjoiQXhncUhBNDNIZ3NBUUJvTEt5TWRGUWthRFRzWkNDb2pDMDBtRWdJcElqRVRFalpWSXdnVk94TVpIaEFXRWdRSEFRUVRCaUlpS1JBU0Roa0lId2tyRGlKS0l4UVZGZ1VVSndFbVNTQWVHQmdER1RJSERFMG1NUUVwTHhRckpCMUlDQm9OT3hrSUt4QWlKQ01ZRmp3akZpZ0JKbGtqQ0JVN0ZSbzdFUXNqS2g4SUdSWVlHaEVoV2lNSkRUc1NERDhjSERVN0Z3d1hFaHdyQUFoSkdBb2NCaDhiSWdFTVRRZ0xBaFVtSFJJMkdWVUlIaGtJR3g0REFCczNKaTBaRnhZVkVoSXBVQW9JSUJZR0xoNE1DeU1qS3hVVkR3Z2ZJaGxaQ2dvS1RBVXZDQTBOVGg4R0VEOHZHQ3NrSlZZVENSZzlIeHNlRVJZM0NBc1pQQWNJSGdRRFRBZ3ZERXNmRFVRcyJ963448"
10
- }
2
+ "Product": "Operato Board",
3
+ "License Type": "Evaluation",
4
+ "Purchase Date": "2022.10.18",
5
+ "Expiration Date": "2023.01.18",
6
+ "Host Address": "UNLIMITED",
7
+ "Max Target Count": 0,
8
+ "Max Domain Count": 0,
9
+ "Permissions For Board Usage": "Viewer",
10
+ "Permissions For Tailor Tool": "",
11
+ "Key": "5eyJQcm9kdWN0IjoiT3BlcmF0byBCb2FyZCIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMi4xMC4xOCIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjMuMDEuMTgiLCJIb3N0IEFkZHJlc3MiOiJVTkxJTUlURUQiLCJNYXggVGFyZ2V0IENvdW50IjowLCJNYXggRG9tYWluIENvdW50IjowLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIiLCJQZXJtaXNzaW9ucyBGb3IgVGFpbG9yIFRvb2wiOiIiLCJLZXkiOiJBeGdxR0F4Tk13b0NLUm94S3dFQVNSZ3VJRDRGREM0NURWa3FIZ0FFSWhnYUppWlRJd29XUWc4dkhnd01FaGNHREJvRUZob1dKaFlqQ2d3RUR3b0VPQlk0R2c4QUJEUUlLQ1lsTVFnSkdEd0hHaTRSRlRNcUhBa3FGZ3NyQVFCSkh3a2hTeHNJUUE4aUl6Z1hFeFVmRWlzQ0dSUUpHZ3BMRHdraUJ3MFNPQVlRR1NJeEdoWW1GaU1KR1VrYkNTY01JaVFuRkJVbUFRZ29KaVVwQ2k0VUFoOGNMZ0lWS0NJTEFRVWJDQ1VBSlRZWUNoWWNGQXdJRkIwMUd3Z1dGUjRUR3hFSVJ4WWFIRXNPTHg0NUppVWVGUUlwTXpFckFRQlhJQjRZSUE4SkRRSWRKek1UQ1NrRUZDc2tJVllJQ2kwQ0h3a0ZEaU1qSWhBSUtoNFRFeEVoV2dzS0tVY0ZHRElpRFJNakJoRS9Md2NSQkI1SEZna1VPZzR2SHdBZ1NTSUtBU2tTTGhvUkpra2dIaGdqRGdrcUN3NDRIaGtCS1M4VUVSQXRKd291R1RrU0dpNEhEU2N6R0JrWUZoVVNOd2hKSFFnWk93SVFOeXc9In0=81098"
12
+ }
@@ -1,10 +1,12 @@
1
1
  {
2
+ "Product": "Operato Board",
2
3
  "License Type": "Evaluation",
3
- "Purchase Date": "2022.07.22",
4
- "Expiration Date": "2022.10.22",
4
+ "Purchase Date": "2022.10.18",
5
+ "Expiration Date": "2023.01.18",
5
6
  "Host Address": "UNLIMITED",
6
7
  "Max Target Count": 0,
7
8
  "Max Domain Count": 0,
8
9
  "Permissions For Board Usage": "Viewer, Modeller",
9
- "Key": "5eyJMaWNlbnNlIFR5cGUiOiJFdmFsdWF0aW9uIiwiUHVyY2hhc2UgRGF0ZSI6IjIwMjIuMDcuMjIiLCJFeHBpcmF0aW9uIERhdGUiOiIyMDIyLjEwLjIyIiwiSG9zdCBBZGRyZXNzIjoiVU5MSU1JVEVEIiwiTWF4IFRhcmdldCBDb3VudCI6MCwiTWF4IERvbWFpbiBDb3VudCI6MCwiUGVybWlzc2lvbnMgRm9yIEJvYXJkIFVzYWdlIjoiVmlld2VyLCBNb2RlbGxlciIsIktleSI6IkF4Z3FIQTQzSGdzQVFCb0xLeU1kRlFrYURUc1pDQ29qQzAwbUVnSXBJakVURWpaVkl3Z1ZPeE1aSGhBV0VnUUhBUVFUQmlJaUtSQVNEaGtJSHdrckRpSktJeFFWRmdVVUp3RW1TU0FlR0JnREdUSUhERTBtTVFFcEx4UXJKQjFJQ0JvTk94a0lLeEFpSkNNWUZqd2pGaWdCSmxrakNCVTdGUm83RVFzaktoOElHUllZR2hFaFdpTUpEVHNTREQ4Y0hEVTdGd3dYRWh3ckFBaEpHQW9jQmg4YklnRU1UUWdMQWhVbUhSSTJHVlVJSGhrSUd4NERBQnMzSmkwWkZ4WVZFaElwVUFvSUlCWUdMaDRNQ3lNakt4VVZEd2dmSWhsWkNnb0tUQVV2Q0EwTlRoOEdFRDh2R0Nza0pWWVRDUmc5SHhzZUVSWTNDQXNaUEFjSUhnUURUQWd2REVzY0hqSWJEUklhQ3dBWkVBc1JBQ1VaIn0=67424"
10
- }
10
+ "Permissions For Tailor Tool": "",
11
+ "Key": "5eyJQcm9kdWN0IjoiT3BlcmF0byBCb2FyZCIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMi4xMC4xOCIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjMuMDEuMTgiLCJIb3N0IEFkZHJlc3MiOiJVTkxJTUlURUQiLCJNYXggVGFyZ2V0IENvdW50IjowLCJNYXggRG9tYWluIENvdW50IjowLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIsIE1vZGVsbGVyIiwiUGVybWlzc2lvbnMgRm9yIFRhaWxvciBUb29sIjoiIiwiS2V5IjoiQXhncUdBeE5Nd29DS1JveEt3RUFTUmd1SUQ0RkRDNDVEVmtxSGdBRUloZ2FKaVpUSXdvV1FnOHZIZ3dNRWhjR0RCb0VGaG9XSmhZakNnd0VEd29FT0JZNEdnOEFCRFFJS0NZbE1RZ0pHRHdIR2k0UkZUTXFIQWtxRmdzckFRQkpId2toU3hzSVFBOGlJemdYRXhVZkVpc0NHUlFKR2dwTER3a2lCdzBTT0FZUUdTSXhHaFltRmlNSkdVa2JDU2NNSWlRbkZCVW1BUWdvSmlVcENpNFVBaDhjTGdJVktDSUxBUVViQ0NVQUpUWVlDaFljRkF3SUZCMDFHd2dXRlI0VEd4RUlSeFlhSEVzT0x4NDVKaVVlRlFJcE16RXJBUUJYSUI0WUlBOEpEUUlkSnpNVENTa0VGQ3NrSVZZSUNpMENId2tGRGlNakloQUlLaDRURXhFaFdnc0tLVWNGR0RJaURSTWpCaEUvTHdjUkJCNUhGZ2tVT2c0dkh3QWdTU0lLQVNrU0xob1JKbE1qSERGSURob2VDZzBuRmhnWk93OElIeUlaV1FvS0Nrd0ZMd2dORFU0ZkJoQS9MeGdySXgxSUN3b1dTQVVJTWhRTkVqTVNHVHdIQ0NzRlB4MD0ifQ==85748"
12
+ }
@@ -33,7 +33,7 @@ let BoardFavoriteQuery = class BoardFavoriteQuery {
33
33
  'Board.thumbnail as thumbnail',
34
34
  'Favorite.id as favoriteId'
35
35
  ])
36
- .andWhere('Favorite.user_id = :userId', {
36
+ .andWhere('Favorite.user = :userId', {
37
37
  userId: user.id
38
38
  });
39
39
  const items = await qb.getRawMany();
@@ -1 +1 @@
1
- {"version":3,"file":"board-favorite-query.js","sourceRoot":"","sources":["../../../server/service/board-favorite/board-favorite-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAyD;AAEzD,iEAAqD;AACrD,6CAA4C;AAC5C,uDAAmD;AACnD,iDAA4E;AAE5E,+DAAwE;AAExE,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;AAGpC,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAE7B,KAAK,CAAC,cAAc,CAAS,MAAiB,EAAS,OAAwB;QAC7E,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE9B,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,qBAAK,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAC9D,IAAA,kBAAU,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEzC,IAAI,aAAa,GAAG,EAAE,CAAA;QACtB,QAAQ,aAAa,EAAE;YACrB,KAAK,UAAU;gBACb,aAAa,GAAG,8CAA8C,CAAA;gBAC9D,MAAK;YACP,KAAK,QAAQ,CAAC;YACd;gBACE,aAAa,GAAG,6BAA6B,CAAA;SAChD;QAED,IAAI,EAAE,GAAG,YAAY;aAClB,SAAS,CAAC,mBAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;aAC9C,MAAM,CAAC;YACN,gBAAgB;YAChB,oBAAoB;YACpB,kCAAkC;YAClC,8BAA8B;YAC9B,2BAA2B;SAC5B,CAAC;aACD,QAAQ,CAAC,4BAA4B,EAAE;YACtC,MAAM,EAAE,IAAI,CAAC,EAAE;SAChB,CAAC,CAAA;QAEJ,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA;QAEjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACF,CAAA;AAlCC;IADC,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,uCAAiB,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACnE,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;wDAiC7C;AAnCU,kBAAkB;IAD9B,IAAA,uBAAQ,EAAC,mCAAa,CAAC;GACX,kBAAkB,CAoC9B;AApCY,gDAAkB","sourcesContent":["import { Args, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { Board } from '@things-factory/board-service'\nimport { config } from '@things-factory/env'\nimport { Favorite } from '@things-factory/fav-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nimport { BoardFavorite, BoardFavoriteList } from './board-favorite-type'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Resolver(BoardFavorite)\nexport class BoardFavoriteQuery {\n @Query(returns => BoardFavoriteList, { description: 'To fetch multiple BoardFavorites' })\n async favoriteBoards(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardFavoriteList> {\n const { user } = context.state\n\n const queryBuilder = getRepository(Board).createQueryBuilder()\n buildQuery(queryBuilder, params, context)\n\n var joinStatement = ''\n switch (DATABASE_TYPE) {\n case 'postgres':\n joinStatement = 'CAST(Board.id as VARCHAR) = Favorite.routing'\n break\n case 'sqlite':\n default:\n joinStatement = 'Board.id = Favorite.routing'\n }\n\n var qb = queryBuilder\n .innerJoin(Favorite, 'Favorite', joinStatement)\n .select([\n 'Board.id as id',\n 'Board.name as name',\n 'Board.description as description',\n 'Board.thumbnail as thumbnail',\n 'Favorite.id as favoriteId'\n ])\n .andWhere('Favorite.user_id = :userId', {\n userId: user.id\n })\n\n const items = await qb.getRawMany()\n const total = await qb.getCount()\n\n return { items, total }\n }\n}\n"]}
1
+ {"version":3,"file":"board-favorite-query.js","sourceRoot":"","sources":["../../../server/service/board-favorite/board-favorite-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAyD;AAEzD,iEAAqD;AACrD,6CAA4C;AAC5C,uDAAmD;AACnD,iDAA4E;AAE5E,+DAAwE;AAExE,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;AAGpC,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAE7B,KAAK,CAAC,cAAc,CAAS,MAAiB,EAAS,OAAwB;QAC7E,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE9B,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,qBAAK,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAC9D,IAAA,kBAAU,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEzC,IAAI,aAAa,GAAG,EAAE,CAAA;QACtB,QAAQ,aAAa,EAAE;YACrB,KAAK,UAAU;gBACb,aAAa,GAAG,8CAA8C,CAAA;gBAC9D,MAAK;YACP,KAAK,QAAQ,CAAC;YACd;gBACE,aAAa,GAAG,6BAA6B,CAAA;SAChD;QAED,IAAI,EAAE,GAAG,YAAY;aAClB,SAAS,CAAC,mBAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;aAC9C,MAAM,CAAC;YACN,gBAAgB;YAChB,oBAAoB;YACpB,kCAAkC;YAClC,8BAA8B;YAC9B,2BAA2B;SAC5B,CAAC;aACD,QAAQ,CAAC,yBAAyB,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,EAAE;SAChB,CAAC,CAAA;QAEJ,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA;QAEjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACF,CAAA;AAlCC;IADC,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,uCAAiB,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACnE,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;wDAiC7C;AAnCU,kBAAkB;IAD9B,IAAA,uBAAQ,EAAC,mCAAa,CAAC;GACX,kBAAkB,CAoC9B;AApCY,gDAAkB","sourcesContent":["import { Args, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { Board } from '@things-factory/board-service'\nimport { config } from '@things-factory/env'\nimport { Favorite } from '@things-factory/fav-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nimport { BoardFavorite, BoardFavoriteList } from './board-favorite-type'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Resolver(BoardFavorite)\nexport class BoardFavoriteQuery {\n @Query(returns => BoardFavoriteList, { description: 'To fetch multiple BoardFavorites' })\n async favoriteBoards(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardFavoriteList> {\n const { user } = context.state\n\n const queryBuilder = getRepository(Board).createQueryBuilder()\n buildQuery(queryBuilder, params, context)\n\n var joinStatement = ''\n switch (DATABASE_TYPE) {\n case 'postgres':\n joinStatement = 'CAST(Board.id as VARCHAR) = Favorite.routing'\n break\n case 'sqlite':\n default:\n joinStatement = 'Board.id = Favorite.routing'\n }\n\n var qb = queryBuilder\n .innerJoin(Favorite, 'Favorite', joinStatement)\n .select([\n 'Board.id as id',\n 'Board.name as name',\n 'Board.description as description',\n 'Board.thumbnail as thumbnail',\n 'Favorite.id as favoriteId'\n ])\n .andWhere('Favorite.user = :userId', {\n userId: user.id\n })\n\n const items = await qb.getRawMany()\n const total = await qb.getCount()\n\n return { items, total }\n }\n}\n"]}
@@ -34,7 +34,7 @@ let BoardResolver = class BoardResolver {
34
34
  }
35
35
  else {
36
36
  var domainSecret = await (0, shell_1.getRepository)(domain_secret_1.DomainSecret).findOne({
37
- where: { domain: domain }
37
+ where: { domain: { id: domain.id } }
38
38
  });
39
39
  // 2. if there's no domainSecret then create it
40
40
  if (!domainSecret) {
@@ -49,7 +49,7 @@ let BoardResolver = class BoardResolver {
49
49
  else {
50
50
  var domainRepo = (0, shell_1.getRepository)(domain_secret_1.DomainSecret);
51
51
  var domainSecret = await domainRepo.findOne({
52
- where: { domain: domain }
52
+ where: { domain: { id: domain.id } }
53
53
  });
54
54
  if (domainSecret) {
55
55
  var hash = (0, operato_license_checker_1.doSomething)({ secId: domainSecret.id, id: domain.id });
@@ -1 +1 @@
1
- {"version":3,"file":"board-resolver.js","sourceRoot":"","sources":["../../../server/service/board-secret/board-resolver.ts"],"names":[],"mappings":";;;;AAAA,+CAAwD;AAExD,iEAAqD;AACrD,qFAAiG;AACjG,iDAAqD;AAErD,8DAAyD;AACzD,kEAA6D;AAC7D,iDAA4C;AAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAGhC,IAAa,aAAa,GAA1B,MAAa,aAAa;IAExB,gBAAgB,CAAQ,OAAwB;QAC9C,OAAO,CAAC,IAAA,uCAAa,EAAC,6BAA6B,CAAC,IAAI,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3G,CAAC;IAGD,KAAK,CAAC,KAAK,CAAY,EAAU,EAAS,OAAwB;QAChE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,IAAI,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,qBAAK,CAAC,CAAC,OAAO,CAAC;YAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;SACzC,CAAC,CAAA;QACF,IAAI,MAAM,EAAE;YACV,sDAAsD;YACtD,IAAI,KAAK,GACP,CAAC,MAAM,IAAA,qBAAa,EAAC,4BAAY,CAAC;iBAC/B,OAAO,CAAC,kBAAkB,EAAE;iBAC5B,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,4BAAY,EAAE,QAAQ,CAAC;iBAC5B,KAAK,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBAChD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;YAEpB,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACvB,MAAM,IAAI,4BAAY,CAAC;oBACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,UAAU,CAAC;iBAC1D,CAAC,CAAA;aACH;iBAAM;gBACL,IAAI,YAAY,GAAiB,MAAM,IAAA,qBAAa,EAAC,4BAAY,CAAC,CAAC,OAAO,CAAC;oBACzE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;iBAC1B,CAAC,CAAA;gBACF,+CAA+C;gBAC/C,IAAI,CAAC,YAAY,EAAE;oBACjB,IAAI,YAAY,GAAiB,IAAI,4BAAY,EAAE,CAAA;oBACnD,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;oBACrC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAA;oBAC5B,IAAI,IAAI,GAAG,IAAA,qCAAW,EAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;oBACjE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAA;oBAE1B,MAAM,IAAA,qBAAa,EAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;oBACpD,2CAA2C;iBAC5C;qBAAM;oBACL,IAAI,UAAU,GAAG,IAAA,qBAAa,EAAC,4BAAY,CAAC,CAAA;oBAC5C,IAAI,YAAY,GAAiB,MAAM,UAAU,CAAC,OAAO,CAAC;wBACxD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;qBAC1B,CAAC,CAAA;oBACF,IAAI,YAAY,EAAE;wBAChB,IAAI,IAAI,GAAG,IAAA,qCAAW,EAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;wBACjE,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,EAAE;4BAChC,MAAM,IAAI,4BAAY,CAAC;gCACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,kBAAkB,CAAC;6BAClE,CAAC,CAAA;yBACH;qBACF;yBAAM;wBACL,MAAM,IAAI,4BAAY,CAAC;4BACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,kBAAkB,CAAC;yBAClE,CAAC,CAAA;qBACH;iBACF;aACF;SACF;QACD,IAAI,KAAK,EAAE;YACT,qDAAqD;YACrD,IAAI,KAAK,GACP,CAAC,MAAM,IAAA,qBAAa,EAAC,0BAAW,CAAC;iBAC9B,OAAO,CAAC,kBAAkB,EAAE;iBAC5B,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,0BAAW,EAAE,QAAQ,CAAC;iBAC3B,KAAK,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBACvD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;YAEpB,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACvB,MAAM,IAAI,4BAAY,CAAC;oBACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,UAAU,CAAC;iBAC1D,CAAC,CAAA;aACH;iBAAM;gBACL,IAAI,WAAW,GAAgB,MAAM,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAC,OAAO,CAAC;oBACtE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;iBACxB,CAAC,CAAA;gBACF,8CAA8C;gBAC9C,IAAI,CAAC,WAAW,EAAE;oBAChB,IAAI,WAAW,GAAgB,IAAI,0BAAW,EAAE,CAAA;oBAChD,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;oBACpC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAA;oBACzB,WAAW,CAAC,UAAU,GAAG,OAAO,CAAA;oBAChC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAA;oBAE3B,IAAI,IAAI,GAAG,IAAA,qCAAW,EAAC,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;oBACzD,WAAW,CAAC,MAAM,GAAG,IAAI,CAAA;oBAEzB,MAAM,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAClD,0CAA0C;iBAC3C;qBAAM;oBACL,IAAI,UAAU,GAAG,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAA;oBAC3C,IAAI,WAAW,GAAgB,MAAM,UAAU,CAAC,OAAO,CAAC;wBACtD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;qBACxB,CAAC,CAAA;oBACF,IAAI,WAAW,EAAE;wBACf,IAAI,IAAI,GAAG,IAAA,qCAAW,EAAC,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;wBACzD,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE;4BAC/B,MAAM,IAAI,4BAAY,CAAC;gCACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,kBAAkB,CAAC;6BAClE,CAAC,CAAA;yBACH;qBACF;yBAAM;wBACL,MAAM,IAAI,4BAAY,CAAC;4BACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,kBAAkB,CAAC;yBAClE,CAAC,CAAA;qBACH;iBACF;aACF;SACF;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AAjHC;IADC,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACrD,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;qDAEtB;AAGD;IADC,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,qBAAK,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAChD,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;0CA2GxC;AAlHU,aAAa;IADzB,IAAA,uBAAQ,EAAC,qBAAK,CAAC;GACH,aAAa,CAmHzB;AAnHY,sCAAa","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { Board } from '@things-factory/board-service'\nimport { checkTarget, doSomething, getPermission } from '@things-factory/operato-license-checker'\nimport { getRepository } from '@things-factory/shell'\n\nimport { LicenseError } from '../../errors/license-error'\nimport { DomainSecret } from '../domain-secret/domain-secret'\nimport { BoardSecret } from './board-secret'\n\nconst crypto = require('crypto')\n\n@Resolver(Board)\nexport class BoardResolver {\n @Query(returns => [String], { description: 'Board Usage Permissions' })\n boardPermissions(@Ctx() context: ResolverContext): string[] {\n return (getPermission('Permissions For Board Usage') || 'Modeller, Viewer').split(',').map(p => p.trim())\n }\n\n @Query(returns => Board, { description: 'To fetch a board' })\n async board(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n var board = await getRepository(Board).findOne({\n where: { domain: { id: domain.id }, id }\n })\n if (domain) {\n // 1. check domainSecret is over limit quantity or not\n var count =\n (await getRepository(DomainSecret)\n .manager.createQueryBuilder()\n .select('board')\n .from(DomainSecret, 'secret')\n .where('id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n } else {\n var domainSecret: DomainSecret = await getRepository(DomainSecret).findOne({\n where: { domain: domain }\n })\n // 2. if there's no domainSecret then create it\n if (!domainSecret) {\n var domainSecret: DomainSecret = new DomainSecret()\n domainSecret.id = crypto.randomUUID()\n domainSecret.domain = domain\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n domainSecret.secret = hash\n\n await getRepository(DomainSecret).save(domainSecret)\n // 3. if there's domainSecret then check it\n } else {\n var domainRepo = getRepository(DomainSecret)\n var domainSecret: DomainSecret = await domainRepo.findOne({\n where: { domain: domain }\n })\n if (domainSecret) {\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n if (domainSecret.secret !== hash) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n } else {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n }\n }\n }\n if (board) {\n // 1. check boardSecret is over limit quantity or not\n var count =\n (await getRepository(BoardSecret)\n .manager.createQueryBuilder()\n .select('board')\n .from(BoardSecret, 'secret')\n .where('domain_id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n } else {\n var boardSecret: BoardSecret = await getRepository(BoardSecret).findOne({\n where: { targetId: id }\n })\n // 2. if there's no boardSecret then create it\n if (!boardSecret) {\n var boardSecret: BoardSecret = new BoardSecret()\n boardSecret.id = crypto.randomUUID()\n boardSecret.targetId = id\n boardSecret.targetType = 'board'\n boardSecret.domain = domain\n\n var hash = doSomething({ secId: boardSecret.id, id: id })\n boardSecret.secret = hash\n\n await getRepository(BoardSecret).save(boardSecret)\n // 3. if there's boardSecret then check it\n } else {\n var repogitory = getRepository(BoardSecret)\n var boardSecret: BoardSecret = await repogitory.findOne({\n where: { targetId: id }\n })\n if (boardSecret) {\n var hash = doSomething({ secId: boardSecret.id, id: id })\n if (boardSecret.secret !== hash) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n } else {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n }\n }\n }\n\n return board\n }\n}\n"]}
1
+ {"version":3,"file":"board-resolver.js","sourceRoot":"","sources":["../../../server/service/board-secret/board-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { Board } from '@things-factory/board-service'\nimport { checkTarget, doSomething, getPermission } from '@things-factory/operato-license-checker'\nimport { getRepository } from '@things-factory/shell'\n\nimport { LicenseError } from '../../errors/license-error'\nimport { DomainSecret } from '../domain-secret/domain-secret'\nimport { BoardSecret } from './board-secret'\n\nconst crypto = require('crypto')\n\n@Resolver(Board)\nexport class BoardResolver {\n @Query(returns => [String], { description: 'Board Usage Permissions' })\n boardPermissions(@Ctx() context: ResolverContext): string[] {\n return (getPermission('Permissions For Board Usage') || 'Modeller, Viewer').split(',').map(p => p.trim())\n }\n\n @Query(returns => Board, { description: 'To fetch a board' })\n async board(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n var board = await getRepository(Board).findOne({\n where: { domain: { id: domain.id }, id }\n })\n if (domain) {\n // 1. check domainSecret is over limit quantity or not\n var count =\n (await getRepository(DomainSecret)\n .manager.createQueryBuilder()\n .select('board')\n .from(DomainSecret, 'secret')\n .where('id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n } else {\n var domainSecret: DomainSecret = await getRepository(DomainSecret).findOne({\n where: { domain: { id: domain.id } }\n })\n // 2. if there's no domainSecret then create it\n if (!domainSecret) {\n var domainSecret: DomainSecret = new DomainSecret()\n domainSecret.id = crypto.randomUUID()\n domainSecret.domain = domain\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n domainSecret.secret = hash\n\n await getRepository(DomainSecret).save(domainSecret)\n // 3. if there's domainSecret then check it\n } else {\n var domainRepo = getRepository(DomainSecret)\n var domainSecret: DomainSecret = await domainRepo.findOne({\n where: { domain: { id: domain.id } }\n })\n if (domainSecret) {\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n if (domainSecret.secret !== hash) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n } else {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n }\n }\n }\n if (board) {\n // 1. check boardSecret is over limit quantity or not\n var count =\n (await getRepository(BoardSecret)\n .manager.createQueryBuilder()\n .select('board')\n .from(BoardSecret, 'secret')\n .where('domain_id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n } else {\n var boardSecret: BoardSecret = await getRepository(BoardSecret).findOne({\n where: { targetId: id }\n })\n // 2. if there's no boardSecret then create it\n if (!boardSecret) {\n var boardSecret: BoardSecret = new BoardSecret()\n boardSecret.id = crypto.randomUUID()\n boardSecret.targetId = id\n boardSecret.targetType = 'board'\n boardSecret.domain = domain\n\n var hash = doSomething({ secId: boardSecret.id, id: id })\n boardSecret.secret = hash\n\n await getRepository(BoardSecret).save(boardSecret)\n // 3. if there's boardSecret then check it\n } else {\n var repogitory = getRepository(BoardSecret)\n var boardSecret: BoardSecret = await repogitory.findOne({\n where: { targetId: id }\n })\n if (boardSecret) {\n var hash = doSomething({ secId: boardSecret.id, id: id })\n if (boardSecret.secret !== hash) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n } else {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n }\n }\n }\n\n return board\n }\n}\n"]}