@messenger-box/platform-server 0.0.1-alpha.264 → 0.0.1-alpha.266
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/lib/config/env-config.js +8 -0
- package/lib/config/env-config.js.map +1 -0
- package/lib/containers/containers.d.ts +0 -1
- package/lib/containers/containers.js +80 -0
- package/lib/containers/containers.js.map +1 -0
- package/lib/module.js +2 -3
- package/lib/module.js.map +1 -1
- package/lib/services/channel-service.js +277 -0
- package/lib/services/channel-service.js.map +1 -0
- package/lib/services/index.d.ts +0 -1
- package/lib/services/messenger-notification-service.js +158 -0
- package/lib/services/messenger-notification-service.js.map +1 -0
- package/lib/services/post-service.js +78 -0
- package/lib/services/post-service.js.map +1 -0
- package/lib/services/post-thread-service.js +10 -0
- package/lib/services/post-thread-service.js.map +1 -0
- package/lib/services/reaction-service.js +10 -0
- package/lib/services/reaction-service.js.map +1 -0
- package/lib/store/models/account-token-store.js +3 -0
- package/lib/store/models/account-token-store.js.map +1 -0
- package/lib/store/models/channel.js +35 -0
- package/lib/store/models/channel.js.map +1 -0
- package/lib/store/models/common-options.js +20 -0
- package/lib/store/models/common-options.js.map +1 -0
- package/lib/store/models/post-thread.js +9 -0
- package/lib/store/models/post-thread.js.map +1 -0
- package/lib/store/models/post.js +21 -0
- package/lib/store/models/post.js.map +1 -0
- package/lib/store/models/reaction.js +8 -0
- package/lib/store/models/reaction.js.map +1 -0
- package/lib/store/repositories/channel-repository.js +12 -0
- package/lib/store/repositories/channel-repository.js.map +1 -0
- package/lib/store/repositories/post-repository.js +12 -0
- package/lib/store/repositories/post-repository.js.map +1 -0
- package/lib/store/repositories/post-thread-repository.js +12 -0
- package/lib/store/repositories/post-thread-repository.js.map +1 -0
- package/lib/store/repositories/reaction-repository.js +11 -0
- package/lib/store/repositories/reaction-repository.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {cleanEnv,num,str}from'envalid';const config = cleanEnv(process.env,
|
|
2
|
+
/* start */
|
|
3
|
+
{
|
|
4
|
+
FILES_TTL: num({ default: 3600, desc: 'TTL for files cache in Seconds' }),
|
|
5
|
+
GRAPHQL_URL: str(),
|
|
6
|
+
MAIL_SEND_DEFAULT_EMAIL: str(),
|
|
7
|
+
APP_NAME: str(),
|
|
8
|
+
} /* end */);export{config};//# sourceMappingURL=env-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config.js","sources":["../../src/config/env-config.ts"],"sourcesContent":[null],"names":[],"mappings":"6CAEa,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG;AAC1C;AACA;AACI,IAAA,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACzE,WAAW,EAAE,GAAG,EAAE;IAClB,uBAAuB,EAAE,GAAG,EAAE;IAC9B,QAAQ,EAAE,GAAG,EAAE;CAClB"}
|
|
@@ -5,7 +5,6 @@ import { interfaces } from 'inversify';
|
|
|
5
5
|
*
|
|
6
6
|
* @param settings Settings
|
|
7
7
|
*/
|
|
8
|
-
export declare const proxyServiceContainerModule: (settings: any) => interfaces.ContainerModule;
|
|
9
8
|
/**
|
|
10
9
|
* Operates external to the Gateway. Usually a broker listen to calls and invoke this service
|
|
11
10
|
* local to the micro container.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {ContainerModule}from'inversify';import {ChannelService}from'../services/channel-service.js';import {PostService}from'../services/post-service.js';import'../services/post-thread-service.js';import'../services/reaction-service.js';import'../services/messenger-notification-service.js';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';import {ChannelRepository}from'../store/repositories/channel-repository.js';import {PostRepository}from'../store/repositories/post-repository.js';import'../store/repositories/post-thread-repository.js';import'../store/repositories/reaction-repository.js';// import { MessageNotificationTemplateMigration } from '../migrations';
|
|
2
|
+
// import {
|
|
3
|
+
// ChannelProxyService,
|
|
4
|
+
// PostProxyService,
|
|
5
|
+
// PostThreadMicroservice,
|
|
6
|
+
// ReactionMicroservice,
|
|
7
|
+
// MessengerNotificationMicroservice,
|
|
8
|
+
// } from '../services/proxy-services';
|
|
9
|
+
/**
|
|
10
|
+
* Local services and exposed microservices to serve remote connections.
|
|
11
|
+
* Operates within in the Gateway.
|
|
12
|
+
*
|
|
13
|
+
* @param settings Settings
|
|
14
|
+
*/
|
|
15
|
+
// export const proxyServiceContainerModule: (settings) => interfaces.ContainerModule = (settings) =>
|
|
16
|
+
// new ContainerModule((bind: interfaces.Bind) => {
|
|
17
|
+
// bind('MongodbMigration')
|
|
18
|
+
// .to(MessageNotificationTemplateMigration)
|
|
19
|
+
// .whenTargetNamed(MessageNotificationTemplateMigration.name);
|
|
20
|
+
// bind(ExtendTokenAccountType.ExtendedTokenAccountService)
|
|
21
|
+
// .to(ExtendedTokenAccountService)
|
|
22
|
+
// .inSingletonScope()
|
|
23
|
+
// .whenTargetIsDefault();
|
|
24
|
+
// bind<IChannelService>(TYPES.ChannelService)
|
|
25
|
+
// .to(ChannelProxyService)
|
|
26
|
+
// .inSingletonScope()
|
|
27
|
+
// .whenTargetNamed(TaggedType.MICROSERVICE);
|
|
28
|
+
// bind<IPostService>(TYPES.PostService)
|
|
29
|
+
// .to(PostProxyService)
|
|
30
|
+
// .inSingletonScope()
|
|
31
|
+
// .whenTargetNamed(TaggedType.MICROSERVICE);
|
|
32
|
+
// bind<IPostThreadService>(TYPES.PostThreadService)
|
|
33
|
+
// .to(PostThreadMicroservice)
|
|
34
|
+
// .inSingletonScope()
|
|
35
|
+
// .whenTargetNamed(TaggedType.MICROSERVICE);
|
|
36
|
+
// bind<IReactionService>(TYPES.ReactionService)
|
|
37
|
+
// .to(ReactionMicroservice)
|
|
38
|
+
// .inSingletonScope()
|
|
39
|
+
// .whenTargetNamed(TaggedType.MICROSERVICE);
|
|
40
|
+
// bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)
|
|
41
|
+
// .to(MessengerNotificationMicroservice)
|
|
42
|
+
// .inSingletonScope()
|
|
43
|
+
// .whenTargetNamed(TaggedType.MICROSERVICE);
|
|
44
|
+
// });
|
|
45
|
+
/**
|
|
46
|
+
* Operates external to the Gateway. Usually a broker listen to calls and invoke this service
|
|
47
|
+
* local to the micro container.
|
|
48
|
+
*
|
|
49
|
+
* @param settings Settings
|
|
50
|
+
*/
|
|
51
|
+
const serviceContainerModule = (settings) => new ContainerModule((bind) => {
|
|
52
|
+
// bind(ExtendTokenAccountType.ExtendedTokenAccountService)
|
|
53
|
+
// .to(ExtendedTokenAccountService)
|
|
54
|
+
// .inSingletonScope()
|
|
55
|
+
// .whenTargetIsDefault();
|
|
56
|
+
bind(TYPES.ChannelRepository)
|
|
57
|
+
.to(ChannelRepository)
|
|
58
|
+
.inSingletonScope()
|
|
59
|
+
.whenTargetIsDefault();
|
|
60
|
+
bind(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();
|
|
61
|
+
// bind<IPostThreadRepository>(TYPES.PostThreadRepository)
|
|
62
|
+
// .to(PostThreadRepository)
|
|
63
|
+
// .inSingletonScope()
|
|
64
|
+
// .whenTargetIsDefault();
|
|
65
|
+
// bind<IReactionRepository>(TYPES.ReactionRepository)
|
|
66
|
+
// .to(ReactionRepository)
|
|
67
|
+
// .inSingletonScope()
|
|
68
|
+
// .whenTargetIsDefault();
|
|
69
|
+
bind(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();
|
|
70
|
+
bind(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();
|
|
71
|
+
// bind<IPostThreadService>(TYPES.PostThreadService)
|
|
72
|
+
// .to(PostThreadService)
|
|
73
|
+
// .inSingletonScope()
|
|
74
|
+
// .whenTargetIsDefault();
|
|
75
|
+
// bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();
|
|
76
|
+
// bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)
|
|
77
|
+
// .to(MessengerNotificationService)
|
|
78
|
+
// .inSingletonScope()
|
|
79
|
+
// .whenTargetIsDefault();
|
|
80
|
+
});export{serviceContainerModule};//# sourceMappingURL=containers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.js","sources":["../../src/containers/containers.ts"],"sourcesContent":[null],"names":[],"mappings":"6nBAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;AAKG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;AAKG;AACI,MAAM,sBAAsB,GAA6C,CAAC,QAAQ,KACrF,IAAI,eAAe,CAAC,CAAC,IAAqB,KAAI;;;;;AAK1C,IAAA,IAAI,CAAqB,KAAK,CAAC,iBAAiB,CAAC;SAC5C,EAAE,CAAC,iBAAiB,CAAC;AACrB,SAAA,gBAAgB,EAAE;AAClB,SAAA,mBAAmB,EAAE,CAAC;AAC3B,IAAA,IAAI,CAAkB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;AAYxG,IAAA,IAAI,CAAkB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAExG,IAAA,IAAI,CAAe,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;;AAYnG,CAAC"}
|
package/lib/module.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {Feature}from'@common-stack/server-core';import {schema}from'./graphql/schema/index.js';import {messengerResolvers}from'./graphql/resolvers/index.js'
|
|
2
|
-
// import {
|
|
1
|
+
import {Feature}from'@common-stack/server-core';import {schema}from'./graphql/schema/index.js';import {messengerResolvers}from'./graphql/resolvers/index.js';import {serviceContainerModule}from'./containers/containers.js';import'@common-stack/core';import'./constants/query.constants.js';import'@messenger-box/core/lib/server';// import {
|
|
3
2
|
// ChannelMoleculerService,
|
|
4
3
|
// MessengerNotificationMoleculerService,
|
|
5
4
|
// PostMoleculerService,
|
|
@@ -9,7 +8,7 @@ import {Feature}from'@common-stack/server-core';import {schema}from'./graphql/sc
|
|
|
9
8
|
var MessengerModule = new Feature({
|
|
10
9
|
schema,
|
|
11
10
|
// createContainerFunc: [proxyServiceContainerModule],
|
|
12
|
-
|
|
11
|
+
createHemeraContainerFunc: [serviceContainerModule],
|
|
13
12
|
createResolversFunc: messengerResolvers,
|
|
14
13
|
// createServiceFunc: contextServicesFromContainer,
|
|
15
14
|
// addBrokerClientServiceClass: [
|
package/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/module.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/module.ts"],"sourcesContent":[null],"names":[],"mappings":"sUAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,sBAAe,IAAI,OAAO,CAAC;IACvB,MAAM;;IAEN,yBAAyB,EAAE,CAAC,sBAAsB,CAAC;AACnD,IAAA,mBAAmB,EAAE,kBAAkB;;;;;;;;;;AAU1C,CAAA,CAAC"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {inject}from'inversify';import {BaseService,ISortEnum}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {DEFAULT_NOTIFY_PROPS}from'../constants/default-notify-props.js';import {TYPES}from'@messenger-box/core/lib/server';let ChannelService = class ChannelService extends BaseService {
|
|
2
|
+
constructor(repository, postService) {
|
|
3
|
+
super(repository);
|
|
4
|
+
this.repository = repository;
|
|
5
|
+
this.postService = postService;
|
|
6
|
+
}
|
|
7
|
+
async isMember(channelId, user) {
|
|
8
|
+
var _a;
|
|
9
|
+
const channel = await this.get(channelId);
|
|
10
|
+
return !!((_a = channel === null || channel === void 0 ? void 0 : channel.members) === null || _a === void 0 ? void 0 : _a.find((member) => member.user.toString() === user.toString()));
|
|
11
|
+
}
|
|
12
|
+
static getDmNameFromIds(senderId, receiverId) {
|
|
13
|
+
return `${senderId}__${receiverId}`;
|
|
14
|
+
}
|
|
15
|
+
get defaultNotifyProps() {
|
|
16
|
+
// #Todo: To be moved to settings
|
|
17
|
+
return DEFAULT_NOTIFY_PROPS;
|
|
18
|
+
}
|
|
19
|
+
static getMaxChannelsPerTeam(teamId) {
|
|
20
|
+
// #Todo: Get Max Channel per team from Team settings
|
|
21
|
+
return Promise.resolve(10);
|
|
22
|
+
}
|
|
23
|
+
async getCurrentChannelCountPerTeam(team) {
|
|
24
|
+
return this.repository.count({
|
|
25
|
+
team,
|
|
26
|
+
type: "CHANNEL" /* IRoomType.Channel */,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async createDirectChannel(data) {
|
|
30
|
+
const { sender, receiver, displayName } = data;
|
|
31
|
+
const chlMember = [
|
|
32
|
+
{
|
|
33
|
+
user: sender,
|
|
34
|
+
schemeAdmin: false,
|
|
35
|
+
notifyProps: this.defaultNotifyProps,
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
receiver.forEach((re) => {
|
|
39
|
+
chlMember.push({
|
|
40
|
+
user: re,
|
|
41
|
+
schemeAdmin: false,
|
|
42
|
+
notifyProps: this.defaultNotifyProps,
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
const channelPayload = {
|
|
46
|
+
title: sender.split('').reverse().join(''),
|
|
47
|
+
type: "DIRECT" /* IRoomType.Direct */,
|
|
48
|
+
creator: sender,
|
|
49
|
+
members: chlMember,
|
|
50
|
+
displayName,
|
|
51
|
+
};
|
|
52
|
+
return this.saveDirectChannel(channelPayload);
|
|
53
|
+
}
|
|
54
|
+
async saveDirectChannel(channel) {
|
|
55
|
+
const { type, deletedAt } = channel;
|
|
56
|
+
if (deletedAt) {
|
|
57
|
+
return new Error('Deleted Channel can not be saved');
|
|
58
|
+
}
|
|
59
|
+
if (type !== "DIRECT" /* IRoomType.Direct */) {
|
|
60
|
+
return new Error('Only direct channels are allowed');
|
|
61
|
+
}
|
|
62
|
+
return this.repository.create(channel);
|
|
63
|
+
}
|
|
64
|
+
async addMemberToChannel(channelId, memberId) {
|
|
65
|
+
// const { channelId, memberId } = data;
|
|
66
|
+
// console.log('==============================', channelId);
|
|
67
|
+
const resData = await this.repository
|
|
68
|
+
.get({ id: channelId })
|
|
69
|
+
.then(async (res) => {
|
|
70
|
+
const mebs = res.members;
|
|
71
|
+
mebs.push({
|
|
72
|
+
id: '',
|
|
73
|
+
user: memberId,
|
|
74
|
+
schemeAdmin: false,
|
|
75
|
+
notifyProps: this.defaultNotifyProps,
|
|
76
|
+
});
|
|
77
|
+
const objToUpdate = res;
|
|
78
|
+
objToUpdate.members = mebs;
|
|
79
|
+
const finalResult = await this.repository
|
|
80
|
+
.update({ id: channelId }, objToUpdate, { overwrite: true })
|
|
81
|
+
.then((response) => response)
|
|
82
|
+
.catch((error) => error);
|
|
83
|
+
return finalResult;
|
|
84
|
+
})
|
|
85
|
+
.catch((err) => err);
|
|
86
|
+
return resData;
|
|
87
|
+
}
|
|
88
|
+
async saveMembersToChannel(data) {
|
|
89
|
+
const { channelId, membersId } = data;
|
|
90
|
+
console.log('membersId==============================', membersId);
|
|
91
|
+
const resData = await this.repository
|
|
92
|
+
.get({ id: channelId })
|
|
93
|
+
.then(async (res) => {
|
|
94
|
+
let mebs = res.members;
|
|
95
|
+
//
|
|
96
|
+
console.log('mebs==============================', mebs);
|
|
97
|
+
if (Array.isArray(membersId)) {
|
|
98
|
+
if (membersId === null || membersId === void 0 ? void 0 : membersId.length) {
|
|
99
|
+
membersId.forEach((mid) => {
|
|
100
|
+
mebs.push({
|
|
101
|
+
id: '',
|
|
102
|
+
user: mid,
|
|
103
|
+
schemeAdmin: false,
|
|
104
|
+
notifyProps: this.defaultNotifyProps,
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const objToUpdate = res;
|
|
110
|
+
objToUpdate.members = mebs;
|
|
111
|
+
const finalResult = await this.repository
|
|
112
|
+
.update({ id: channelId }, objToUpdate, { overwrite: true })
|
|
113
|
+
.then((response) => response)
|
|
114
|
+
.catch((error) => error);
|
|
115
|
+
return finalResult;
|
|
116
|
+
})
|
|
117
|
+
.catch((err) => err);
|
|
118
|
+
return resData;
|
|
119
|
+
}
|
|
120
|
+
async saveChannel(data) {
|
|
121
|
+
const { type, team, creator } = data;
|
|
122
|
+
if (type !== "CHANNEL" /* IRoomType.Channel */) {
|
|
123
|
+
return new Error('Invalid Channel Type');
|
|
124
|
+
}
|
|
125
|
+
const maxChannels = await ChannelService.getMaxChannelsPerTeam(team);
|
|
126
|
+
const currentChannels = await this.getCurrentChannelCountPerTeam(team);
|
|
127
|
+
const canAddNewChannel = currentChannels < maxChannels;
|
|
128
|
+
if (!canAddNewChannel) {
|
|
129
|
+
return Error(`Only max of ${maxChannels} allowed`);
|
|
130
|
+
}
|
|
131
|
+
const channelPayload = Object.assign(Object.assign({}, data), { members: [
|
|
132
|
+
{
|
|
133
|
+
user: creator,
|
|
134
|
+
schemeAdmin: false,
|
|
135
|
+
notifyProps: this.defaultNotifyProps,
|
|
136
|
+
},
|
|
137
|
+
] });
|
|
138
|
+
return this.repository.create(channelPayload);
|
|
139
|
+
}
|
|
140
|
+
async getChannelUnread(channelId, userId) {
|
|
141
|
+
const channel = await this.repository.get({
|
|
142
|
+
id: channelId,
|
|
143
|
+
members: { user: userId },
|
|
144
|
+
});
|
|
145
|
+
const { members, team, id } = channel;
|
|
146
|
+
const member = members.find((i) => i.user.toString() === userId);
|
|
147
|
+
const msgCount = channel.totalMsgCount - member.msgCount;
|
|
148
|
+
const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;
|
|
149
|
+
const { notifyProps, mentionCountRoot, mentionCount } = member;
|
|
150
|
+
return {
|
|
151
|
+
channelId: id,
|
|
152
|
+
teamId: team.toString(),
|
|
153
|
+
msgCount,
|
|
154
|
+
msgCountRoot,
|
|
155
|
+
mentionCount,
|
|
156
|
+
notifyProps,
|
|
157
|
+
mentionCountRoot,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
async getPinnedPosts(channelId) {
|
|
161
|
+
const posts = await this.postService.getAll({
|
|
162
|
+
criteria: {
|
|
163
|
+
channelId,
|
|
164
|
+
isPinned: true,
|
|
165
|
+
},
|
|
166
|
+
sort: {
|
|
167
|
+
key: 'CreatAt',
|
|
168
|
+
value: ISortEnum.Asc,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
const replyCounts = await Promise.all(posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })));
|
|
172
|
+
return posts.reduce((acc, curr, index) => [...acc, Object.assign(Object.assign({}, curr), { replyCount: replyCounts[index] })], []);
|
|
173
|
+
}
|
|
174
|
+
restore(channelId, time) {
|
|
175
|
+
return this.repository.update({ id: channelId }, {
|
|
176
|
+
deletedAt: time,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
getByName(team, title) {
|
|
180
|
+
return this.get({
|
|
181
|
+
team,
|
|
182
|
+
title,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
getByNameIncludeDeleted(team, title) {
|
|
186
|
+
return this.get({
|
|
187
|
+
team,
|
|
188
|
+
title,
|
|
189
|
+
deletedAt: true,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
getByNames(team, titles) {
|
|
193
|
+
return this.getAll({
|
|
194
|
+
criteria: {
|
|
195
|
+
team,
|
|
196
|
+
title: { $in: titles },
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
getChannelCounts(team, user) {
|
|
201
|
+
return this.count({
|
|
202
|
+
team,
|
|
203
|
+
members: { user },
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
getChannels(team, user, includeDeleted, lastDeleteAt) {
|
|
207
|
+
return this.repository.getAll({
|
|
208
|
+
// criteria: {
|
|
209
|
+
// team,
|
|
210
|
+
// members: { user },
|
|
211
|
+
// },
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
deleteChannel(id) {
|
|
215
|
+
return this.repository.delete({ id });
|
|
216
|
+
}
|
|
217
|
+
getDeleted(teamId, offset, limit, userId) {
|
|
218
|
+
return Promise.resolve(undefined);
|
|
219
|
+
}
|
|
220
|
+
getDeletedByName(teamId, name) {
|
|
221
|
+
return Promise.resolve(undefined);
|
|
222
|
+
}
|
|
223
|
+
getFromMaster(id) {
|
|
224
|
+
return Promise.resolve(undefined);
|
|
225
|
+
}
|
|
226
|
+
getMoreChannels(teamId, userId, offset, limit) {
|
|
227
|
+
return Promise.resolve(undefined);
|
|
228
|
+
}
|
|
229
|
+
getPrivateChannelsForTeam(teamId, offset, limit) {
|
|
230
|
+
return Promise.resolve(undefined);
|
|
231
|
+
}
|
|
232
|
+
getPublicChannelsByIdsForTeam(teamId, channelsIds) {
|
|
233
|
+
return Promise.resolve(undefined);
|
|
234
|
+
}
|
|
235
|
+
getPublicChannelsForTeam(teamId, offset, limit) {
|
|
236
|
+
return Promise.resolve(undefined);
|
|
237
|
+
}
|
|
238
|
+
getTeamChannels(teamId) {
|
|
239
|
+
return Promise.resolve(undefined);
|
|
240
|
+
}
|
|
241
|
+
hideChannel(id) {
|
|
242
|
+
return Promise.resolve(false);
|
|
243
|
+
}
|
|
244
|
+
invalidateChannelByName(teamId, name) {
|
|
245
|
+
return Promise.resolve();
|
|
246
|
+
}
|
|
247
|
+
leaveChannel(id) {
|
|
248
|
+
return Promise.resolve(false);
|
|
249
|
+
}
|
|
250
|
+
async viewChannel(id, user) {
|
|
251
|
+
// Accessing private property
|
|
252
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
253
|
+
// @ts-ignore
|
|
254
|
+
await this.repository.model.updateOne({ _id: id }, {
|
|
255
|
+
'members.$[elem].lastViewedAt': new Date(),
|
|
256
|
+
}, {
|
|
257
|
+
arrayFilters: [{ 'elem.user': user }],
|
|
258
|
+
});
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
permanentDelete(channelId) {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
permanentDeleteByTeam(teamId) {
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
permanentDeleteMembersByChannel(channelId) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
saveMultipleMembers(members) {
|
|
271
|
+
return Promise.resolve(undefined);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
ChannelService = __decorate([
|
|
275
|
+
__param(0, inject(TYPES.ChannelRepository)),
|
|
276
|
+
__param(1, inject(TYPES.PostService))
|
|
277
|
+
], ChannelService);export{ChannelService};//# sourceMappingURL=channel-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-service.js","sources":["../../src/services/channel-service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/lib/services/index.d.ts
CHANGED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {omit}from'lodash';import sub from'date-fns/sub';import compareAsc from'date-fns/compareAsc';import {IMoleculerServiceName,ISmsServiceActions}from'@messenger-box/notification-api-core';import {injectable,inject}from'inversify';import {IMoleculerServiceName as IMoleculerServiceName$1,IAccountServiceAction}from'@adminide-stack/core';import {CommonType}from'@common-stack/core';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';import {config}from'../config/env-config.js';let MessengerNotificationService = class MessengerNotificationService {
|
|
2
|
+
constructor(channelRepository, postRepository, broker, logger) {
|
|
3
|
+
this.channelRepository = channelRepository;
|
|
4
|
+
this.postRepository = postRepository;
|
|
5
|
+
this.broker = broker;
|
|
6
|
+
this.logger = logger;
|
|
7
|
+
this.users = {};
|
|
8
|
+
this.userPreferences = {};
|
|
9
|
+
}
|
|
10
|
+
async getLatestMessageInAllChannels(unit, value) {
|
|
11
|
+
const today = new Date();
|
|
12
|
+
const lastDay = sub(today, { [unit]: value });
|
|
13
|
+
const channels = await this.channelRepository.model.aggregate([
|
|
14
|
+
{
|
|
15
|
+
$match: {
|
|
16
|
+
lastPostAt: { $gte: lastDay, $lte: today },
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
$project: {
|
|
21
|
+
_id: true,
|
|
22
|
+
lastPostAt: true,
|
|
23
|
+
creator: true,
|
|
24
|
+
members: {
|
|
25
|
+
$filter: {
|
|
26
|
+
input: '$members',
|
|
27
|
+
as: 'item',
|
|
28
|
+
cond: {
|
|
29
|
+
$and: [
|
|
30
|
+
{
|
|
31
|
+
$lte: ['$$item.lastViewedAt', '$lastPostAt'],
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
]);
|
|
40
|
+
const posts = await this.postRepository.getAll({
|
|
41
|
+
criteria: {
|
|
42
|
+
channel: { $in: channels.map(({ _id }) => _id) },
|
|
43
|
+
createdAt: { $in: channels.map(({ lastPostAt }) => lastPostAt) },
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
return channels.map((channel) => (Object.assign(Object.assign({}, channel), {
|
|
47
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
48
|
+
post: posts.find((post) => post.channel.toString() === channel._id.toString()) })));
|
|
49
|
+
}
|
|
50
|
+
groupByMember(channels) {
|
|
51
|
+
return channels.reduce((acc, curr) => {
|
|
52
|
+
const members = this.findMembersWithUnreadMessage(curr);
|
|
53
|
+
const channelWithoutMembers = omit(curr, ['members']);
|
|
54
|
+
return members.reduce((memberAcc, memberCurr) => (Object.assign(Object.assign({}, acc), { [memberCurr.user.toString()]: Array.isArray(memberAcc[memberCurr.user.toString()])
|
|
55
|
+
? [...memberAcc[memberCurr.user.toString()], channelWithoutMembers]
|
|
56
|
+
: [channelWithoutMembers] })), acc);
|
|
57
|
+
}, {});
|
|
58
|
+
}
|
|
59
|
+
findMembersWithUnreadMessage(channelMessage) {
|
|
60
|
+
return channelMessage.members.filter(({ lastViewedAt }) => compareAsc(channelMessage.lastPostAt, lastViewedAt), []);
|
|
61
|
+
}
|
|
62
|
+
async sendMail(user, channels) {
|
|
63
|
+
this.logger.debug('Outgoing request to SendMail', { user: this.users[user], channels });
|
|
64
|
+
const { notificationEmail, email, username } = this.users[user];
|
|
65
|
+
await this.broker.call(`${"MailService" /* IMailMoleculerServiceName.MailService */}.${"send" /* IMailServiceAction.send */}`, {
|
|
66
|
+
request: {
|
|
67
|
+
topic: 'Unread Messages Notification',
|
|
68
|
+
to: notificationEmail || email,
|
|
69
|
+
templateId: "MessageNotificationServiceId" /* IMailTemplateId.MessageNotificationServiceId */,
|
|
70
|
+
from: config.MAIL_SEND_DEFAULT_EMAIL,
|
|
71
|
+
subject: `You have Unread Messages in ${channels.length} chats`,
|
|
72
|
+
variables: {
|
|
73
|
+
text: `Hey ${username},\nYou have Unread Messages in ${channels.length} chats`,
|
|
74
|
+
user,
|
|
75
|
+
channel: channels,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async sendText(user, channels) {
|
|
81
|
+
this.logger.debug('Outgoing request to SendSMS', { user: this.users[user], channels });
|
|
82
|
+
// #Todo Get User Full Name and Phone Number
|
|
83
|
+
const { username, phoneNumber } = this.users[user];
|
|
84
|
+
const [number] = phoneNumber;
|
|
85
|
+
if (!number) {
|
|
86
|
+
this.logger.debug('Outgoing request to SendSMS Skipped, reason No phoneNumber found', {
|
|
87
|
+
user: this.users[user],
|
|
88
|
+
channels,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
await this.broker.call(`${IMoleculerServiceName.SmsService}.${ISmsServiceActions.Send}`, {
|
|
92
|
+
to: number,
|
|
93
|
+
body: `Hey ${username},\nYou have Unread Messages in ${channels.length} chats`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async sendPushNotifications(user, channels) {
|
|
97
|
+
// #Todo Dispatch Push notification once support is added
|
|
98
|
+
this.logger.debug('Outgoing request to SendPushNotification', { user: this.users[user], channels });
|
|
99
|
+
return Promise.resolve();
|
|
100
|
+
}
|
|
101
|
+
getGlobalNotificationSettings(user) {
|
|
102
|
+
// #Todo fetch from preferences
|
|
103
|
+
return Promise.resolve({
|
|
104
|
+
global: {
|
|
105
|
+
notification: {
|
|
106
|
+
offlineMessages: {
|
|
107
|
+
sms: true,
|
|
108
|
+
email: true,
|
|
109
|
+
browser: true,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
async getUser(id) {
|
|
116
|
+
return this.broker.call(`${IMoleculerServiceName$1.AccountUser}.${IAccountServiceAction.FindAccountById}`, {
|
|
117
|
+
id,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async fetchUsersForMembers(users) {
|
|
121
|
+
return Promise.all(users
|
|
122
|
+
.filter((user) => !Object.keys(this.users).includes(user))
|
|
123
|
+
.map(async (user) => {
|
|
124
|
+
this.users[user] = await this.getUser(user);
|
|
125
|
+
this.userPreferences[user] = await this.getGlobalNotificationSettings(user);
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
async sendNotificationToUser([user, channels]) {
|
|
129
|
+
var _a, _b, _c;
|
|
130
|
+
await this.fetchUsersForMembers([user, ...channels.map(({ post }) => post.editedBy.toString())]);
|
|
131
|
+
const { email, sms, browser } = ((_c = (_b = (_a = this.userPreferences[user]) === null || _a === void 0 ? void 0 : _a.global) === null || _b === void 0 ? void 0 : _b.notification) === null || _c === void 0 ? void 0 : _c.offlineMessages) || {};
|
|
132
|
+
const filteredChannels = channels.filter(({ post }) => user !== post.editedBy.toString());
|
|
133
|
+
if ((filteredChannels === null || filteredChannels === void 0 ? void 0 : filteredChannels.length) === 0) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (email) {
|
|
137
|
+
await this.sendMail(user, filteredChannels);
|
|
138
|
+
}
|
|
139
|
+
if (sms) {
|
|
140
|
+
await this.sendText(user, filteredChannels);
|
|
141
|
+
}
|
|
142
|
+
if (browser) {
|
|
143
|
+
await this.sendPushNotifications(user, filteredChannels);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async sendNotificationOfUnreadMessages(unit, value) {
|
|
147
|
+
const channels = await this.getLatestMessageInAllChannels(unit, value);
|
|
148
|
+
const membersWithUnreadMessagesInChannels = this.groupByMember(channels);
|
|
149
|
+
await Promise.all(Object.entries(membersWithUnreadMessagesInChannels).map(this.sendNotificationToUser.bind(this)));
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
MessengerNotificationService = __decorate([
|
|
153
|
+
injectable(),
|
|
154
|
+
__param(0, inject(TYPES.ChannelRepository)),
|
|
155
|
+
__param(1, inject(TYPES.PostRepository)),
|
|
156
|
+
__param(2, inject(CommonType.MOLECULER_BROKER)),
|
|
157
|
+
__param(3, inject('Logger'))
|
|
158
|
+
], MessengerNotificationService);export{MessengerNotificationService};//# sourceMappingURL=messenger-notification-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-notification-service.js","sources":["../../src/services/messenger-notification-service.ts"],"sourcesContent":[null],"names":["INotificationMoleculerServiceName","IMoleculerServiceName"],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {inject}from'inversify';import {set}from'lodash';import {TYPES as TYPES$1}from'@container-stack/file-info-core';import {BaseService}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';import {PostTypes}from'../preferences/settings/post-settings.js';let PostService = class PostService extends BaseService {
|
|
2
|
+
constructor(repository, channelRepo, fileInfoService) {
|
|
3
|
+
super(repository);
|
|
4
|
+
this.channelRepo = channelRepo;
|
|
5
|
+
this.fileInfoService = fileInfoService;
|
|
6
|
+
}
|
|
7
|
+
createFileUploadLink(postId, filename, userId) {
|
|
8
|
+
return this.fileInfoService.uploadByUrl({
|
|
9
|
+
filename,
|
|
10
|
+
refType: "Post" /* IFileRefType.Post */,
|
|
11
|
+
ref: postId,
|
|
12
|
+
userId,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async attachUploadedFile(postId, file, createdBy) {
|
|
16
|
+
const { id } = await this.fileInfoService.createUploadedFile(Object.assign(Object.assign({}, file), { refType: "Post" /* IFileRefType.Post */, ref: postId, createdBy }));
|
|
17
|
+
const fileResponse = await this.fileInfoService.get(id);
|
|
18
|
+
return Object.assign(Object.assign({}, fileResponse), { url: this.fileInfoService.getDefaultImage(fileResponse.url) });
|
|
19
|
+
}
|
|
20
|
+
createFilesUploadLink(postId, filenames, userId) {
|
|
21
|
+
return Promise.all(filenames.map((filename) => this.fileInfoService.uploadByUrl({
|
|
22
|
+
filename,
|
|
23
|
+
refType: "Post" /* IFileRefType.Post */,
|
|
24
|
+
ref: postId,
|
|
25
|
+
userId,
|
|
26
|
+
})));
|
|
27
|
+
}
|
|
28
|
+
attachUploadedFiles(postId, files, createdBy) {
|
|
29
|
+
return Promise.all(files.map(async (file) => {
|
|
30
|
+
const { id } = await this.fileInfoService.createUploadedFile(Object.assign(Object.assign({}, file), { refType: "Post" /* IFileRefType.Post */, ref: postId, createdBy }));
|
|
31
|
+
const fileResponse = await this.fileInfoService.get(id);
|
|
32
|
+
return Object.assign(Object.assign({}, fileResponse), { url: this.fileInfoService.getDefaultImage(fileResponse.url) });
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
async create(data) {
|
|
36
|
+
const post = await super.create(data);
|
|
37
|
+
const { channel } = data;
|
|
38
|
+
// Accessing private property
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
await this.channelRepo.model.updateOne({ _id: channel }, {
|
|
42
|
+
lastPostAt: post.createdAt,
|
|
43
|
+
$inc: {
|
|
44
|
+
totalMsgCount: 1,
|
|
45
|
+
totalMsgCountRoot: 1,
|
|
46
|
+
'members.$[elem].msgCountRoot': 1,
|
|
47
|
+
'members.$[elem].msgCount': 1,
|
|
48
|
+
},
|
|
49
|
+
}, {
|
|
50
|
+
arrayFilters: [{ 'elem.user': data.author }],
|
|
51
|
+
});
|
|
52
|
+
return post;
|
|
53
|
+
}
|
|
54
|
+
deleteFile(url) {
|
|
55
|
+
return this.fileInfoService.deleteByUrl(url);
|
|
56
|
+
}
|
|
57
|
+
async readMessage(messageId, user) {
|
|
58
|
+
await this.update(messageId.messageId, {
|
|
59
|
+
props: {
|
|
60
|
+
[`[${user}]`]: set({}, PostTypes.isRead, true),
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
async deliverMessage(messageId, user) {
|
|
66
|
+
await this.update(messageId.messageId, {
|
|
67
|
+
props: {
|
|
68
|
+
[`[${user}]`]: set({}, PostTypes.isDelivered, true),
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
PostService = __decorate([
|
|
75
|
+
__param(0, inject(TYPES.PostRepository)),
|
|
76
|
+
__param(1, inject(TYPES.ChannelRepository)),
|
|
77
|
+
__param(2, inject(TYPES$1.FileInfoService))
|
|
78
|
+
], PostService);export{PostService};//# sourceMappingURL=post-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-service.js","sources":["../../src/services/post-service.ts"],"sourcesContent":[null],"names":["FileUploadTypes"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {injectable,inject}from'inversify';import {BaseService}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';let PostThreadService = class PostThreadService extends BaseService {
|
|
2
|
+
constructor(repository) {
|
|
3
|
+
super(repository);
|
|
4
|
+
this.repository = repository;
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
PostThreadService = __decorate([
|
|
8
|
+
injectable(),
|
|
9
|
+
__param(0, inject(TYPES.PostThreadRepository))
|
|
10
|
+
], PostThreadService);export{PostThreadService};//# sourceMappingURL=post-thread-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-thread-service.js","sources":["../../src/services/post-thread-service.ts"],"sourcesContent":[null],"names":[],"mappings":"gOAOO,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,WAAwB,CAAA;AAC3D,IAAA,WAAA,CAEa,UAAiC,EAAA;QAE1C,KAAK,CAAC,UAAU,CAAC,CAAC;QAFT,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;KAG7C;EACJ;AAPY,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;AAF9B,CAAA,EAAA,iBAAiB,CAO7B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {injectable,inject}from'inversify';import {BaseService}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';let ReactionService = class ReactionService extends BaseService {
|
|
2
|
+
constructor(reactionRepository) {
|
|
3
|
+
super(reactionRepository);
|
|
4
|
+
this.reactionRepository = reactionRepository;
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
ReactionService = __decorate([
|
|
8
|
+
injectable(),
|
|
9
|
+
__param(0, inject(TYPES.ReactionRepository))
|
|
10
|
+
], ReactionService);export{ReactionService};//# sourceMappingURL=reaction-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reaction-service.js","sources":["../../src/services/reaction-service.ts"],"sourcesContent":[null],"names":[],"mappings":"gOAOO,IAAM,eAAe,GAArB,MAAM,eACT,SAAQ,WAAsE,CAAA;AAG9E,IAAA,WAAA,CAEa,kBAAuC,EAAA;QAEhD,KAAK,CAAC,kBAA2B,CAAC,CAAC;QAF1B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAqB;KAGnD;EACJ;AAVY,eAAe,GAAA,UAAA,CAAA;AAD3B,IAAA,UAAU,EAAE;AAMJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAL5B,CAAA,EAAA,eAAe,CAU3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-token-store.js","sources":["../../../src/store/models/account-token-store.ts"],"sourcesContent":[null],"names":[],"mappings":"+BAK+C;IAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {Schema}from'mongoose';import {commonModeSchemaOptions,addIdVirtualFields}from'./common-options.js';const channelModelSchema = new Schema({
|
|
2
|
+
type: {
|
|
3
|
+
type: Schema.Types.String,
|
|
4
|
+
enum: ["CHANNEL" /* IRoomType.Channel */, "DIRECT" /* IRoomType.Direct */, "GROUP" /* IRoomType.Group */, "PRIVATE" /* IRoomType.Private */, "VISITOR" /* IRoomType.Visitor */],
|
|
5
|
+
required: true,
|
|
6
|
+
},
|
|
7
|
+
members: [
|
|
8
|
+
new Schema({
|
|
9
|
+
user: { type: Schema.Types.ObjectId, ref: 'accounts' },
|
|
10
|
+
roles: { type: Schema.Types.String },
|
|
11
|
+
msgCount: { type: Schema.Types.Number },
|
|
12
|
+
mentionCount: { type: Schema.Types.Number },
|
|
13
|
+
mentionCountRoot: { type: Schema.Types.Number },
|
|
14
|
+
msgCountRoot: { type: Schema.Types.Number },
|
|
15
|
+
notifyProps: { type: Schema.Types.Mixed },
|
|
16
|
+
explicitRoles: { type: Schema.Types.String },
|
|
17
|
+
schemeAdmin: { type: Schema.Types.String },
|
|
18
|
+
lastViewedAt: { type: Schema.Types.Date },
|
|
19
|
+
deletedAt: { type: Schema.Types.Date },
|
|
20
|
+
}, commonModeSchemaOptions),
|
|
21
|
+
],
|
|
22
|
+
deletedAt: { type: Schema.Types.Date },
|
|
23
|
+
lastPostAt: { type: Schema.Types.Date },
|
|
24
|
+
totalMsgCount: { type: Schema.Types.Number },
|
|
25
|
+
totalMsgCountRoot: { type: Schema.Types.Number },
|
|
26
|
+
team: { type: Schema.Types.ObjectId, ref: 'team' },
|
|
27
|
+
title: { type: Schema.Types.String },
|
|
28
|
+
displayName: { type: Schema.Types.String },
|
|
29
|
+
description: { type: Schema.Types.String },
|
|
30
|
+
props: { type: Schema.Types.Mixed },
|
|
31
|
+
purpose: { type: Schema.Types.String },
|
|
32
|
+
creator: { type: Schema.Types.ObjectId, ref: 'accounts' },
|
|
33
|
+
}, commonModeSchemaOptions);
|
|
34
|
+
addIdVirtualFields(channelModelSchema);
|
|
35
|
+
const ChannelModelFunc = (db) => db.model('channel', channelModelSchema);export{ChannelModelFunc};//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sources":["../../../src/store/models/channel.ts"],"sourcesContent":[null],"names":[],"mappings":"2GAMA,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACjC;AACI,IAAA,IAAI,EAAE;AACF,QAAA,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;AACzB,QAAA,IAAI,EAAE,CAA4F,SAAA,0BAAA,QAAA,yBAAA,OAAA,wBAAA,SAAA,0BAAA,SAAA,yBAAA;AAClG,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,IAAI,MAAM,CACN;AACI,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;YACtD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACpC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACvC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACzC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YACzC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,SAAA,EACD,uBAAuB,CAC1B;AACJ,KAAA;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC5C,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AAChD,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;IAClD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACpC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACtC,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;CAC5D,EACD,uBAAuB,CAC1B,CAAC;AAEF,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAG1B,MAAA,gBAAgB,GAAyC,CAAC,EAAE,KACrE,EAAE,CAAC,KAAK,CAAgB,SAAS,EAAE,kBAAkB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const commonModeSchemaOptions = {
|
|
2
|
+
timestamps: true,
|
|
3
|
+
toJSON: {
|
|
4
|
+
virtuals: true,
|
|
5
|
+
},
|
|
6
|
+
toObject: {
|
|
7
|
+
virtuals: true,
|
|
8
|
+
getters: true,
|
|
9
|
+
transform(doc, ret) {
|
|
10
|
+
delete ret.__v;
|
|
11
|
+
delete ret._id;
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
const addIdVirtualFields = (schema) => {
|
|
16
|
+
schema.set('toJSON', {
|
|
17
|
+
virtuals: true,
|
|
18
|
+
});
|
|
19
|
+
return schema;
|
|
20
|
+
};export{addIdVirtualFields,commonModeSchemaOptions};//# sourceMappingURL=common-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-options.js","sources":["../../../src/store/models/common-options.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGa,MAAA,uBAAuB,GAAG;AACnC,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE;AACJ,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,OAAO,EAAE,IAAI;QACb,SAAS,CAAC,GAAG,EAAE,GAAG,EAAA;YACd,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC,GAAG,CAAC;SAClB;AACJ,KAAA;EACH;AAEW,MAAA,kBAAkB,GAAG,CAAC,MAAc,KAAI;AACjD,IAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;AACjB,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAClB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import {Schema}from'mongoose';import {commonModeSchemaOptions,addIdVirtualFields}from'./common-options.js';const postThreadModelSchema = new Schema({
|
|
2
|
+
post: { type: Schema.Types.ObjectId, ref: 'posts' },
|
|
3
|
+
channel: { type: Schema.Types.ObjectId, ref: 'channels' },
|
|
4
|
+
replyCount: { type: Schema.Types.Number },
|
|
5
|
+
lastReplyAt: { type: Schema.Types.Date },
|
|
6
|
+
participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],
|
|
7
|
+
}, commonModeSchemaOptions);
|
|
8
|
+
addIdVirtualFields(postThreadModelSchema);
|
|
9
|
+
const PostThreadModelFunc = (db) => db.model('post-threads', postThreadModelSchema);export{PostThreadModelFunc};//# sourceMappingURL=post-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-thread.js","sources":["../../../src/store/models/post-thread.ts"],"sourcesContent":[null],"names":[],"mappings":"2GAMA,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACpC;AACI,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;AACnD,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACzD,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACzC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACxC,IAAA,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;CACnE,EACD,uBAAuB,CAC1B,CAAC;AAEF,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAG7B,MAAA,mBAAmB,GAA4C,CAAC,EAAE,KAC3E,EAAE,CAAC,KAAK,CAAgB,cAAc,EAAE,qBAAqB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {Schema}from'mongoose';import {commonModeSchemaOptions,addIdVirtualFields}from'./common-options.js';const postModelSchema = new Schema({
|
|
2
|
+
createdAt: { type: Schema.Types.Date },
|
|
3
|
+
editedAt: { type: Schema.Types.Date },
|
|
4
|
+
deletedAt: { type: Schema.Types.Date },
|
|
5
|
+
editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },
|
|
6
|
+
deletedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },
|
|
7
|
+
channel: { type: Schema.Types.ObjectId, ref: 'channels' },
|
|
8
|
+
rootId: { type: Schema.Types.String },
|
|
9
|
+
parentId: { type: Schema.Types.String },
|
|
10
|
+
originalId: { type: Schema.Types.String },
|
|
11
|
+
message: { type: Schema.Types.String },
|
|
12
|
+
type: { type: Schema.Types.String },
|
|
13
|
+
props: { type: Schema.Types.Mixed },
|
|
14
|
+
hashtags: { type: Schema.Types.Mixed },
|
|
15
|
+
filenames: { type: Schema.Types.Mixed },
|
|
16
|
+
fields: { type: Schema.Types.String },
|
|
17
|
+
files: [{ type: Schema.Types.ObjectId }],
|
|
18
|
+
hasReactions: { type: Schema.Types.Boolean },
|
|
19
|
+
}, commonModeSchemaOptions);
|
|
20
|
+
addIdVirtualFields(postModelSchema);
|
|
21
|
+
const PostModelFunc = (db) => db.model('posts', postModelSchema);export{PostModelFunc};//# sourceMappingURL=post.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post.js","sources":["../../../src/store/models/post.ts"],"sourcesContent":[null],"names":[],"mappings":"2GAMA,MAAM,eAAe,GAAG,IAAI,MAAM,CAC9B;IACI,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACtC,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;AAC1D,IAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;AAC3D,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACzD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACrC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACnC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACrC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;CAC/C,EACD,uBAAuB,CAC1B,CAAC;AAEF,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAGvB,MAAA,aAAa,GAAsC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAa,OAAO,EAAE,eAAe"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {Schema}from'mongoose';import {addIdVirtualFields}from'./common-options.js';const reactionModelSchema = new Schema({
|
|
2
|
+
createdAt: { type: Schema.Types.Date },
|
|
3
|
+
reaction: { type: Schema.Types.String },
|
|
4
|
+
user: { type: Schema.Types.ObjectId, ref: 'accounts' },
|
|
5
|
+
post: { type: Schema.Types.ObjectId, ref: 'posts' },
|
|
6
|
+
});
|
|
7
|
+
addIdVirtualFields(reactionModelSchema);
|
|
8
|
+
const ReactionModelFunc = (db) => db.model('reactions', reactionModelSchema);export{ReactionModelFunc};//# sourceMappingURL=reaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reaction.js","sources":["../../../src/store/models/reaction.ts"],"sourcesContent":[null],"names":[],"mappings":"mFAMA,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC;IACnC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;AACtD,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;AACtD,CAAA,CAAC,CAAC;AAEH,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AAG3B,MAAA,iBAAiB,GAA0C,CAAC,EAAE,KACvE,EAAE,CAAC,KAAK,CAAiB,WAAW,EAAE,mBAAmB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {injectable,inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import {ChannelModelFunc}from'../models/channel.js';import'../models/post.js';import'../models/post-thread.js';import'../models/reaction.js';import'../models/account-token-store.js';let ChannelRepository = class ChannelRepository extends BaseRepository {
|
|
2
|
+
constructor(db, logger, options) {
|
|
3
|
+
super(ChannelModelFunc, db, logger, options);
|
|
4
|
+
}
|
|
5
|
+
};
|
|
6
|
+
ChannelRepository = __decorate([
|
|
7
|
+
injectable(),
|
|
8
|
+
__param(0, inject('MongoDBConnection')),
|
|
9
|
+
__param(1, inject('Logger')),
|
|
10
|
+
__param(2, inject('IMongoOptions')),
|
|
11
|
+
__param(2, optional())
|
|
12
|
+
], ChannelRepository);export{ChannelRepository};//# sourceMappingURL=channel-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-repository.js","sources":["../../../src/store/repositories/channel-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"uUASO,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,cAAwB,CAAA;AAC3D,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChD;EACJ;AAZY,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,iBAAiB,CAY7B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {injectable,inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import'../models/channel.js';import {PostModelFunc}from'../models/post.js';import'../models/post-thread.js';import'../models/reaction.js';import'../models/account-token-store.js';let PostRepository = class PostRepository extends BaseRepository {
|
|
2
|
+
constructor(db, logger, options) {
|
|
3
|
+
super(PostModelFunc, db, logger, options);
|
|
4
|
+
}
|
|
5
|
+
};
|
|
6
|
+
PostRepository = __decorate([
|
|
7
|
+
injectable(),
|
|
8
|
+
__param(0, inject('MongoDBConnection')),
|
|
9
|
+
__param(1, inject('Logger')),
|
|
10
|
+
__param(2, inject('IMongoOptions')),
|
|
11
|
+
__param(2, optional())
|
|
12
|
+
], PostRepository);export{PostRepository};//# sourceMappingURL=post-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-repository.js","sources":["../../../src/store/repositories/post-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"oUASO,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,cAAqB,CAAA;AACrD,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C;EACJ;AAZY,cAAc,GAAA,UAAA,CAAA;AAD1B,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,cAAc,CAY1B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {injectable,inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import'../models/channel.js';import'../models/post.js';import {PostThreadModelFunc}from'../models/post-thread.js';import'../models/reaction.js';import'../models/account-token-store.js';let PostThreadRepository = class PostThreadRepository extends BaseRepository {
|
|
2
|
+
constructor(db, logger, options) {
|
|
3
|
+
super(PostThreadModelFunc, db, logger, options);
|
|
4
|
+
}
|
|
5
|
+
};
|
|
6
|
+
PostThreadRepository = __decorate([
|
|
7
|
+
injectable(),
|
|
8
|
+
__param(0, inject('MongoDBConnection')),
|
|
9
|
+
__param(1, inject('Logger')),
|
|
10
|
+
__param(2, inject('IMongoOptions')),
|
|
11
|
+
__param(2, optional())
|
|
12
|
+
], PostThreadRepository);export{PostThreadRepository};//# sourceMappingURL=post-thread-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-thread-repository.js","sources":["../../../src/store/repositories/post-thread-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"0UASO,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,cAA2B,CAAA;AACjE,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACnD;EACJ;AAZY,oBAAoB,GAAA,UAAA,CAAA;AADhC,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,oBAAoB,CAYhC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {__decorate,__param}from'tslib';import {inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import'../models/channel.js';import'../models/post.js';import'../models/post-thread.js';import {ReactionModelFunc}from'../models/reaction.js';import'../models/account-token-store.js';let ReactionRepository = class ReactionRepository extends BaseRepository {
|
|
2
|
+
constructor(db, logger, options) {
|
|
3
|
+
super(ReactionModelFunc, db, logger, options);
|
|
4
|
+
}
|
|
5
|
+
};
|
|
6
|
+
ReactionRepository = __decorate([
|
|
7
|
+
__param(0, inject('MongoDBConnection')),
|
|
8
|
+
__param(1, inject('Logger')),
|
|
9
|
+
__param(2, inject('IMongoOptions')),
|
|
10
|
+
__param(2, optional())
|
|
11
|
+
], ReactionRepository);export{ReactionRepository};//# sourceMappingURL=reaction-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reaction-repository.js","sources":["../../../src/store/repositories/reaction-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"6TAQO,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,cAAyC,CAAA;AAC7E,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,iBAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1D;EACJ;AAZY,kBAAkB,GAAA,UAAA,CAAA;AAEtB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,kBAAkB,CAY9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/platform-server",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.266",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"typescript": {
|
|
50
50
|
"definition": "lib/index.d.ts"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "c630d6898f033f400bde8b1121b23e3662da4cfe"
|
|
53
53
|
}
|