c2-mongoose 2.1.106 → 2.1.108
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.js +0 -5
- 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 +0 -5
- 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;
|
package/dist/flow/SearchFlow.js
CHANGED
|
@@ -225,11 +225,6 @@ 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:
|
|
@@ -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.108",
|
|
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
|
@@ -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 }
|