@things-factory/board-service 6.1.113 → 6.1.115
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/service/board/board-history.js +138 -0
- package/dist-server/service/board/board-history.js.map +1 -0
- package/dist-server/service/board/board-mutation.js +21 -16
- package/dist-server/service/board/board-mutation.js.map +1 -1
- package/dist-server/service/board/board-type.js.map +1 -1
- package/dist-server/service/board/board.js +18 -4
- package/dist-server/service/board/board.js.map +1 -1
- package/dist-server/service/board/event-subscriber.js +21 -7
- package/dist-server/service/board/event-subscriber.js.map +1 -1
- package/dist-server/service/board/index.js +3 -2
- package/dist-server/service/board/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/server/service/board/board-history.ts +120 -0
- package/server/service/board/board-mutation.ts +27 -20
- package/server/service/board/board-type.ts +1 -1
- package/server/service/board/board.ts +18 -6
- package/server/service/board/event-subscriber.ts +19 -6
- package/server/service/board/index.ts +4 -3
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BoardHistory = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const typeorm_1 = require("typeorm");
|
|
7
|
+
const typeorm_history_1 = require("@operato/typeorm-history");
|
|
8
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
|
+
const shell_1 = require("@things-factory/shell");
|
|
10
|
+
const env_1 = require("@things-factory/env");
|
|
11
|
+
const group_1 = require("../group/group");
|
|
12
|
+
const ORMCONFIG = env_1.config.get('ormconfig', {});
|
|
13
|
+
const DATABASE_TYPE = ORMCONFIG.type;
|
|
14
|
+
let BoardHistory = class BoardHistory {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.version = 1;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
tslib_1.__decorate([
|
|
20
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
21
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.ID),
|
|
22
|
+
tslib_1.__metadata("design:type", String)
|
|
23
|
+
], BoardHistory.prototype, "id", void 0);
|
|
24
|
+
tslib_1.__decorate([
|
|
25
|
+
(0, typeorm_1.Column)({ nullable: true, default: 1 }),
|
|
26
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
27
|
+
tslib_1.__metadata("design:type", Number)
|
|
28
|
+
], BoardHistory.prototype, "version", void 0);
|
|
29
|
+
tslib_1.__decorate([
|
|
30
|
+
(0, typeorm_1.ManyToOne)(type => shell_1.Domain),
|
|
31
|
+
(0, type_graphql_1.Field)(type => shell_1.Domain, { nullable: true }),
|
|
32
|
+
tslib_1.__metadata("design:type", shell_1.Domain)
|
|
33
|
+
], BoardHistory.prototype, "domain", void 0);
|
|
34
|
+
tslib_1.__decorate([
|
|
35
|
+
(0, typeorm_1.RelationId)((board) => board.domain),
|
|
36
|
+
tslib_1.__metadata("design:type", String)
|
|
37
|
+
], BoardHistory.prototype, "domainId", void 0);
|
|
38
|
+
tslib_1.__decorate([
|
|
39
|
+
(0, typeorm_1.Column)(),
|
|
40
|
+
(0, type_graphql_1.Field)(),
|
|
41
|
+
tslib_1.__metadata("design:type", String)
|
|
42
|
+
], BoardHistory.prototype, "name", void 0);
|
|
43
|
+
tslib_1.__decorate([
|
|
44
|
+
(0, typeorm_1.Column)({ nullable: true }),
|
|
45
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
46
|
+
tslib_1.__metadata("design:type", String)
|
|
47
|
+
], BoardHistory.prototype, "description", void 0);
|
|
48
|
+
tslib_1.__decorate([
|
|
49
|
+
(0, typeorm_1.Column)({
|
|
50
|
+
nullable: true,
|
|
51
|
+
type: DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
52
|
+
? 'longtext'
|
|
53
|
+
: DATABASE_TYPE == 'oracle'
|
|
54
|
+
? 'clob'
|
|
55
|
+
: 'varchar'
|
|
56
|
+
}),
|
|
57
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
58
|
+
tslib_1.__metadata("design:type", String)
|
|
59
|
+
], BoardHistory.prototype, "model", void 0);
|
|
60
|
+
tslib_1.__decorate([
|
|
61
|
+
(0, typeorm_1.Column)({
|
|
62
|
+
nullable: true,
|
|
63
|
+
type: DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
64
|
+
? 'longtext'
|
|
65
|
+
: DATABASE_TYPE == 'oracle'
|
|
66
|
+
? 'clob'
|
|
67
|
+
: 'varchar'
|
|
68
|
+
}),
|
|
69
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
70
|
+
tslib_1.__metadata("design:type", String)
|
|
71
|
+
], BoardHistory.prototype, "thumbnail", void 0);
|
|
72
|
+
tslib_1.__decorate([
|
|
73
|
+
(0, typeorm_1.ManyToOne)(type => group_1.Group, group => group.boards),
|
|
74
|
+
(0, type_graphql_1.Field)(type => group_1.Group, { nullable: true }),
|
|
75
|
+
tslib_1.__metadata("design:type", group_1.Group)
|
|
76
|
+
], BoardHistory.prototype, "group", void 0);
|
|
77
|
+
tslib_1.__decorate([
|
|
78
|
+
(0, typeorm_1.RelationId)((board) => board.group),
|
|
79
|
+
tslib_1.__metadata("design:type", String)
|
|
80
|
+
], BoardHistory.prototype, "groupId", void 0);
|
|
81
|
+
tslib_1.__decorate([
|
|
82
|
+
(0, typeorm_1.Column)({ nullable: true }),
|
|
83
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
84
|
+
tslib_1.__metadata("design:type", Date)
|
|
85
|
+
], BoardHistory.prototype, "createdAt", void 0);
|
|
86
|
+
tslib_1.__decorate([
|
|
87
|
+
(0, typeorm_1.Column)({ nullable: true }),
|
|
88
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
89
|
+
tslib_1.__metadata("design:type", Date)
|
|
90
|
+
], BoardHistory.prototype, "updatedAt", void 0);
|
|
91
|
+
tslib_1.__decorate([
|
|
92
|
+
(0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
|
|
93
|
+
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
|
|
94
|
+
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
95
|
+
], BoardHistory.prototype, "creator", void 0);
|
|
96
|
+
tslib_1.__decorate([
|
|
97
|
+
(0, typeorm_1.RelationId)((board) => board.creator),
|
|
98
|
+
tslib_1.__metadata("design:type", String)
|
|
99
|
+
], BoardHistory.prototype, "creatorId", void 0);
|
|
100
|
+
tslib_1.__decorate([
|
|
101
|
+
(0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
|
|
102
|
+
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
|
|
103
|
+
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
104
|
+
], BoardHistory.prototype, "updater", void 0);
|
|
105
|
+
tslib_1.__decorate([
|
|
106
|
+
(0, typeorm_1.RelationId)((board) => board.updater),
|
|
107
|
+
tslib_1.__metadata("design:type", String)
|
|
108
|
+
], BoardHistory.prototype, "updaterId", void 0);
|
|
109
|
+
tslib_1.__decorate([
|
|
110
|
+
(0, typeorm_1.Column)({ nullable: true }),
|
|
111
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
112
|
+
tslib_1.__metadata("design:type", Date)
|
|
113
|
+
], BoardHistory.prototype, "deletedAt", void 0);
|
|
114
|
+
tslib_1.__decorate([
|
|
115
|
+
(0, typeorm_history_1.HistoryOriginalIdColumn)(),
|
|
116
|
+
tslib_1.__metadata("design:type", String)
|
|
117
|
+
], BoardHistory.prototype, "originalId", void 0);
|
|
118
|
+
tslib_1.__decorate([
|
|
119
|
+
(0, typeorm_history_1.HistoryActionColumn)({
|
|
120
|
+
nullable: false,
|
|
121
|
+
type: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
122
|
+
? 'enum'
|
|
123
|
+
: DATABASE_TYPE == 'oracle'
|
|
124
|
+
? 'varchar2'
|
|
125
|
+
: 'smallint',
|
|
126
|
+
enum: typeorm_history_1.HistoryActionType
|
|
127
|
+
}),
|
|
128
|
+
tslib_1.__metadata("design:type", String)
|
|
129
|
+
], BoardHistory.prototype, "action", void 0);
|
|
130
|
+
BoardHistory = tslib_1.__decorate([
|
|
131
|
+
(0, typeorm_1.Entity)(),
|
|
132
|
+
(0, typeorm_1.Index)('ix_board_history_0', (boardHistory) => [boardHistory.originalId, boardHistory.version], {
|
|
133
|
+
unique: true
|
|
134
|
+
}),
|
|
135
|
+
(0, type_graphql_1.ObjectType)({ description: 'History Entity of Board' })
|
|
136
|
+
], BoardHistory);
|
|
137
|
+
exports.BoardHistory = BoardHistory;
|
|
138
|
+
//# sourceMappingURL=board-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-history.js","sourceRoot":"","sources":["../../../server/service/board/board-history.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType } from 'type-graphql'\nimport { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\nimport { config } from '@things-factory/env'\n\nimport { Board } from './board'\nimport { Group } from '../group/group'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Entity()\n@Index('ix_board_history_0', (boardHistory: BoardHistory) => [boardHistory.originalId, boardHistory.version], {\n unique: true\n})\n@ObjectType({ description: 'History Entity of Board' })\nexport class BoardHistory implements HistoryEntityInterface<Board> {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @Column({ nullable: true, default: 1 })\n @Field({ nullable: true })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((board: Board) => board.domain)\n domainId?: string\n\n @Column()\n @Field()\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n model?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n thumbnail?: string\n\n @ManyToOne(type => Group, group => group.boards)\n @Field(type => Group, { nullable: true })\n group?: Group\n\n @RelationId((board: Board) => board.group)\n groupId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n createdAt?: Date\n\n @Column({ nullable: true })\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((board: Board) => board.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((board: Board) => board.updater)\n updaterId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n deletedAt?: Date\n\n @HistoryOriginalIdColumn()\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : 'smallint',\n enum: HistoryActionType\n })\n public action!: HistoryActionType\n}\n"]}
|
|
@@ -55,17 +55,18 @@ let BoardMutation = class BoardMutation {
|
|
|
55
55
|
if (!patch.name || patch.name == board.name) {
|
|
56
56
|
throw t('error.name must be unique from the original board', { name: patch.name });
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
const { groupId } = patch, patched = tslib_1.__rest(patch, ["groupId"]);
|
|
59
|
+
if (groupId !== undefined) {
|
|
59
60
|
const groupRepository = tx.getRepository(group_1.Group);
|
|
60
|
-
board.group =
|
|
61
|
-
(await groupRepository.findOneBy({
|
|
61
|
+
board.group = groupId
|
|
62
|
+
? (await groupRepository.findOneBy({
|
|
62
63
|
domain: { id: domain.id },
|
|
63
|
-
id:
|
|
64
|
-
})) || null
|
|
65
|
-
|
|
64
|
+
id: groupId
|
|
65
|
+
})) || null
|
|
66
|
+
: null;
|
|
66
67
|
}
|
|
67
68
|
const { id: excluded } = board, clone = tslib_1.__rest(board, ["id"]);
|
|
68
|
-
const cloned = await repository.save(Object.assign(Object.assign(Object.assign({ domain }, clone),
|
|
69
|
+
const cloned = await repository.save(Object.assign(Object.assign(Object.assign({ domain }, clone), patched), { version: 1, updater: user, creator: user }));
|
|
69
70
|
notify &&
|
|
70
71
|
notify({
|
|
71
72
|
mode: 'in-app',
|
|
@@ -79,7 +80,10 @@ let BoardMutation = class BoardMutation {
|
|
|
79
80
|
async updateBoard(id, patch, context) {
|
|
80
81
|
const { domain, user, notify, tx } = context.state;
|
|
81
82
|
const repository = tx.getRepository(board_1.Board);
|
|
82
|
-
const board = await repository.
|
|
83
|
+
const board = await repository.findOne({
|
|
84
|
+
where: { domain: { id: domain.id }, id },
|
|
85
|
+
relations: ['creator']
|
|
86
|
+
});
|
|
83
87
|
if (patch.model) {
|
|
84
88
|
const base64 = await (0, thumbnail_1.thumbnail)({
|
|
85
89
|
model: patch.model,
|
|
@@ -92,16 +96,17 @@ let BoardMutation = class BoardMutation {
|
|
|
92
96
|
patch.thumbnail = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
|
-
|
|
99
|
+
const { groupId } = patch, patched = tslib_1.__rest(patch, ["groupId"]);
|
|
100
|
+
if (groupId !== undefined) {
|
|
96
101
|
const groupRepository = tx.getRepository(group_1.Group);
|
|
97
|
-
board.group =
|
|
98
|
-
(await groupRepository.findOneBy({
|
|
102
|
+
board.group = groupId
|
|
103
|
+
? (await groupRepository.findOneBy({
|
|
99
104
|
domain: { id: domain.id },
|
|
100
|
-
id:
|
|
101
|
-
})) || null
|
|
102
|
-
|
|
105
|
+
id: groupId
|
|
106
|
+
})) || null
|
|
107
|
+
: null;
|
|
103
108
|
}
|
|
104
|
-
const updated = await repository.save(Object.assign(Object.assign(Object.assign({}, board),
|
|
109
|
+
const updated = await repository.save(Object.assign(Object.assign(Object.assign({ domain }, board), patched), { updater: user }));
|
|
105
110
|
notify &&
|
|
106
111
|
notify({
|
|
107
112
|
mode: 'in-app',
|
|
@@ -116,7 +121,7 @@ let BoardMutation = class BoardMutation {
|
|
|
116
121
|
const { domain, user, notify, tx } = context.state;
|
|
117
122
|
const repository = tx.getRepository(board_1.Board);
|
|
118
123
|
const board = await repository.findOneBy({ domain: { id: domain.id }, id });
|
|
119
|
-
const deleted = await repository.
|
|
124
|
+
const deleted = await repository.softDelete(id);
|
|
120
125
|
notify &&
|
|
121
126
|
notify({
|
|
122
127
|
mode: 'in-app',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-mutation.js","sourceRoot":"","sources":["../../../server/service/board/board-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Mutation, Resolver, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRedirectSubdomainPath } from '@things-factory/shell'\n\nimport { thumbnail } from '../../controllers/thumbnail'\nimport { Group } from '../group/group'\nimport { Board } from './board'\nimport { BoardPatch, NewBoard } from './board-type'\n\n@Resolver(Board)\nexport class BoardMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To create new Board' })\n async createBoard(@Arg('board') board: NewBoard, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n const groupRepository = tx.getRepository(Group)\n\n const oldBoard: Board = await repository.findOneBy({\n name: board.name,\n domain: { id: domain.id }\n })\n\n if (oldBoard) {\n throw new Error(context.t('error.board name is already taken', { name: board.name }))\n }\n\n const newBoard: Board = {\n ...board\n }\n\n if (board.groupId) {\n newBoard.group = await groupRepository.findOneBy({\n id: board.groupId\n })\n }\n\n const base64 = await thumbnail({\n model: board.model,\n context\n })\n\n if (base64) {\n newBoard.thumbnail = 'data:image/png;base64,' + base64.toString('base64')\n } else {\n newBoard.thumbnail = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='\n }\n\n const created = await repository.save({\n domain,\n ...newBoard,\n creator: user,\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${created.name}' created`,\n body: `Board '${created.name}' created by ${user.name}\\n${created.description}`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${created.id}`)\n })\n\n return created\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To clone a Board from existing Board' })\n async cloneBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const { t } = context\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOneBy({ domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id })\n\n if (!patch.name || patch.name == board.name) {\n throw t('error.name must be unique from the original board', { name: patch.name })\n }\n\n if (patch.groupId !== undefined) {\n const groupRepository = tx.getRepository(Group)\n board.group =\n (await groupRepository.findOneBy({\n domain: { id: domain.id },\n id: patch.groupId\n })) || null\n\n delete patch.groupId\n }\n\n const { id: excluded, ...clone } = board\n\n const cloned = await repository.save({\n domain,\n ...clone,\n ...patch,\n updater: user,\n creator: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${cloned.name}' cloned`,\n body: `Board '${cloned.name}' cloned by ${user.name}\\n${cloned.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${cloned.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${cloned.id}`)\n })\n\n return cloned\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To modify Board information' })\n async updateBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOneBy({ domain: { id: domain.id }, id })\n\n if (patch.model) {\n const base64 = await thumbnail({\n model: patch.model,\n context\n })\n\n if (base64) {\n patch.thumbnail = 'data:image/png;base64,' + base64.toString('base64')\n } else {\n patch.thumbnail = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='\n }\n }\n\n if (patch.groupId !== undefined) {\n const groupRepository = tx.getRepository(Group)\n board.group =\n (await groupRepository.findOneBy({\n domain: { id: domain.id },\n id: patch.groupId\n })) || null\n\n delete patch.groupId\n }\n\n const updated = await repository.save({\n ...board,\n ...patch,\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' updated`,\n body: `Board '${updated.name}' updated by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete Board' })\n async deleteBoard(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n const board = await repository.findOneBy({ domain: { id: domain.id }, id })\n\n const deleted = await repository.delete(id)\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${board.name}' deleted`,\n body: `Board '${board.name}' deleted by ${user.name}\\n${board.description}`\n })\n\n return true\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"board-mutation.js","sourceRoot":"","sources":["../../../server/service/board/board-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Mutation, Resolver, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRedirectSubdomainPath } from '@things-factory/shell'\n\nimport { thumbnail } from '../../controllers/thumbnail'\nimport { Group } from '../group/group'\nimport { Board } from './board'\nimport { BoardPatch, NewBoard } from './board-type'\n\n@Resolver(Board)\nexport class BoardMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To create new Board' })\n async createBoard(@Arg('board') board: NewBoard, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n const groupRepository = tx.getRepository(Group)\n\n const oldBoard: Board = await repository.findOneBy({\n name: board.name,\n domain: { id: domain.id }\n })\n\n if (oldBoard) {\n throw new Error(context.t('error.board name is already taken', { name: board.name }))\n }\n\n const newBoard: Board = {\n ...board\n }\n\n if (board.groupId) {\n newBoard.group = await groupRepository.findOneBy({\n id: board.groupId\n })\n }\n\n const base64 = await thumbnail({\n model: board.model,\n context\n })\n\n if (base64) {\n newBoard.thumbnail = 'data:image/png;base64,' + base64.toString('base64')\n } else {\n newBoard.thumbnail = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='\n }\n\n const created = await repository.save({\n domain,\n ...newBoard,\n creator: user,\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${created.name}' created`,\n body: `Board '${created.name}' created by ${user.name}\\n${created.description}`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${created.id}`)\n })\n\n return created\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To clone a Board from existing Board' })\n async cloneBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const { t } = context\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOneBy({ domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id })\n\n if (!patch.name || patch.name == board.name) {\n throw t('error.name must be unique from the original board', { name: patch.name })\n }\n\n const { groupId, ...patched } = patch\n\n if (groupId !== undefined) {\n const groupRepository = tx.getRepository(Group)\n board.group = groupId\n ? (await groupRepository.findOneBy({\n domain: { id: domain.id },\n id: groupId\n })) || null\n : null\n }\n\n const { id: excluded, ...clone } = board\n\n const cloned = await repository.save({\n domain,\n ...clone,\n ...patched,\n version: 1,\n updater: user,\n creator: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${cloned.name}' cloned`,\n body: `Board '${cloned.name}' cloned by ${user.name}\\n${cloned.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${cloned.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${cloned.id}`)\n })\n\n return cloned\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To modify Board information' })\n async updateBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (patch.model) {\n const base64 = await thumbnail({\n model: patch.model,\n context\n })\n\n if (base64) {\n patch.thumbnail = 'data:image/png;base64,' + base64.toString('base64')\n } else {\n patch.thumbnail = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='\n }\n }\n\n const { groupId, ...patched } = patch\n\n if (groupId !== undefined) {\n const groupRepository = tx.getRepository(Group)\n board.group = groupId\n ? (await groupRepository.findOneBy({\n domain: { id: domain.id },\n id: groupId\n })) || null\n : null\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n ...patched,\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' updated`,\n body: `Board '${updated.name}' updated by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete Board' })\n async deleteBoard(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n const board = await repository.findOneBy({ domain: { id: domain.id }, id })\n\n const deleted = await repository.softDelete(id)\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${board.name}' deleted`,\n body: `Board '${board.name}' deleted by ${user.name}\\n${board.description}`\n })\n\n return true\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-type.js","sourceRoot":"","sources":["../../../server/service/board/board-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAsF;AAEtF,mCAA+B;AAGxB,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAepB,CAAA;AAdC;IAAC,IAAA,oBAAK,GAAE;;sCACI;AAEZ;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACN;AAEpB;IAAC,IAAA,oBAAK,GAAE;;uCACK;AAEb;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACR;AAdP,QAAQ;IADpB,IAAA,wBAAS,GAAE;GACC,QAAQ,CAepB;AAfY,4BAAQ;AAkBd,IAAM,UAAU,GAAhB,MAAM,UAAU;CAetB,CAAA;AAdC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;
|
|
1
|
+
{"version":3,"file":"board-type.js","sourceRoot":"","sources":["../../../server/service/board/board-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAsF;AAEtF,mCAA+B;AAGxB,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAepB,CAAA;AAdC;IAAC,IAAA,oBAAK,GAAE;;sCACI;AAEZ;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACN;AAEpB;IAAC,IAAA,oBAAK,GAAE;;uCACK;AAEb;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACR;AAdP,QAAQ;IADpB,IAAA,wBAAS,GAAE;GACC,QAAQ,CAepB;AAfY,4BAAQ;AAkBd,IAAM,UAAU,GAAhB,MAAM,UAAU;CAetB,CAAA;AAdC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACb;AAEb;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACN;AAEpB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACZ;AAEd;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACR;AAdP,UAAU;IADtB,IAAA,wBAAS,GAAE;GACC,UAAU,CAetB;AAfY,gCAAU;AAkBhB,IAAM,SAAS,GAAf,MAAM,SAAS;CAMrB,CAAA;AALC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAK,CAAC,CAAC;;wCACT;AAEd;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;wCACN;AALF,SAAS;IADrB,IAAA,yBAAU,GAAE;GACA,SAAS,CAMrB;AANY,8BAAS","sourcesContent":["import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { Board } from './board'\n\n@InputType()\nexport class NewBoard {\n @Field()\n name: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field()\n model: string\n\n @Field({ nullable: true })\n groupId?: string\n\n @Field({ nullable: true })\n thumbnail?: string\n}\n\n@InputType()\nexport class BoardPatch {\n @Field({ nullable: true })\n name?: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field({ nullable: true })\n model?: string\n\n @Field({ nullable: true })\n groupId?: string\n\n @Field({ nullable: true })\n thumbnail?: string\n}\n\n@ObjectType()\nexport class BoardList {\n @Field(type => [Board])\n items: Board[]\n\n @Field(type => Int)\n total: number\n}\n"]}
|
|
@@ -12,12 +12,20 @@ const env_1 = require("@things-factory/env");
|
|
|
12
12
|
const ORMCONFIG = env_1.config.get('ormconfig', {});
|
|
13
13
|
const DATABASE_TYPE = ORMCONFIG.type;
|
|
14
14
|
let Board = class Board {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.version = 1;
|
|
17
|
+
}
|
|
15
18
|
};
|
|
16
19
|
tslib_1.__decorate([
|
|
17
20
|
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
18
21
|
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true }),
|
|
19
22
|
tslib_1.__metadata("design:type", String)
|
|
20
23
|
], Board.prototype, "id", void 0);
|
|
24
|
+
tslib_1.__decorate([
|
|
25
|
+
(0, typeorm_1.VersionColumn)({ nullable: true, default: 1 }),
|
|
26
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
27
|
+
tslib_1.__metadata("design:type", Number)
|
|
28
|
+
], Board.prototype, "version", void 0);
|
|
21
29
|
tslib_1.__decorate([
|
|
22
30
|
(0, typeorm_1.ManyToOne)(type => shell_1.Domain),
|
|
23
31
|
(0, type_graphql_1.Field)(type => shell_1.Domain, { nullable: true }),
|
|
@@ -33,9 +41,7 @@ tslib_1.__decorate([
|
|
|
33
41
|
tslib_1.__metadata("design:type", String)
|
|
34
42
|
], Board.prototype, "name", void 0);
|
|
35
43
|
tslib_1.__decorate([
|
|
36
|
-
(0, typeorm_1.Column)({
|
|
37
|
-
nullable: true
|
|
38
|
-
}),
|
|
44
|
+
(0, typeorm_1.Column)({ nullable: true }),
|
|
39
45
|
(0, type_graphql_1.Field)({ nullable: true }),
|
|
40
46
|
tslib_1.__metadata("design:type", String)
|
|
41
47
|
], Board.prototype, "description", void 0);
|
|
@@ -105,9 +111,17 @@ tslib_1.__decorate([
|
|
|
105
111
|
(0, typeorm_1.RelationId)((board) => board.updater),
|
|
106
112
|
tslib_1.__metadata("design:type", String)
|
|
107
113
|
], Board.prototype, "updaterId", void 0);
|
|
114
|
+
tslib_1.__decorate([
|
|
115
|
+
(0, typeorm_1.DeleteDateColumn)(),
|
|
116
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
117
|
+
tslib_1.__metadata("design:type", Date)
|
|
118
|
+
], Board.prototype, "deletedAt", void 0);
|
|
108
119
|
Board = tslib_1.__decorate([
|
|
109
120
|
(0, typeorm_1.Entity)(),
|
|
110
|
-
(0, typeorm_1.Index)('
|
|
121
|
+
(0, typeorm_1.Index)('ix_board_1', (board) => [board.domain, board.name], {
|
|
122
|
+
unique: true,
|
|
123
|
+
where: '"deleted_at" IS NULL'
|
|
124
|
+
}),
|
|
111
125
|
(0, typeorm_1.Index)('ix_board_3', (board) => [board.domain, board.group]),
|
|
112
126
|
(0, type_graphql_1.ObjectType)({ description: 'Entity for Visualization Board' })
|
|
113
127
|
], Board);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../server/service/board/board.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../server/service/board/board.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToMany,\n ManyToOne,\n PrimaryGeneratedColumn,\n RelationId,\n DeleteDateColumn,\n UpdateDateColumn,\n VersionColumn,\n BeforeUpdate\n} from 'typeorm'\nimport { Field, ID, ObjectType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\nimport { User } from '@things-factory/auth-base'\nimport { config } from '@things-factory/env'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Entity()\n@Index('ix_board_1', (board: Board) => [board.domain, board.name], {\n unique: true,\n where: '\"deleted_at\" IS NULL'\n})\n@Index('ix_board_3', (board: Board) => [board.domain, board.group])\n@ObjectType({ description: 'Entity for Visualization Board' })\nexport class Board {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { nullable: true })\n readonly id?: string\n\n @VersionColumn({ nullable: true, default: 1 })\n @Field({ nullable: true })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((board: Board) => board.domain)\n domainId?: string\n\n @Column()\n @Field()\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n model?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n thumbnail?: string\n\n @ManyToOne(type => Group, group => group.boards)\n @Field(type => Group, { nullable: true })\n group?: Group\n\n @RelationId((board: Board) => board.group)\n groupId?: string\n\n @ManyToMany(type => PlayGroup, playGroup => playGroup.boards)\n @Field(type => [PlayGroup], { nullable: true })\n playGroups?: PlayGroup[]\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((board: Board) => board.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((board: Board) => board.updater)\n updaterId?: string\n\n @DeleteDateColumn()\n @Field({ nullable: true })\n deletedAt?: Date\n}\n"]}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BoardSubscriber = void 0;
|
|
3
|
+
exports.BoardHistoryEntitySubscriber = exports.BoardSubscriber = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
|
+
const typeorm_history_1 = require("@operato/typeorm-history");
|
|
6
7
|
const shell_1 = require("@things-factory/shell");
|
|
7
8
|
const board_1 = require("./board");
|
|
9
|
+
const board_history_1 = require("./board-history");
|
|
8
10
|
let BoardSubscriber = class BoardSubscriber {
|
|
9
11
|
listenTo() {
|
|
10
12
|
return board_1.Board;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
async beforeUpdate(event) {
|
|
15
|
+
var board = event.entity;
|
|
16
|
+
if (!board.version) {
|
|
17
|
+
board.version = 1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
18
20
|
async afterUpdate(event) {
|
|
19
21
|
var board = event.entity;
|
|
20
22
|
board = await (0, shell_1.getRepository)(board_1.Board).findOne({
|
|
@@ -33,4 +35,16 @@ BoardSubscriber = tslib_1.__decorate([
|
|
|
33
35
|
(0, typeorm_1.EventSubscriber)()
|
|
34
36
|
], BoardSubscriber);
|
|
35
37
|
exports.BoardSubscriber = BoardSubscriber;
|
|
38
|
+
let BoardHistoryEntitySubscriber = class BoardHistoryEntitySubscriber extends typeorm_history_1.HistoryEntitySubscriber {
|
|
39
|
+
get entity() {
|
|
40
|
+
return board_1.Board;
|
|
41
|
+
}
|
|
42
|
+
get historyEntity() {
|
|
43
|
+
return board_history_1.BoardHistory;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
BoardHistoryEntitySubscriber = tslib_1.__decorate([
|
|
47
|
+
(0, typeorm_1.EventSubscriber)()
|
|
48
|
+
], BoardHistoryEntitySubscriber);
|
|
49
|
+
exports.BoardHistoryEntitySubscriber = BoardHistoryEntitySubscriber;
|
|
36
50
|
//# sourceMappingURL=event-subscriber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-subscriber.js","sourceRoot":"","sources":["../../../server/service/board/event-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAA8F;AAE9F,iDAA6D;AAE7D,mCAA+B;
|
|
1
|
+
{"version":3,"file":"event-subscriber.js","sourceRoot":"","sources":["../../../server/service/board/event-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAA8F;AAE9F,8DAAkE;AAClE,iDAA6D;AAE7D,mCAA+B;AAC/B,mDAA8C;AAGvC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,QAAQ;QACN,OAAO,aAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAyB;QAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;QAExB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;SAClB;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAyB;QACzC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;QAExB,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,OAAO,CAAC;YACzC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YACvD,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC,CAAA;QAEF,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACnC,cAAM,CAAC,OAAO,CAAC,YAAY,EAAE;YAC3B,SAAS;SACV,CAAC,CACH,CAAA;QAED,cAAM,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AA/BY,eAAe;IAD3B,IAAA,yBAAe,GAAE;GACL,eAAe,CA+B3B;AA/BY,0CAAe;AAkCrB,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,yCAA4C;IAC5F,IAAW,MAAM;QACf,OAAO,aAAK,CAAA;IACd,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,4BAAY,CAAA;IACrB,CAAC;CACF,CAAA;AARY,4BAA4B;IADxC,IAAA,yBAAe,GAAE;GACL,4BAA4B,CAQxC;AARY,oEAA4B","sourcesContent":["import { EventSubscriber, EntitySubscriberInterface, InsertEvent, UpdateEvent } from 'typeorm'\n\nimport { HistoryEntitySubscriber } from '@operato/typeorm-history'\nimport { pubsub, getRepository } from '@things-factory/shell'\n\nimport { Board } from './board'\nimport { BoardHistory } from './board-history'\n\n@EventSubscriber()\nexport class BoardSubscriber implements EntitySubscriberInterface<Board> {\n listenTo() {\n return Board\n }\n\n async beforeUpdate(event: UpdateEvent<Board>): Promise<any> {\n var board = event.entity\n\n if (!board.version) {\n board.version = 1\n }\n }\n\n async afterUpdate(event: UpdateEvent<Board>): Promise<any> {\n var board = event.entity\n\n board = await getRepository(Board).findOne({\n where: { domain: { id: board.domainId }, id: board.id },\n relations: ['playGroups']\n })\n\n board.playGroups.forEach(playGroup =>\n pubsub.publish('play-group', {\n playGroup\n })\n )\n\n pubsub.publish('board', {\n board\n })\n }\n}\n\n@EventSubscriber()\nexport class BoardHistoryEntitySubscriber extends HistoryEntitySubscriber<Board, BoardHistory> {\n public get entity() {\n return Board\n }\n\n public get historyEntity() {\n return BoardHistory\n }\n}\n"]}
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.subscribers = exports.resolvers = exports.entities = void 0;
|
|
4
4
|
const board_1 = require("./board");
|
|
5
|
+
const board_history_1 = require("./board-history");
|
|
5
6
|
const board_query_1 = require("./board-query");
|
|
6
7
|
const board_mutation_1 = require("./board-mutation");
|
|
7
8
|
const board_subscription_1 = require("./board-subscription");
|
|
8
9
|
const event_subscriber_1 = require("./event-subscriber");
|
|
9
|
-
exports.entities = [board_1.Board];
|
|
10
|
+
exports.entities = [board_1.Board, board_history_1.BoardHistory];
|
|
10
11
|
exports.resolvers = [board_query_1.BoardQuery, board_mutation_1.BoardMutation, board_subscription_1.BoardSubscription];
|
|
11
|
-
exports.subscribers = [event_subscriber_1.BoardSubscriber];
|
|
12
|
+
exports.subscribers = [event_subscriber_1.BoardSubscriber, event_subscriber_1.BoardHistoryEntitySubscriber];
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/board/index.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,+CAA0C;AAC1C,qDAAgD;AAChD,6DAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/board/index.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,mDAA8C;AAC9C,+CAA0C;AAC1C,qDAAgD;AAChD,6DAAwD;AACxD,yDAAkF;AAErE,QAAA,QAAQ,GAAG,CAAC,aAAK,EAAE,4BAAY,CAAC,CAAA;AAChC,QAAA,SAAS,GAAG,CAAC,wBAAU,EAAE,8BAAa,EAAE,sCAAiB,CAAC,CAAA;AAC1D,QAAA,WAAW,GAAG,CAAC,kCAAe,EAAE,+CAA4B,CAAC,CAAA","sourcesContent":["import { Board } from './board'\nimport { BoardHistory } from './board-history'\nimport { BoardQuery } from './board-query'\nimport { BoardMutation } from './board-mutation'\nimport { BoardSubscription } from './board-subscription'\nimport { BoardSubscriber, BoardHistoryEntitySubscriber } from './event-subscriber'\n\nexport const entities = [Board, BoardHistory]\nexport const resolvers = [BoardQuery, BoardMutation, BoardSubscription]\nexport const subscribers = [BoardSubscriber, BoardHistoryEntitySubscriber]\n"]}
|