c2-mongoose 2.1.105 → 2.1.107
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/flow/C2Flow.d.ts +8 -0
- package/dist/flow/C2Flow.js +70 -0
- package/dist/flow/SearchFlow.d.ts +1 -5
- package/dist/flow/SearchFlow.js +13 -22
- package/dist/flow/item/BuildLogFlowItem.d.ts +7 -0
- package/dist/flow/item/BuildLogFlowItem.js +21 -0
- package/dist/model/Logger.d.ts +208 -0
- package/dist/model/Logger.js +94 -0
- package/package.json +2 -1
- package/src/flow/C2Flow.ts +40 -0
- package/src/flow/SearchFlow.ts +1 -6
- package/src/flow/item/BuildLogFlowItem.ts +16 -0
- package/src/model/Logger.ts +63 -0
- package/src/types/Options.d.ts +8 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import mongoose from "mongoose";
|
|
2
|
+
import { Options } from "../types/Options";
|
|
3
|
+
declare class C2Flow<D> {
|
|
4
|
+
private repository;
|
|
5
|
+
constructor(repository: mongoose.Model<any>);
|
|
6
|
+
create(data: Partial<D>, options: Partial<Options>): Promise<any[]>;
|
|
7
|
+
}
|
|
8
|
+
export default C2Flow;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
var Logger_1 = require("../model/Logger");
|
|
43
|
+
var BuildLogFlowItem_1 = __importDefault(require("./item/BuildLogFlowItem"));
|
|
44
|
+
var C2Flow = /** @class */ (function () {
|
|
45
|
+
function C2Flow(repository) {
|
|
46
|
+
this.repository = repository;
|
|
47
|
+
}
|
|
48
|
+
C2Flow.prototype.create = function (data, options) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50
|
+
var dataAfter, log;
|
|
51
|
+
return __generator(this, function (_a) {
|
|
52
|
+
switch (_a.label) {
|
|
53
|
+
case 0: return [4 /*yield*/, this.repository.create([data], { session: options.session })];
|
|
54
|
+
case 1:
|
|
55
|
+
dataAfter = _a.sent();
|
|
56
|
+
if (options.logger === false) {
|
|
57
|
+
return [2 /*return*/, dataAfter];
|
|
58
|
+
}
|
|
59
|
+
log = BuildLogFlowItem_1.default.build(options, dataAfter, Logger_1.TypeOfOperation.CREATE);
|
|
60
|
+
return [4 /*yield*/, Logger_1.LoggerRepository.create([log], { session: options.session })];
|
|
61
|
+
case 2:
|
|
62
|
+
_a.sent();
|
|
63
|
+
return [2 /*return*/, dataAfter];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
return C2Flow;
|
|
69
|
+
}());
|
|
70
|
+
exports.default = C2Flow;
|
|
@@ -23,11 +23,7 @@ declare abstract class SearchFlow {
|
|
|
23
23
|
buildPath(target: string, nested?: string): any;
|
|
24
24
|
buildOrdenation(): any;
|
|
25
25
|
buildRegex(searchText: string): RegExp;
|
|
26
|
-
searchPageable(model: mongoose.Model<any>, options: SearchOptions): Promise<
|
|
27
|
-
items: any;
|
|
28
|
-
paging: any;
|
|
29
|
-
metadata: any;
|
|
30
|
-
}>;
|
|
26
|
+
searchPageable(model: mongoose.Model<any>, options: SearchOptions): Promise<any>;
|
|
31
27
|
search(model: mongoose.Model<any>, options?: SearchOptions): Promise<SearchResponse<any>>;
|
|
32
28
|
/**
|
|
33
29
|
*
|
package/dist/flow/SearchFlow.js
CHANGED
|
@@ -185,11 +185,11 @@ var SearchFlow = /** @class */ (function () {
|
|
|
185
185
|
return new RegExp("".concat(regexExpression), 'i');
|
|
186
186
|
};
|
|
187
187
|
SearchFlow.prototype.searchPageable = function (model, options) {
|
|
188
|
-
var _a
|
|
188
|
+
var _a;
|
|
189
189
|
return __awaiter(this, void 0, void 0, function () {
|
|
190
|
-
var stagesItems, stagesPaging, stagesMetadata, facet, _i, stagesMetadata_1, metadata, result, items,
|
|
191
|
-
return __generator(this, function (
|
|
192
|
-
switch (
|
|
190
|
+
var stagesItems, stagesPaging, stagesMetadata, facet, _i, stagesMetadata_1, metadata, result, items, _b, _c, populate;
|
|
191
|
+
return __generator(this, function (_d) {
|
|
192
|
+
switch (_d.label) {
|
|
193
193
|
case 0:
|
|
194
194
|
stagesItems = [{ $match: this.filters }];
|
|
195
195
|
if ((0, Utils_1.isNotEmpty)(options.unions)) {
|
|
@@ -225,34 +225,25 @@ var SearchFlow = /** @class */ (function () {
|
|
|
225
225
|
return [4 /*yield*/, model.aggregate([
|
|
226
226
|
{
|
|
227
227
|
$facet: facet
|
|
228
|
-
// {
|
|
229
|
-
// items: stagesItems,
|
|
230
|
-
// paging: stagesPaging,
|
|
231
|
-
// metadata: stagesMetadata
|
|
232
|
-
// }
|
|
233
228
|
},
|
|
234
229
|
]).session(options === null || options === void 0 ? void 0 : options.session)];
|
|
235
230
|
case 1:
|
|
236
|
-
result =
|
|
231
|
+
result = _d.sent();
|
|
237
232
|
items = result[0].items;
|
|
238
233
|
if (!((0, Utils_1.isNotEmpty)(this.populate) && Array.isArray(this.populate))) return [3 /*break*/, 5];
|
|
239
|
-
|
|
240
|
-
|
|
234
|
+
_b = 0, _c = this.populate;
|
|
235
|
+
_d.label = 2;
|
|
241
236
|
case 2:
|
|
242
|
-
if (!(
|
|
243
|
-
populate =
|
|
237
|
+
if (!(_b < _c.length)) return [3 /*break*/, 5];
|
|
238
|
+
populate = _c[_b];
|
|
244
239
|
return [4 /*yield*/, model.populate(result[0].items, populate)];
|
|
245
240
|
case 3:
|
|
246
|
-
items =
|
|
247
|
-
|
|
241
|
+
items = _d.sent();
|
|
242
|
+
_d.label = 4;
|
|
248
243
|
case 4:
|
|
249
|
-
|
|
244
|
+
_b++;
|
|
250
245
|
return [3 /*break*/, 2];
|
|
251
|
-
case 5: return [2 /*return*/, {
|
|
252
|
-
items: items,
|
|
253
|
-
paging: ((_a = result[0]) === null || _a === void 0 ? void 0 : _a.paging[0]) || { total: 0, page: 1, limit: this.limit },
|
|
254
|
-
metadata: ((_b = result[0]) === null || _b === void 0 ? void 0 : _b.metadata[0]) || undefined
|
|
255
|
-
}];
|
|
246
|
+
case 5: return [2 /*return*/, __assign(__assign({}, result[0]), { items: items, paging: ((_a = result[0]) === null || _a === void 0 ? void 0 : _a.paging[0]) || { total: 0, page: 1, limit: this.limit } })];
|
|
256
247
|
}
|
|
257
248
|
});
|
|
258
249
|
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ILogger, TypeOfOperation } from "../../model/Logger";
|
|
2
|
+
import { Options } from "../../types/Options";
|
|
3
|
+
declare class BuildLogFlowItem {
|
|
4
|
+
build(options: Partial<Options>, dataAfter: any[], operation: TypeOfOperation): Partial<ILogger>;
|
|
5
|
+
}
|
|
6
|
+
declare const _default: BuildLogFlowItem;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var express_http_context_1 = __importDefault(require("express-http-context"));
|
|
7
|
+
var BuildLogFlowItem = /** @class */ (function () {
|
|
8
|
+
function BuildLogFlowItem() {
|
|
9
|
+
}
|
|
10
|
+
BuildLogFlowItem.prototype.build = function (options, dataAfter, operation) {
|
|
11
|
+
var _a;
|
|
12
|
+
return {
|
|
13
|
+
user: (_a = options.owner) !== null && _a !== void 0 ? _a : express_http_context_1.default.get("user")._id,
|
|
14
|
+
owner: options.owner,
|
|
15
|
+
data: dataAfter,
|
|
16
|
+
operation: operation
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
return BuildLogFlowItem;
|
|
20
|
+
}());
|
|
21
|
+
exports.default = new BuildLogFlowItem;
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import moment from 'moment';
|
|
2
|
+
import mongoose, { Types } from 'mongoose';
|
|
3
|
+
import SearchFlow from '../flow/SearchFlow';
|
|
4
|
+
declare enum TypeOfOperation {
|
|
5
|
+
"CREATE" = "CREATE",
|
|
6
|
+
"UPDATE" = "UPDATE",
|
|
7
|
+
"DELETE" = "DELETE"
|
|
8
|
+
}
|
|
9
|
+
interface ILogger {
|
|
10
|
+
owner: Types.ObjectId;
|
|
11
|
+
user: Types.ObjectId;
|
|
12
|
+
createdAtDateTime: moment.Moment;
|
|
13
|
+
operation: TypeOfOperation;
|
|
14
|
+
data: any;
|
|
15
|
+
}
|
|
16
|
+
declare const LoggerModel: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, mongoose.ResolveSchemaOptions<{
|
|
17
|
+
timestamps: {
|
|
18
|
+
createdAt: string;
|
|
19
|
+
};
|
|
20
|
+
}>, {
|
|
21
|
+
owner: {
|
|
22
|
+
prototype?: Types.ObjectId | undefined;
|
|
23
|
+
cacheHexString?: unknown;
|
|
24
|
+
generate?: {} | undefined;
|
|
25
|
+
createFromTime?: {} | undefined;
|
|
26
|
+
createFromHexString?: {} | undefined;
|
|
27
|
+
isValid?: {} | undefined;
|
|
28
|
+
};
|
|
29
|
+
user: {
|
|
30
|
+
prototype?: Types.ObjectId | undefined;
|
|
31
|
+
cacheHexString?: unknown;
|
|
32
|
+
generate?: {} | undefined;
|
|
33
|
+
createFromTime?: {} | undefined;
|
|
34
|
+
createFromHexString?: {} | undefined;
|
|
35
|
+
isValid?: {} | undefined;
|
|
36
|
+
};
|
|
37
|
+
operation: string;
|
|
38
|
+
data?: any;
|
|
39
|
+
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
|
|
40
|
+
owner: {
|
|
41
|
+
prototype?: Types.ObjectId | undefined;
|
|
42
|
+
cacheHexString?: unknown;
|
|
43
|
+
generate?: {} | undefined;
|
|
44
|
+
createFromTime?: {} | undefined;
|
|
45
|
+
createFromHexString?: {} | undefined;
|
|
46
|
+
isValid?: {} | undefined;
|
|
47
|
+
};
|
|
48
|
+
user: {
|
|
49
|
+
prototype?: Types.ObjectId | undefined;
|
|
50
|
+
cacheHexString?: unknown;
|
|
51
|
+
generate?: {} | undefined;
|
|
52
|
+
createFromTime?: {} | undefined;
|
|
53
|
+
createFromHexString?: {} | undefined;
|
|
54
|
+
isValid?: {} | undefined;
|
|
55
|
+
};
|
|
56
|
+
operation: string;
|
|
57
|
+
data?: any;
|
|
58
|
+
}>> & Omit<mongoose.FlatRecord<{
|
|
59
|
+
owner: {
|
|
60
|
+
prototype?: Types.ObjectId | undefined;
|
|
61
|
+
cacheHexString?: unknown;
|
|
62
|
+
generate?: {} | undefined;
|
|
63
|
+
createFromTime?: {} | undefined;
|
|
64
|
+
createFromHexString?: {} | undefined;
|
|
65
|
+
isValid?: {} | undefined;
|
|
66
|
+
};
|
|
67
|
+
user: {
|
|
68
|
+
prototype?: Types.ObjectId | undefined;
|
|
69
|
+
cacheHexString?: unknown;
|
|
70
|
+
generate?: {} | undefined;
|
|
71
|
+
createFromTime?: {} | undefined;
|
|
72
|
+
createFromHexString?: {} | undefined;
|
|
73
|
+
isValid?: {} | undefined;
|
|
74
|
+
};
|
|
75
|
+
operation: string;
|
|
76
|
+
data?: any;
|
|
77
|
+
}> & {
|
|
78
|
+
_id: Types.ObjectId;
|
|
79
|
+
}, never>>;
|
|
80
|
+
declare class LoggerSearch extends SearchFlow {
|
|
81
|
+
model: Partial<ILogger>;
|
|
82
|
+
constructor(params: any);
|
|
83
|
+
buildFilters(): void;
|
|
84
|
+
}
|
|
85
|
+
declare const LoggerRepository: mongoose.Model<{
|
|
86
|
+
owner: {
|
|
87
|
+
prototype?: Types.ObjectId | undefined;
|
|
88
|
+
cacheHexString?: unknown;
|
|
89
|
+
generate?: {} | undefined;
|
|
90
|
+
createFromTime?: {} | undefined;
|
|
91
|
+
createFromHexString?: {} | undefined;
|
|
92
|
+
isValid?: {} | undefined;
|
|
93
|
+
};
|
|
94
|
+
user: {
|
|
95
|
+
prototype?: Types.ObjectId | undefined;
|
|
96
|
+
cacheHexString?: unknown;
|
|
97
|
+
generate?: {} | undefined;
|
|
98
|
+
createFromTime?: {} | undefined;
|
|
99
|
+
createFromHexString?: {} | undefined;
|
|
100
|
+
isValid?: {} | undefined;
|
|
101
|
+
};
|
|
102
|
+
operation: string;
|
|
103
|
+
data?: any;
|
|
104
|
+
}, {}, {}, {}, mongoose.Document<unknown, {}, {
|
|
105
|
+
owner: {
|
|
106
|
+
prototype?: Types.ObjectId | undefined;
|
|
107
|
+
cacheHexString?: unknown;
|
|
108
|
+
generate?: {} | undefined;
|
|
109
|
+
createFromTime?: {} | undefined;
|
|
110
|
+
createFromHexString?: {} | undefined;
|
|
111
|
+
isValid?: {} | undefined;
|
|
112
|
+
};
|
|
113
|
+
user: {
|
|
114
|
+
prototype?: Types.ObjectId | undefined;
|
|
115
|
+
cacheHexString?: unknown;
|
|
116
|
+
generate?: {} | undefined;
|
|
117
|
+
createFromTime?: {} | undefined;
|
|
118
|
+
createFromHexString?: {} | undefined;
|
|
119
|
+
isValid?: {} | undefined;
|
|
120
|
+
};
|
|
121
|
+
operation: string;
|
|
122
|
+
data?: any;
|
|
123
|
+
}> & Omit<{
|
|
124
|
+
owner: {
|
|
125
|
+
prototype?: Types.ObjectId | undefined;
|
|
126
|
+
cacheHexString?: unknown;
|
|
127
|
+
generate?: {} | undefined;
|
|
128
|
+
createFromTime?: {} | undefined;
|
|
129
|
+
createFromHexString?: {} | undefined;
|
|
130
|
+
isValid?: {} | undefined;
|
|
131
|
+
};
|
|
132
|
+
user: {
|
|
133
|
+
prototype?: Types.ObjectId | undefined;
|
|
134
|
+
cacheHexString?: unknown;
|
|
135
|
+
generate?: {} | undefined;
|
|
136
|
+
createFromTime?: {} | undefined;
|
|
137
|
+
createFromHexString?: {} | undefined;
|
|
138
|
+
isValid?: {} | undefined;
|
|
139
|
+
};
|
|
140
|
+
operation: string;
|
|
141
|
+
data?: any;
|
|
142
|
+
} & {
|
|
143
|
+
_id: Types.ObjectId;
|
|
144
|
+
}, never>, mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, mongoose.ResolveSchemaOptions<{
|
|
145
|
+
timestamps: {
|
|
146
|
+
createdAt: string;
|
|
147
|
+
};
|
|
148
|
+
}>, {
|
|
149
|
+
owner: {
|
|
150
|
+
prototype?: Types.ObjectId | undefined;
|
|
151
|
+
cacheHexString?: unknown;
|
|
152
|
+
generate?: {} | undefined;
|
|
153
|
+
createFromTime?: {} | undefined;
|
|
154
|
+
createFromHexString?: {} | undefined;
|
|
155
|
+
isValid?: {} | undefined;
|
|
156
|
+
};
|
|
157
|
+
user: {
|
|
158
|
+
prototype?: Types.ObjectId | undefined;
|
|
159
|
+
cacheHexString?: unknown;
|
|
160
|
+
generate?: {} | undefined;
|
|
161
|
+
createFromTime?: {} | undefined;
|
|
162
|
+
createFromHexString?: {} | undefined;
|
|
163
|
+
isValid?: {} | undefined;
|
|
164
|
+
};
|
|
165
|
+
operation: string;
|
|
166
|
+
data?: any;
|
|
167
|
+
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
|
|
168
|
+
owner: {
|
|
169
|
+
prototype?: Types.ObjectId | undefined;
|
|
170
|
+
cacheHexString?: unknown;
|
|
171
|
+
generate?: {} | undefined;
|
|
172
|
+
createFromTime?: {} | undefined;
|
|
173
|
+
createFromHexString?: {} | undefined;
|
|
174
|
+
isValid?: {} | undefined;
|
|
175
|
+
};
|
|
176
|
+
user: {
|
|
177
|
+
prototype?: Types.ObjectId | undefined;
|
|
178
|
+
cacheHexString?: unknown;
|
|
179
|
+
generate?: {} | undefined;
|
|
180
|
+
createFromTime?: {} | undefined;
|
|
181
|
+
createFromHexString?: {} | undefined;
|
|
182
|
+
isValid?: {} | undefined;
|
|
183
|
+
};
|
|
184
|
+
operation: string;
|
|
185
|
+
data?: any;
|
|
186
|
+
}>> & Omit<mongoose.FlatRecord<{
|
|
187
|
+
owner: {
|
|
188
|
+
prototype?: Types.ObjectId | undefined;
|
|
189
|
+
cacheHexString?: unknown;
|
|
190
|
+
generate?: {} | undefined;
|
|
191
|
+
createFromTime?: {} | undefined;
|
|
192
|
+
createFromHexString?: {} | undefined;
|
|
193
|
+
isValid?: {} | undefined;
|
|
194
|
+
};
|
|
195
|
+
user: {
|
|
196
|
+
prototype?: Types.ObjectId | undefined;
|
|
197
|
+
cacheHexString?: unknown;
|
|
198
|
+
generate?: {} | undefined;
|
|
199
|
+
createFromTime?: {} | undefined;
|
|
200
|
+
createFromHexString?: {} | undefined;
|
|
201
|
+
isValid?: {} | undefined;
|
|
202
|
+
};
|
|
203
|
+
operation: string;
|
|
204
|
+
data?: any;
|
|
205
|
+
}> & {
|
|
206
|
+
_id: Types.ObjectId;
|
|
207
|
+
}, never>>>;
|
|
208
|
+
export { ILogger, TypeOfOperation, LoggerModel, LoggerRepository, LoggerSearch };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.LoggerSearch = exports.LoggerRepository = exports.LoggerModel = exports.TypeOfOperation = void 0;
|
|
45
|
+
var mongoose_1 = __importStar(require("mongoose"));
|
|
46
|
+
var SearchFlow_1 = __importDefault(require("../flow/SearchFlow"));
|
|
47
|
+
var Utils_1 = require("../utils/Utils");
|
|
48
|
+
var TypeOfOperation;
|
|
49
|
+
(function (TypeOfOperation) {
|
|
50
|
+
TypeOfOperation["CREATE"] = "CREATE";
|
|
51
|
+
TypeOfOperation["UPDATE"] = "UPDATE";
|
|
52
|
+
TypeOfOperation["DELETE"] = "DELETE";
|
|
53
|
+
})(TypeOfOperation || (TypeOfOperation = {}));
|
|
54
|
+
exports.TypeOfOperation = TypeOfOperation;
|
|
55
|
+
var LoggerModel = new mongoose_1.Schema({
|
|
56
|
+
owner: { type: mongoose_1.Types.ObjectId, required: true, immutable: true },
|
|
57
|
+
user: { type: mongoose_1.Types.ObjectId, required: true, immutable: true },
|
|
58
|
+
operation: { type: String, enum: TypeOfOperation, required: true, immutable: true },
|
|
59
|
+
data: { type: mongoose_1.default.Schema.Types.Mixed, immutable: true }
|
|
60
|
+
}, {
|
|
61
|
+
timestamps: { createdAt: 'createdAtDateTime' }
|
|
62
|
+
});
|
|
63
|
+
exports.LoggerModel = LoggerModel;
|
|
64
|
+
var LoggerSearch = /** @class */ (function (_super) {
|
|
65
|
+
__extends(LoggerSearch, _super);
|
|
66
|
+
function LoggerSearch(params) {
|
|
67
|
+
var _this = _super.call(this, params) || this;
|
|
68
|
+
_this.model = params;
|
|
69
|
+
_this.buildFilters();
|
|
70
|
+
return _this;
|
|
71
|
+
}
|
|
72
|
+
LoggerSearch.prototype.buildFilters = function () {
|
|
73
|
+
var filters = this.buildDefaultFilters(this);
|
|
74
|
+
if ((0, Utils_1.isEmpty)(filters.$and)) {
|
|
75
|
+
filters = { $and: [] };
|
|
76
|
+
}
|
|
77
|
+
if ((0, Utils_1.isNotEmpty)(this.searchText)) {
|
|
78
|
+
var regex = this.buildRegex(this.searchText);
|
|
79
|
+
var condition = {
|
|
80
|
+
$or: [
|
|
81
|
+
// { 'name': { $regex: regex } },
|
|
82
|
+
]
|
|
83
|
+
};
|
|
84
|
+
filters.$and.push(condition);
|
|
85
|
+
}
|
|
86
|
+
if (filters.$and.length === 0)
|
|
87
|
+
delete filters['$and'];
|
|
88
|
+
this.filters = filters;
|
|
89
|
+
};
|
|
90
|
+
return LoggerSearch;
|
|
91
|
+
}(SearchFlow_1.default));
|
|
92
|
+
exports.LoggerSearch = LoggerSearch;
|
|
93
|
+
var LoggerRepository = (0, mongoose_1.model)('c2-mongoose-logger', LoggerModel);
|
|
94
|
+
exports.LoggerRepository = LoggerRepository;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "c2-mongoose",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.107",
|
|
4
4
|
"description": "Lib to make any search in database mongoose and use as basic crud",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"homepage": "https://gitlab.com/cabral_consultoria/c2-mongoose#readme",
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"dotenv": "^16.0.3",
|
|
32
|
+
"express-http-context": "^1.2.4",
|
|
32
33
|
"moment": "^2.29.4",
|
|
33
34
|
"mongoose": "^7.0.1"
|
|
34
35
|
},
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
import mongoose from "mongoose"
|
|
3
|
+
import { ILogger, LoggerRepository, TypeOfOperation } from "../model/Logger"
|
|
4
|
+
import { Options } from "../types/Options"
|
|
5
|
+
import BuildLogFlowItem from "./item/BuildLogFlowItem"
|
|
6
|
+
|
|
7
|
+
class C2Flow<D> {
|
|
8
|
+
|
|
9
|
+
private repository: mongoose.Model<any>
|
|
10
|
+
|
|
11
|
+
constructor(repository: mongoose.Model<any>) {
|
|
12
|
+
this.repository = repository
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public async create(data: Partial<D>, options: Partial<Options>) {
|
|
16
|
+
let dataAfter = await this.repository.create([data], { session: options.session })
|
|
17
|
+
|
|
18
|
+
if (options.logger === false) {
|
|
19
|
+
return dataAfter
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let log: Partial<ILogger> = BuildLogFlowItem.build(options, dataAfter, TypeOfOperation.CREATE)
|
|
23
|
+
await LoggerRepository.create([log], { session: options.session })
|
|
24
|
+
|
|
25
|
+
return dataAfter
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// public async updateById(id: Types.ObjectId, data: any, session: any = undefined): Promise<D> {
|
|
30
|
+
// const dataAfter = await this.repository.findByIdAndUpdate(id, data, { returnDocument: 'after', session })
|
|
31
|
+
// return dataAfter as D
|
|
32
|
+
// }
|
|
33
|
+
|
|
34
|
+
// public async updateByModel(searcher: SearchFlow, data: any, params: any): Promise<D> {
|
|
35
|
+
// const dataAfter = await this.repository.findOneAndUpdate(searcher.filters, data, params)
|
|
36
|
+
// return dataAfter as D
|
|
37
|
+
// }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default C2Flow
|
package/src/flow/SearchFlow.ts
CHANGED
|
@@ -171,11 +171,6 @@ abstract class SearchFlow {
|
|
|
171
171
|
[
|
|
172
172
|
{
|
|
173
173
|
$facet: facet
|
|
174
|
-
// {
|
|
175
|
-
// items: stagesItems,
|
|
176
|
-
// paging: stagesPaging,
|
|
177
|
-
// metadata: stagesMetadata
|
|
178
|
-
// }
|
|
179
174
|
},
|
|
180
175
|
]
|
|
181
176
|
).session(options?.session as ClientSession)
|
|
@@ -189,9 +184,9 @@ abstract class SearchFlow {
|
|
|
189
184
|
}
|
|
190
185
|
|
|
191
186
|
return {
|
|
187
|
+
...result[0],
|
|
192
188
|
items,
|
|
193
189
|
paging: result[0]?.paging[0] || { total: 0, page: 1, limit: this.limit },
|
|
194
|
-
metadata: result[0]?.metadata[0] || undefined
|
|
195
190
|
}
|
|
196
191
|
}
|
|
197
192
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import httpContext from "express-http-context"
|
|
2
|
+
import { ILogger, TypeOfOperation } from "../../model/Logger"
|
|
3
|
+
import { Options } from "../../types/Options"
|
|
4
|
+
|
|
5
|
+
class BuildLogFlowItem {
|
|
6
|
+
build(options: Partial<Options>, dataAfter: any[], operation: TypeOfOperation): Partial<ILogger> {
|
|
7
|
+
return {
|
|
8
|
+
user: options.owner ?? httpContext.get("user")._id,
|
|
9
|
+
owner: options.owner,
|
|
10
|
+
data: dataAfter,
|
|
11
|
+
operation
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default new BuildLogFlowItem
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import moment from 'moment'
|
|
2
|
+
import mongoose, { Schema, Types, model } from 'mongoose'
|
|
3
|
+
import SearchFlow from '../flow/SearchFlow'
|
|
4
|
+
import { isEmpty, isNotEmpty } from '../utils/Utils'
|
|
5
|
+
|
|
6
|
+
enum TypeOfOperation {
|
|
7
|
+
"CREATE" = "CREATE",
|
|
8
|
+
"UPDATE" = "UPDATE",
|
|
9
|
+
"DELETE" = "DELETE",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface ILogger {
|
|
13
|
+
owner: Types.ObjectId
|
|
14
|
+
user: Types.ObjectId
|
|
15
|
+
createdAtDateTime: moment.Moment
|
|
16
|
+
operation: TypeOfOperation
|
|
17
|
+
data: any
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const LoggerModel = new Schema({
|
|
21
|
+
owner: { type: Types.ObjectId, required: true, immutable: true },
|
|
22
|
+
user: { type: Types.ObjectId, required: true, immutable: true },
|
|
23
|
+
operation: { type: String, enum: TypeOfOperation, required: true, immutable: true },
|
|
24
|
+
data: { type: mongoose.Schema.Types.Mixed, immutable: true }
|
|
25
|
+
}, {
|
|
26
|
+
timestamps: { createdAt: 'createdAtDateTime' }
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
class LoggerSearch extends SearchFlow {
|
|
30
|
+
model: Partial<ILogger>
|
|
31
|
+
constructor(params: any) {
|
|
32
|
+
super(params)
|
|
33
|
+
this.model = params
|
|
34
|
+
this.buildFilters()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
buildFilters() {
|
|
38
|
+
let filters = this.buildDefaultFilters(this)
|
|
39
|
+
|
|
40
|
+
if (isEmpty(filters.$and)) {
|
|
41
|
+
filters = { $and: [] } as any
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (isNotEmpty(this.searchText)) {
|
|
45
|
+
let regex = this.buildRegex(this.searchText)
|
|
46
|
+
let condition = {
|
|
47
|
+
$or: [
|
|
48
|
+
// { 'name': { $regex: regex } },
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
filters.$and.push(condition)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (filters.$and.length === 0)
|
|
55
|
+
delete filters['$and']
|
|
56
|
+
this.filters = filters
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const LoggerRepository = model('c2-mongoose-logger', LoggerModel)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
export { ILogger, TypeOfOperation, LoggerModel, LoggerRepository, LoggerSearch }
|