shuttlepro-shared 1.3.13 → 1.3.14

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.
Files changed (64) hide show
  1. package/constants/index.js +0 -15
  2. package/index.js +0 -8
  3. package/models/UserRole.js +119 -1
  4. package/models/Website.js +1 -0
  5. package/models.js +1 -62
  6. package/package.json +2 -13
  7. package/common/repositories/chatMember.repository.js +0 -9
  8. package/common/repositories/customerProfile.repository.js +0 -147
  9. package/common/repositories/descriptionTemplates.repository.js +0 -229
  10. package/common/repositories/index.js +0 -32
  11. package/common/repositories/integration.repository.js +0 -210
  12. package/common/repositories/label.repository.js +0 -95
  13. package/common/repositories/notificationSettings.repository.js +0 -95
  14. package/common/repositories/role.repository.js +0 -333
  15. package/common/repositories/settings.repository.js +0 -32
  16. package/common/repositories/shipper.repository.js +0 -77
  17. package/common/repositories/socialMediaSetting.repository.js +0 -33
  18. package/common/repositories/user.repository.js +0 -150
  19. package/common/repositories/userPermission.repository.js +0 -228
  20. package/common/repositories/userRepository.js +0 -31
  21. package/common/repositories/userRole.repository.js +0 -235
  22. package/common/repositories/userRolePermission.repository.js +0 -59
  23. package/common/repositories/workspace.repository.js +0 -147
  24. package/config/bull.js +0 -78
  25. package/config/config.js +0 -14
  26. package/config/database.js +0 -4
  27. package/config/index.js +0 -13
  28. package/config/redis.js +0 -196
  29. package/config/socket.js +0 -172
  30. package/models/AgentActivity.js +0 -192
  31. package/models/Assignment.js +0 -23
  32. package/models/BusinessDistribution.js +0 -23
  33. package/models/Card.js +0 -144
  34. package/models/CardComments.js +0 -33
  35. package/models/ChatMember.js +0 -17
  36. package/models/Chatbot.js +0 -20
  37. package/models/Checkpoint.js +0 -50
  38. package/models/City.js +0 -17
  39. package/models/Column.js +0 -28
  40. package/models/Conversation.js +0 -87
  41. package/models/Customer.js +0 -36
  42. package/models/CustomerProfile.js +0 -27
  43. package/models/DefaultRolePermission.js +0 -34
  44. package/models/DescriptionTemplate.js +0 -22
  45. package/models/Integration.js +0 -51
  46. package/models/Label.js +0 -42
  47. package/models/Message.js +0 -47
  48. package/models/NewProduct.js +0 -71
  49. package/models/NotificationSettings.js +0 -130
  50. package/models/Order.js +0 -236
  51. package/models/OrderProduct.js +0 -37
  52. package/models/Profile.js +0 -127
  53. package/models/Report.js +0 -27
  54. package/models/Setting.js +0 -18
  55. package/models/Shipper.js +0 -62
  56. package/models/SocialMediaSetting.js +0 -28
  57. package/models/Status.js +0 -58
  58. package/models/StatusType.js +0 -10
  59. package/models/Step.js +0 -50
  60. package/models/Type.js +0 -25
  61. package/models/UserWorkflow.js +0 -46
  62. package/models/Workspace.js +0 -308
  63. package/utils/decorator-factory.js +0 -264
  64. package/utils/logger.js +0 -41
@@ -1,228 +0,0 @@
1
- const { getRedisData, setRedisData } = require("../../config/redis");
2
- const UserPermission = require("../../models/UserPermission");
3
-
4
- const CACHE_KEY_ALL = "user_permissions_all";
5
-
6
- /**
7
- * Get cached user permissions for all users.
8
- */
9
- const getCachedAllUserPermissions = async () => {
10
- let permissions = await getRedisData(CACHE_KEY_ALL);
11
- if (!permissions) {
12
- permissions = await UserPermission.find({}).lean().exec();
13
- await setRedisData(CACHE_KEY_ALL, permissions);
14
- }
15
- return permissions;
16
- };
17
-
18
- /**
19
- * Update cached user permissions for all users.
20
- */
21
- const updateCachedAllUserPermissions = async () => {
22
- const permissions = await UserPermission.find({}).lean().exec();
23
- await setRedisData(CACHE_KEY_ALL, permissions);
24
- };
25
-
26
- /**
27
- * Get cached user permissions for a specific user.
28
- * Uses the all permissions cache and filters by userId.
29
- */
30
- const getCachedUserPermissions = async (userId) => {
31
- const allPermissions = await getCachedAllUserPermissions();
32
- return allPermissions.filter((perm) => perm.userId === userId);
33
- };
34
-
35
- /**
36
- * Create a new user permission and update cache.
37
- */
38
- const createUserPermission = async (data) => {
39
- const newPermission = new UserPermission(data);
40
- const savedPermission = await newPermission.save();
41
-
42
- // Update the main cache
43
- await updateCachedAllUserPermissions();
44
-
45
- return savedPermission;
46
- };
47
-
48
- /**
49
- * Find user permissions by user ID.
50
- */
51
- const findUserPermissionsByUserId = async (userId) => {
52
- return await getCachedUserPermissions(userId);
53
- };
54
-
55
- /**
56
- * Find user permissions by user ID and workspace ID.
57
- */
58
- const fetchUserPermissionsByWorkspaceId = async (userId, workspaceId) => {
59
- const allPermissions = await getCachedAllUserPermissions();
60
- return allPermissions.filter(
61
- (perm) => perm.userId === userId && perm.workspaceId === workspaceId
62
- );
63
- };
64
-
65
- /**
66
- * Find a single user permission by filter.
67
- */
68
- const findUserPermission = async (filter, workspaceId = null) => {
69
- const allPermissions = await getCachedAllUserPermissions();
70
-
71
- let filteredPermissions = allPermissions;
72
- if (workspaceId) {
73
- filteredPermissions = allPermissions.filter(
74
- (perm) => perm.workspaceId === workspaceId
75
- );
76
- }
77
-
78
- return (
79
- filteredPermissions.find((perm) =>
80
- Object.entries(filter).every(([key, value]) => perm[key] === value)
81
- ) || null
82
- );
83
- };
84
-
85
- /**
86
- * Find all user permissions that match a filter.
87
- */
88
- const findAllUserPermissionsByFilter = async (
89
- filter = {},
90
- workspaceId = null
91
- ) => {
92
- const allPermissions = await getCachedAllUserPermissions();
93
-
94
- let filteredPermissions = allPermissions;
95
- if (workspaceId) {
96
- filteredPermissions = allPermissions.filter(
97
- (perm) => perm.workspaceId === workspaceId
98
- );
99
- }
100
-
101
- return (
102
- filteredPermissions.filter((perm) =>
103
- Object.entries(filter).every(([key, value]) => perm[key] === value)
104
- ) || []
105
- );
106
- };
107
-
108
- /**
109
- * Find all user permissions (without filtering).
110
- */
111
- const findAllUserPermissions = async () => {
112
- return await getCachedAllUserPermissions();
113
- };
114
-
115
- /**
116
- * Update a user permission by ID.
117
- */
118
- const updateUserPermission = async (id, data) => {
119
- const updatedPermission = await UserPermission.findByIdAndUpdate(id, data, {
120
- new: true,
121
- }).exec();
122
-
123
- if (updatedPermission) {
124
- // Update the main cache
125
- await updateCachedAllUserPermissions();
126
- }
127
-
128
- return updatedPermission;
129
- };
130
-
131
- /**
132
- * Update a user permission by filter.
133
- */
134
- const updateUserPermissionByFilter = async (
135
- filter,
136
- data,
137
- workspaceId = null
138
- ) => {
139
- // Add workspace filter if provided
140
- const queryFilter = workspaceId ? { ...filter, workspaceId } : filter;
141
-
142
- const updatedPermission = await UserPermission.findOneAndUpdate(
143
- queryFilter,
144
- data,
145
- {
146
- new: true,
147
- }
148
- ).exec();
149
-
150
- if (updatedPermission) {
151
- // Update the main cache
152
- await updateCachedAllUserPermissions();
153
- }
154
-
155
- return updatedPermission;
156
- };
157
-
158
- /**
159
- * Delete a user permission by ID.
160
- */
161
- const deleteUserPermission = async (id) => {
162
- const deletedPermission = await UserPermission.findByIdAndDelete(id).exec();
163
-
164
- if (deletedPermission) {
165
- // Update the main cache
166
- await updateCachedAllUserPermissions();
167
- }
168
-
169
- return deletedPermission;
170
- };
171
-
172
- /**
173
- * Delete user permissions by filter.
174
- */
175
- const deleteUserPermissionsByFilter = async (filter) => {
176
- const result = await UserPermission.deleteMany(filter).exec();
177
-
178
- if (result.deletedCount > 0) {
179
- // Update the main cache
180
- await updateCachedAllUserPermissions();
181
- }
182
-
183
- return result;
184
- };
185
-
186
- /**
187
- * Delete all user permissions for a specific workspace.
188
- */
189
- const deleteAllUserPermissionsByWorkspace = async (workspaceId) => {
190
- await UserPermission.deleteMany({ workspaceId }).exec();
191
-
192
- // Update the main cache
193
- await updateCachedAllUserPermissions();
194
- };
195
-
196
- /**
197
- * Bulk create or update user permissions.
198
- */
199
- const bulkCreateAndUpdateUserPermissions = async (operations) => {
200
- await UserPermission.bulkWrite(operations);
201
- await updateCachedAllUserPermissions();
202
- return operations;
203
- };
204
-
205
- /**
206
- * Insert multiple user permissions and update cache.
207
- */
208
- const insertManyUserPermissions = async (permissionsArray) => {
209
- const inserted = await UserPermission.insertMany(permissionsArray);
210
- await updateCachedAllUserPermissions();
211
- return inserted;
212
- };
213
-
214
- module.exports = {
215
- createUserPermission,
216
- findUserPermission,
217
- findUserPermissionsByUserId,
218
- fetchUserPermissionsByWorkspaceId,
219
- findAllUserPermissionsByFilter,
220
- findAllUserPermissions,
221
- updateUserPermission,
222
- updateUserPermissionByFilter,
223
- deleteUserPermission,
224
- deleteUserPermissionsByFilter,
225
- deleteAllUserPermissionsByWorkspace,
226
- bulkCreateAndUpdateUserPermissions,
227
- insertManyUserPermissions,
228
- };
@@ -1,31 +0,0 @@
1
- const User = require("../../models/User");
2
-
3
- const createUser = async (data) => {
4
- const newUser = new User(data);
5
- const savedUser = await newUser.save();
6
- return savedUser;
7
- };
8
-
9
- const findUser = async (filter) => {
10
- return await User.findOne(filter).exec();
11
- };
12
-
13
- const updateUser = async (id, data) => {
14
- const updatedUser = await User.findByIdAndUpdate(id, data, {
15
- new: true,
16
- }).exec();
17
-
18
- return updatedUser;
19
- };
20
-
21
- const deleteUser = async (id) => {
22
- const deletedUser = await User.findByIdAndDelete(id).exec();
23
- return deletedUser;
24
- };
25
-
26
- module.exports = {
27
- createUser,
28
- findUser,
29
- updateUser,
30
- deleteUser,
31
- };
@@ -1,235 +0,0 @@
1
- const { UserRole } = require("../../models/UserRole");
2
- const { getRedisData, setRedisData } = require("../../config/redis");
3
-
4
- const defaultSelect =
5
- "iconUrl thumbUrl name productsCount ordersCount contact email address websiteUrl facebookUrl twitterUrl instagramUrl members defaultModule";
6
-
7
- // Cache keys
8
- const MEMBERS = "members";
9
-
10
- // Update the cache for all members
11
- const updateCachedMembers = async (workspaceId) => {
12
- try {
13
- const members = await UserRole.find({ workspaceId })
14
- .select("userId role userShift roleId isOwner workspaceId")
15
- .populate({
16
- path: "roleId",
17
- select:
18
- "id name userId userShift permissionId modulePermissions workspaceId",
19
- populate: [{ path: "permissionId", select: "id name" }],
20
- })
21
- .populate({
22
- path: "userId",
23
- match: { isDeleted: false, suspended: false },
24
- select: "firstName lastName role email picture userShift",
25
- })
26
- .lean()
27
- .exec();
28
- await setRedisData(workspaceId, members, MEMBERS, 3600);
29
- return members;
30
- } catch (error) {
31
- console.error("Error updating cached members:", error);
32
- return [];
33
- }
34
- };
35
-
36
- const getMembers = async (workspaceId) => {
37
- let members = await getRedisData(workspaceId, MEMBERS);
38
- if (!members || members?.length === 0) {
39
- members = await UserRole.find({ workspaceId })
40
- .select("userId role userShift roleId isOwner workspaceId")
41
- .populate({
42
- path: "roleId",
43
- select:
44
- "id name userId userShift permissionId modulePermissions workspaceId",
45
- populate: [{ path: "permissionId", select: "id name" }],
46
- })
47
- .populate({
48
- path: "userId",
49
- match: { isDeleted: false, suspended: false },
50
- select: "firstName lastName role email picture userShift",
51
- })
52
- .lean()
53
- .exec();
54
- await setRedisData(workspaceId, members, MEMBERS, 3600);
55
- }
56
- return members;
57
- };
58
-
59
- const getMemberByWorkspaceIdAndUserId = async (workspaceId, userId) => {
60
- const members = await getMembers(workspaceId);
61
- return (
62
- members?.find(
63
- (member) =>
64
- member?.workspaceId === workspaceId && member?.userId?._id === userId
65
- ) || null
66
- );
67
- };
68
-
69
- // Find single user role by filter
70
- const findSingleUserRoleByFilter = async ({ workspaceId, userId }) => {
71
- return await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
72
- };
73
-
74
- const findAllUserRoles = async (workspaceId) => {
75
- return await getMembers(workspaceId);
76
- };
77
-
78
- const createUserRole = async (data) => {
79
- const savedRole = await UserRole.create(data);
80
- return await updateCachedMembers(savedRole?.workspaceId?.toString());
81
- };
82
-
83
- const findOneAndUpdateUserRole = async (filter, payload) => {
84
- await UserRole.findOneAndUpdate(
85
- filter,
86
- { $set: payload },
87
- { new: true, upsert: false }
88
- )
89
- .lean()
90
- .exec();
91
- return await updateCachedMembers(filter.workspaceId);
92
- };
93
-
94
- const updateUserRole = async (filter, payload) => {
95
- await UserRole.updateOne(filter, payload).exec();
96
- return await updateCachedMembers(filter.workspaceId);
97
- };
98
-
99
- // Update multiple user roles based on filter
100
- const updateManyUserRoles = async (filter, payload) => {
101
- await UserRole.updateMany(filter, { $set: payload }).exec();
102
- return await updateCachedMembers(filter.workspaceId);
103
- };
104
-
105
- const deleteUserRoleByFilter = async (filter) => {
106
- await UserRole.deleteOne(filter).exec();
107
- return await updateCachedMembers(filter.workspaceId);
108
- };
109
-
110
- const convertPermissionsArrayToObject = (originalArray) => {
111
- return originalArray?.reduce((acc, item) => {
112
- const { id, actions, integrationPermissions, ...extras } = item;
113
- const formattedExtras = {};
114
- if (extras.deletable !== undefined) {
115
- formattedExtras.deletable = extras.deletable;
116
- }
117
- if (extras.createUpdateable !== undefined) {
118
- formattedExtras.createUpdateable = extras.createUpdateable;
119
- }
120
- acc[id] = {
121
- actions: Object.keys(actions).filter((action) => actions[action]),
122
- ...formattedExtras,
123
- ...(integrationPermissions && {
124
- integrationPermissions: Object.entries(integrationPermissions)
125
- .filter(([_, allowed]) => allowed)
126
- .map(([key]) => key),
127
- }),
128
- };
129
- return acc;
130
- }, {});
131
- };
132
-
133
- const getUserPermissions = async (workspaceId, userId) => {
134
- try {
135
- let data = await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
136
- if (data) {
137
- return (
138
- convertPermissionsArrayToObject(
139
- data?.roleId?.modulePermissions?.modules
140
- ) || null
141
- );
142
- }
143
- return null;
144
- } catch (err) {
145
- console.error("Error in getUserPermissions:", err);
146
- return null;
147
- }
148
- };
149
-
150
- const getUserRoleWithPermissions = async (workspaceId, userId) => {
151
- try {
152
- let data = await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
153
- if (data) {
154
- const roleWithPermissions = {
155
- ...data,
156
- roleId: data?.roleId?._id?.toString() || "",
157
- role: data?.roleId?.name || "",
158
- permissions:
159
- convertPermissionsArrayToObject(
160
- data?.roleId?.modulePermissions?.modules
161
- ) || [],
162
- parentRole: data?.roleId?.permissionId?.name || "",
163
- parentRoleId: data?.roleId?.permissionId?._id?.toString() || "",
164
- defaultModule: data?.roleId?.defaultModule || "",
165
- };
166
- return roleWithPermissions || null;
167
- }
168
- return null;
169
- } catch (err) {
170
- console.error("Error in getUserRoleWithPermissions:", err);
171
- return null;
172
- }
173
- };
174
-
175
- const getChannelsPermissions = async (workspaceId, userId) => {
176
- try {
177
- let data = await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
178
- if (data) {
179
- return (
180
- convertPermissionsArrayToObject(
181
- data?.roleId?.modulePermissions?.modules
182
- )?.["conversations"]?.["integrationPermissions"] || []
183
- );
184
- }
185
- return [];
186
- } catch (err) {
187
- console.error("Error in getChannelsPermissions:", err);
188
- return [];
189
- }
190
- };
191
-
192
- const findUserWorkspaces = async (userId) => {
193
- let userRoleWithWorkspaces = await UserRole.find({ userId: userId })
194
- .select("userId roleId workspaceId")
195
- .populate({
196
- path: "roleId",
197
- select: "id name userId userShift permissionId modulePermissions",
198
- populate: [{ path: "permissionId", select: "id name" }],
199
- })
200
- .populate({
201
- path: "workspaceId",
202
- select: defaultSelect,
203
- match: { isDeleted: false },
204
- })
205
- .lean()
206
- .exec();
207
- userRoleWithWorkspaces = userRoleWithWorkspaces
208
- ?.filter((userRole) => userRole?.workspaceId)
209
- ?.filter((userRole) => userRole?.roleId)
210
- ?.map((ur) => {
211
- return {
212
- ...ur?.workspaceId,
213
- id: ur?.workspaceId?._id?.toString(),
214
- _id: ur?.workspaceId?._id?.toString(),
215
- role: ur?.roleId?.name || "",
216
- permissions: ur?.roleId?.modulePermissions?.modules || [],
217
- };
218
- });
219
- return userRoleWithWorkspaces || [];
220
- };
221
-
222
- module.exports = {
223
- createUserRole,
224
- updateUserRole,
225
- updateManyUserRoles,
226
- findAllUserRoles,
227
- deleteUserRoleByFilter,
228
- findUserWorkspaces,
229
- getUserRoleWithPermissions,
230
- getUserPermissions,
231
- getChannelsPermissions,
232
- findOneAndUpdateUserRole,
233
- findSingleUserRoleByFilter,
234
- updateCachedMembers,
235
- };
@@ -1,59 +0,0 @@
1
- const DefaultRolePermission = require("../../models/DefaultRolePermission");
2
-
3
- const createDefaultRolePermission = async (data) => {
4
- const newPermission = new DefaultRolePermission(data);
5
- const savedPermission = await newPermission.save();
6
- return savedPermission;
7
- };
8
-
9
- const findDefaultRolePermission = async (filter) => {
10
- return await DefaultRolePermission.findOne(filter).exec();
11
- };
12
-
13
- const findAllDefaultRolePermissions = async (filter = {}) => {
14
- return await DefaultRolePermission.find(filter).exec();
15
- };
16
-
17
- const updateDefaultRolePermission = async (id, data) => {
18
- const updatedPermission = await DefaultRolePermission.findByIdAndUpdate(
19
- id,
20
- data,
21
- {
22
- new: true,
23
- }
24
- ).exec();
25
- return updatedPermission;
26
- };
27
-
28
- const deleteDefaultRolePermission = async (id) => {
29
- const deletedPermission = await DefaultRolePermission.findByIdAndDelete(
30
- id
31
- ).exec();
32
- return deletedPermission;
33
- };
34
-
35
- const deleteDefaultRolePermissionsByFilter = async (filter) => {
36
- const deleted = await DefaultRolePermission.deleteMany(filter).exec();
37
- return deleted;
38
- };
39
-
40
- const deleteOneDefaultRolePermissionByFilter = async (filter) => {
41
- const deleted = await DefaultRolePermission.findOneAndDelete(filter).exec();
42
- return deleted;
43
- };
44
-
45
- const insertManyUserPermissions = async (permissionsArray) => {
46
- const inserted = await UserPermission.insertMany(permissionsArray);
47
- return inserted;
48
- };
49
-
50
- module.exports = {
51
- createDefaultRolePermission,
52
- findDefaultRolePermission,
53
- findAllDefaultRolePermissions,
54
- updateDefaultRolePermission,
55
- deleteDefaultRolePermission,
56
- deleteDefaultRolePermissionsByFilter,
57
- deleteOneDefaultRolePermissionByFilter,
58
- insertManyUserPermissions,
59
- };
@@ -1,147 +0,0 @@
1
- const { getRedisData, setRedisData } = require("../../config/redis");
2
- const Workspace = require("../../models/Workspace");
3
-
4
- const CACHE_KEY_ALL = "workspaces_all";
5
-
6
- const getCachedWorkspaces = async () => {
7
- let workspaces = await getRedisData(CACHE_KEY_ALL);
8
- if (!workspaces) {
9
- workspaces = await Workspace.find().lean().exec();
10
- await setRedisData(CACHE_KEY_ALL, workspaces);
11
- } else {
12
- workspaces = workspaces;
13
- }
14
- return workspaces;
15
- };
16
-
17
- const updateCachedWorkspaces = async () => {
18
- const workspaces = await Workspace.find().lean().exec();
19
- await setRedisData(CACHE_KEY_ALL, workspaces);
20
- };
21
-
22
- const createWorkspace = async (data) => {
23
- const newWorkspace = new Workspace(data);
24
- const savedWorkspace = await newWorkspace.save();
25
- await updateCachedWorkspaces();
26
- return savedWorkspace;
27
- };
28
-
29
- const findWorkspaceById = async (id, select = []) => {
30
- const workspaces = await getCachedWorkspaces();
31
- const workspace =
32
- workspaces.find((ws) => ws._id.toString() === id && !ws?.isDeleted) || null;
33
- if (workspace && select.length > 0) {
34
- return select.reduce((result, field) => {
35
- if (workspace[field] !== undefined) {
36
- result[field] = workspace[field];
37
- }
38
- return result;
39
- }, {});
40
- }
41
- return workspace;
42
- };
43
-
44
- const findWorkspace = async (filter) => {
45
- const workspaces = await getCachedWorkspaces();
46
- return (
47
- workspaces.find((ws) =>
48
- Object.entries(filter).every(([key, value]) => ws[key] === value)
49
- ) || null
50
- );
51
- };
52
-
53
- const findSingleWorkspace = async (filter) => {
54
- const cachedWorkspaces = await getCachedWorkspaces();
55
- const cachedWorkspace = cachedWorkspaces.find((ws) =>
56
- Object.entries(filter).every(([key, value]) => ws[key] === value)
57
- );
58
- if (cachedWorkspace) return cachedWorkspace;
59
- const workspace = await Workspace.findOne(filter).lean().exec();
60
- return workspace;
61
- };
62
-
63
- const findWorkspaceByIdAndQueueTracking = async (id) => {
64
- const workspaces = await getCachedWorkspaces();
65
- return (
66
- workspaces.find((ws) => ws._id.toString() === id && ws.queueTracking) ||
67
- null
68
- );
69
- };
70
-
71
- const findAllWorkspaces = async (filter = {}) => {
72
- const workspaces = await getCachedWorkspaces();
73
- return workspaces.filter((ws) =>
74
- Object.entries(filter).every(([key, value]) => ws[key] === value)
75
- );
76
- };
77
- const updateWorkspaceCache = async (id = "") => {
78
- const workspace = await Workspace.findById(id).lean().exec();
79
- await updateCachedWorkspaces();
80
- return workspace;
81
- };
82
-
83
- const updateWorkspace = async (id, data) => {
84
- const updatedWorkspace = await Workspace.findByIdAndUpdate(id, data, {
85
- new: true,
86
- }).exec();
87
-
88
- if (updatedWorkspace) {
89
- await updateCachedWorkspaces();
90
- }
91
- return updatedWorkspace;
92
- };
93
-
94
- const updateOneWorkspace = async (filter, update, options = {}) => {
95
- const result = await Workspace.updateOne(filter, update, options).exec();
96
- if (result.matchedCount > 0) {
97
- await updateCachedWorkspaces();
98
- }
99
- return result;
100
- };
101
-
102
- const updateManyWorkspaces = async (filter, update, options = {}) => {
103
- const result = await Workspace.updateMany(filter, update, options).exec();
104
- if (result.matchedCount > 0) {
105
- await updateCachedWorkspaces();
106
- }
107
- return result;
108
- };
109
-
110
- const findOneAndUpdateWorkspace = async (
111
- filter,
112
- update,
113
- options = { new: true }
114
- ) => {
115
- const updatedWorkspace = await Workspace.findOneAndUpdate(
116
- filter,
117
- update,
118
- options
119
- ).exec();
120
- if (updatedWorkspace) {
121
- await updateCachedWorkspaces();
122
- }
123
- return updatedWorkspace;
124
- };
125
-
126
- const deleteWorkspace = async (id) => {
127
- const deletedWorkspace = await Workspace.findByIdAndDelete(id).exec();
128
- if (deletedWorkspace) {
129
- await updateCachedWorkspaces();
130
- }
131
- return deletedWorkspace;
132
- };
133
-
134
- module.exports = {
135
- createWorkspace,
136
- findWorkspace,
137
- findSingleWorkspace,
138
- findWorkspaceById,
139
- findWorkspaceByIdAndQueueTracking,
140
- findAllWorkspaces,
141
- findOneAndUpdateWorkspace,
142
- updateWorkspace,
143
- updateOneWorkspace,
144
- updateManyWorkspaces,
145
- deleteWorkspace,
146
- updateWorkspaceCache,
147
- };