@things-factory/board-service 6.2.81 → 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/dist-server/controllers/headless-model.js +29 -14
- package/dist-server/controllers/headless-model.js.map +1 -1
- package/dist-server/controllers/headless-playlist.js +18 -1
- package/dist-server/controllers/headless-playlist.js.map +1 -1
- package/dist-server/service/group/group.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/server/controllers/headless-model.ts +31 -12
- package/server/controllers/headless-playlist.ts +21 -1
- package/server/service/group/group.ts +1 -0
|
@@ -4,7 +4,8 @@ exports.headlessModel = void 0;
|
|
|
4
4
|
const typeorm_1 = require("typeorm");
|
|
5
5
|
const shell_1 = require("@things-factory/shell");
|
|
6
6
|
const board_1 = require("../service/board/board");
|
|
7
|
-
const
|
|
7
|
+
const board_history_1 = require("../service/board/board-history");
|
|
8
|
+
const headlessModel = async (target, devmode = false) => {
|
|
8
9
|
var { domain, id, model, name } = target || {};
|
|
9
10
|
if (model) {
|
|
10
11
|
if (typeof model == 'string') {
|
|
@@ -14,20 +15,34 @@ const headlessModel = async (target) => {
|
|
|
14
15
|
throw 'model should be a string or object';
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
|
-
else if (id) {
|
|
18
|
-
var board = await (0, shell_1.getRepository)(board_1.Board).findOne({
|
|
19
|
-
where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id }
|
|
20
|
-
});
|
|
21
|
-
model = JSON.parse(board.model);
|
|
22
|
-
}
|
|
23
|
-
else if (name) {
|
|
24
|
-
var board = await (0, shell_1.getRepository)(board_1.Board).findOne({
|
|
25
|
-
where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, name }
|
|
26
|
-
});
|
|
27
|
-
model = JSON.parse(board.model);
|
|
28
|
-
}
|
|
29
18
|
else {
|
|
30
|
-
|
|
19
|
+
if (id) {
|
|
20
|
+
var board = await (0, shell_1.getRepository)(board_1.Board).findOne({
|
|
21
|
+
where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else if (name) {
|
|
25
|
+
var board = await (0, shell_1.getRepository)(board_1.Board).findOne({
|
|
26
|
+
where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, name }
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw 'parameter model or id mandatory';
|
|
31
|
+
}
|
|
32
|
+
if (!devmode && board) {
|
|
33
|
+
const latestReleased = board.state == 'released'
|
|
34
|
+
? board
|
|
35
|
+
: await (0, shell_1.getRepository)(board_history_1.BoardHistory)
|
|
36
|
+
.createQueryBuilder('history')
|
|
37
|
+
.where('history.originalId = :originalId', { originalId: board.id })
|
|
38
|
+
.orderBy('history.version', 'DESC')
|
|
39
|
+
.limit(1)
|
|
40
|
+
.getOne();
|
|
41
|
+
if (latestReleased) {
|
|
42
|
+
model = latestReleased.model;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
model = JSON.parse(board.model);
|
|
31
46
|
}
|
|
32
47
|
return {
|
|
33
48
|
base: (0, shell_1.getContextPath)(domain === null || domain === void 0 ? void 0 : domain.subdomain) + (domain ? '/' : ''),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless-model.js","sourceRoot":"","sources":["../../server/controllers/headless-model.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAC5B,iDAAqE;AAErE,kDAA8C;
|
|
1
|
+
{"version":3,"file":"headless-model.js","sourceRoot":"","sources":["../../server/controllers/headless-model.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAC5B,iDAAqE;AAErE,kDAA8C;AAC9C,kEAA6D;AAEtD,MAAM,aAAa,GAAG,KAAK,EAAE,MAAM,EAAE,UAAmB,KAAK,EAAE,EAAE;IACtE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAE9C,IAAI,KAAK,EAAE;QACT,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YAC5B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SAC1B;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,MAAM,oCAAoC,CAAA;SAC3C;KACF;SAAM;QACL,IAAI,EAAE,EAAE;YACN,IAAI,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,OAAO,CAAC;gBAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;aAChF,CAAC,CAAA;SACH;aAAM,IAAI,IAAI,EAAE;YACf,IAAI,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,OAAO,CAAC;gBAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE;aAClF,CAAC,CAAA;SACH;aAAM;YACL,MAAM,iCAAiC,CAAA;SACxC;QAED,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE;YACrB,MAAM,cAAc,GAClB,KAAK,CAAC,KAAK,IAAI,UAAU;gBACvB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,MAAM,IAAA,qBAAa,EAAC,4BAAY,CAAC;qBAC9B,kBAAkB,CAAC,SAAS,CAAC;qBAC7B,KAAK,CAAC,kCAAkC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;qBACnE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;qBAClC,KAAK,CAAC,CAAC,CAAC;qBACR,MAAM,EAAE,CAAA;YAEjB,IAAI,cAAc,EAAE;gBAClB,KAAK,GAAG,cAAc,CAAC,KAAK,CAAA;aAC7B;SACF;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;KAChC;IAED,OAAO;QACL,IAAI,EAAE,IAAA,sBAAc,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,KAAK;QACL,KAAK;KACN,CAAA;AACH,CAAC,CAAA;AA9CY,QAAA,aAAa,iBA8CzB","sourcesContent":["import { In } from 'typeorm'\nimport { getContextPath, getRepository } from '@things-factory/shell'\n\nimport { Board } from '../service/board/board'\nimport { BoardHistory } from '../service/board/board-history'\n\nexport const headlessModel = async (target, devmode: boolean = false) => {\n var { domain, id, model, name } = target || {}\n\n if (model) {\n if (typeof model == 'string') {\n model = JSON.parse(model)\n } else if (typeof model !== 'object') {\n throw 'model should be a string or object'\n }\n } else {\n if (id) {\n var board = await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }\n })\n } else if (name) {\n var board = await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }\n })\n } else {\n throw 'parameter model or id mandatory'\n }\n\n if (!devmode && board) {\n const latestReleased =\n board.state == 'released'\n ? board\n : await getRepository(BoardHistory)\n .createQueryBuilder('history')\n .where('history.originalId = :originalId', { originalId: board.id })\n .orderBy('history.version', 'DESC')\n .limit(1)\n .getOne()\n\n if (latestReleased) {\n model = latestReleased.model\n }\n }\n\n model = JSON.parse(board.model)\n }\n\n return {\n base: getContextPath(domain?.subdomain) + (domain ? '/' : ''),\n model,\n board\n }\n}\n"]}
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.headlessPlaylist = void 0;
|
|
4
4
|
const shell_1 = require("@things-factory/shell");
|
|
5
5
|
const play_group_1 = require("../service/play-group/play-group");
|
|
6
|
-
const
|
|
6
|
+
const board_history_1 = require("../service/board/board-history");
|
|
7
|
+
const headlessPlaylist = async (target, devmode = false) => {
|
|
7
8
|
var { domain, id, name } = target || {};
|
|
8
9
|
if (id || name) {
|
|
9
10
|
const repository = (0, shell_1.getRepository)(play_group_1.PlayGroup);
|
|
@@ -19,6 +20,22 @@ const headlessPlaylist = async (target) => {
|
|
|
19
20
|
relations: ['boards']
|
|
20
21
|
});
|
|
21
22
|
}
|
|
23
|
+
if (!devmode && playGroup) {
|
|
24
|
+
const { boards } = playGroup;
|
|
25
|
+
for (let board of boards) {
|
|
26
|
+
const latestReleased = board.state == 'released'
|
|
27
|
+
? board
|
|
28
|
+
: await (0, shell_1.getRepository)(board_history_1.BoardHistory)
|
|
29
|
+
.createQueryBuilder('history')
|
|
30
|
+
.where('history.originalId = :originalId', { originalId: board.id })
|
|
31
|
+
.orderBy('history.version', 'DESC')
|
|
32
|
+
.limit(1)
|
|
33
|
+
.getOne();
|
|
34
|
+
if (latestReleased) {
|
|
35
|
+
board.model = latestReleased.model;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
22
39
|
playGroup.boards = playGroup.boards.sort((a, b) => {
|
|
23
40
|
// 배열 A에 포함된 아이디의 순서를 가져옵니다.
|
|
24
41
|
const indexOfOrder = (playGroup.order || []).indexOf(a.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless-playlist.js","sourceRoot":"","sources":["../../server/controllers/headless-playlist.ts"],"names":[],"mappings":";;;AAAA,iDAAqE;AAErE,iEAA4D;
|
|
1
|
+
{"version":3,"file":"headless-playlist.js","sourceRoot":"","sources":["../../server/controllers/headless-playlist.ts"],"names":[],"mappings":"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","sourcesContent":["import { getContextPath, getRepository } from '@things-factory/shell'\n\nimport { PlayGroup } from '../service/play-group/play-group'\nimport { BoardHistory } from '../service/board/board-history'\n\nexport const headlessPlaylist = async (target, devmode: boolean = false) => {\n var { domain, id, name } = target || {}\n\n if (id || name) {\n const repository = getRepository(PlayGroup)\n\n if (id) {\n var playGroup = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['boards']\n })\n } else if (name) {\n var playGroup = await repository.findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['boards']\n })\n }\n\n if (!devmode && playGroup) {\n const { boards } = playGroup\n for (let board of boards) {\n const latestReleased =\n board.state == 'released'\n ? board\n : await getRepository(BoardHistory)\n .createQueryBuilder('history')\n .where('history.originalId = :originalId', { originalId: board.id })\n .orderBy('history.version', 'DESC')\n .limit(1)\n .getOne()\n\n if (latestReleased) {\n board.model = latestReleased.model\n }\n }\n }\n\n playGroup.boards = playGroup.boards.sort((a, b) => {\n // 배열 A에 포함된 아이디의 순서를 가져옵니다.\n const indexOfOrder = (playGroup.order || []).indexOf(a.id)\n const indexOfBoards = (playGroup.order || []).indexOf(b.id)\n\n // 두 아이디의 순서를 비교하여 정렬합니다.\n if (indexOfOrder === -1 && indexOfBoards === -1) {\n // 두 아이디 모두 배열 A에 없는 경우, 그대로 유지합니다.\n return 0\n } else if (indexOfOrder === -1) {\n // 아이디 A만 배열 A에 없는 경우, 아이디 B를 먼저 정렬합니다.\n return 1\n } else if (indexOfBoards === -1) {\n // 아이디 B만 배열 A에 없는 경우, 아이디 A를 먼저 정렬합니다.\n return -1\n } else {\n // 두 아이디 모두 배열 A에 있는 경우, 배열 A의 아이디 순서대로 정렬합니다.\n return indexOfOrder - indexOfBoards\n }\n })\n } else {\n throw 'parameter id or name mandatory'\n }\n\n return {\n base: getContextPath(domain?.subdomain) + (domain ? '/' : ''),\n playGroup\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../server/service/group/group.ts"],"names":[],"mappings":";;;;AAAA,qCAUgB;AAChB,+CAA2E;AAE3E,iDAA8C;AAC9C,yDAAgD;AAChD,0CAAsC;
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../server/service/group/group.ts"],"names":[],"mappings":";;;;AAAA,qCAUgB;AAChB,+CAA2E;AAE3E,iDAA8C;AAC9C,yDAAgD;AAChD,0CAAsC;AAM/B,IAAM,KAAK,GAAX,MAAM,KAAK;CA+CjB,CAAA;AA9CC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;iCACC;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACjC,cAAM;qCAAA;AAEf;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;;uCAC1B;AAEjB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;mCACI;AAEZ;IAAC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACN;AAEpB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,aAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCAC5B;AAEf;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;wCAAA;AAEhB;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;wCAAA;AAEhB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;sCAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;wCAC1B;AAElB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;sCAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;wCAC1B;AA9CP,KAAK;IAHjB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,YAAY,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnF,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;GACpD,KAAK,CA+CjB;AA/CY,sBAAK","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Board } from '../board/board'\nimport { BoardHistory } from '../board/board-history'\n\n@Entity()\n@Index('ix_group_0', (group: Group) => [group.domain, group.name], { unique: true })\n@ObjectType({ description: 'Entity for Board Management Group' })\nexport class Group {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((group: Group) => group.domain)\n domainId?: string\n\n @Column()\n @Field()\n name: string\n\n @Column({\n nullable: true\n })\n @Field({ nullable: true })\n description?: string\n\n @OneToMany(type => Board, board => board.group)\n @Field(type => [Board], { nullable: true })\n boards: Board[]\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(type => User, { nullable: true })\n creator?: User\n\n @RelationId((group: Group) => group.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((group: Group) => group.updater)\n updaterId?: string\n}\n"]}
|