@things-factory/board-service 6.2.82 → 6.2.84

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/board-service",
3
- "version": "6.2.82",
3
+ "version": "6.2.84",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,11 +24,11 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/auth-base": "^6.2.82",
27
+ "@things-factory/auth-base": "^6.2.84",
28
28
  "@things-factory/env": "^6.2.33",
29
- "@things-factory/fav-base": "^6.2.82",
30
- "@things-factory/font-base": "^6.2.82",
31
- "@things-factory/integration-base": "^6.2.82",
29
+ "@things-factory/fav-base": "^6.2.84",
30
+ "@things-factory/font-base": "^6.2.84",
31
+ "@things-factory/integration-base": "^6.2.84",
32
32
  "@things-factory/operato-license-checker": "^4.0.4",
33
33
  "content-disposition": "^0.5.3",
34
34
  "generic-pool": "^3.8.2"
@@ -37,5 +37,5 @@
37
37
  "@thiagoelg/node-printer": "0.6.2",
38
38
  "puppeteer": "^20.7.3"
39
39
  },
40
- "gitHead": "bc2048e76dd3ce68869735bac51290a9e3421252"
40
+ "gitHead": "3c272e989acc14bbd02f4ec79624dfd7dc4e6acd"
41
41
  }
@@ -2,8 +2,9 @@ import { In } from 'typeorm'
2
2
  import { getContextPath, getRepository } from '@things-factory/shell'
3
3
 
4
4
  import { Board } from '../service/board/board'
5
+ import { BoardHistory } from '../service/board/board-history'
5
6
 
6
- export const headlessModel = async target => {
7
+ export const headlessModel = async (target, devmode: boolean = false) => {
7
8
  var { domain, id, model, name } = target || {}
8
9
 
9
10
  if (model) {
@@ -12,18 +13,36 @@ export const headlessModel = async target => {
12
13
  } else if (typeof model !== 'object') {
13
14
  throw 'model should be a string or object'
14
15
  }
15
- } else if (id) {
16
- var board = await getRepository(Board).findOne({
17
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }
18
- })
19
- model = JSON.parse(board.model)
20
- } else if (name) {
21
- var board = await getRepository(Board).findOne({
22
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }
23
- })
24
- model = JSON.parse(board.model)
25
16
  } else {
26
- throw 'parameter model or id mandatory'
17
+ if (id) {
18
+ var board = await getRepository(Board).findOne({
19
+ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }
20
+ })
21
+ } else if (name) {
22
+ var board = await getRepository(Board).findOne({
23
+ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }
24
+ })
25
+ } else {
26
+ throw 'parameter model or id mandatory'
27
+ }
28
+
29
+ if (!devmode && board) {
30
+ const latestReleased =
31
+ board.state == 'released'
32
+ ? board
33
+ : await getRepository(BoardHistory)
34
+ .createQueryBuilder('history')
35
+ .where('history.originalId = :originalId', { originalId: board.id })
36
+ .orderBy('history.version', 'DESC')
37
+ .limit(1)
38
+ .getOne()
39
+
40
+ if (latestReleased) {
41
+ model = latestReleased.model
42
+ }
43
+ }
44
+
45
+ model = JSON.parse(board.model)
27
46
  }
28
47
 
29
48
  return {
@@ -1,8 +1,9 @@
1
1
  import { getContextPath, getRepository } from '@things-factory/shell'
2
2
 
3
3
  import { PlayGroup } from '../service/play-group/play-group'
4
+ import { BoardHistory } from '../service/board/board-history'
4
5
 
5
- export const headlessPlaylist = async target => {
6
+ export const headlessPlaylist = async (target, devmode: boolean = false) => {
6
7
  var { domain, id, name } = target || {}
7
8
 
8
9
  if (id || name) {
@@ -20,6 +21,25 @@ export const headlessPlaylist = async target => {
20
21
  })
21
22
  }
22
23
 
24
+ if (!devmode && playGroup) {
25
+ const { boards } = playGroup
26
+ for (let board of boards) {
27
+ const latestReleased =
28
+ board.state == 'released'
29
+ ? board
30
+ : await getRepository(BoardHistory)
31
+ .createQueryBuilder('history')
32
+ .where('history.originalId = :originalId', { originalId: board.id })
33
+ .orderBy('history.version', 'DESC')
34
+ .limit(1)
35
+ .getOne()
36
+
37
+ if (latestReleased) {
38
+ board.model = latestReleased.model
39
+ }
40
+ }
41
+ }
42
+
23
43
  playGroup.boards = playGroup.boards.sort((a, b) => {
24
44
  // 배열 A에 포함된 아이디의 순서를 가져옵니다.
25
45
  const indexOfOrder = (playGroup.order || []).indexOf(a.id)
@@ -14,6 +14,7 @@ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
14
14
  import { Domain } from '@things-factory/shell'
15
15
  import { User } from '@things-factory/auth-base'
16
16
  import { Board } from '../board/board'
17
+ import { BoardHistory } from '../board/board-history'
17
18
 
18
19
  @Entity()
19
20
  @Index('ix_group_0', (group: Group) => [group.domain, group.name], { unique: true })