@researchdatabox/sails-hook-redbox-storage-mongo 0.0.1-beta.8936
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/README.md +25 -0
- package/dist/config/record.d.ts +3 -0
- package/dist/config/record.js +7 -0
- package/dist/config/storage.d.ts +94 -0
- package/dist/config/storage.js +24 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +31 -0
- package/dist/models/DeletedRecord.d.ts +7 -0
- package/dist/models/DeletedRecord.js +37 -0
- package/dist/models/Record.d.ts +13 -0
- package/dist/models/Record.js +64 -0
- package/dist/models/RecordAudit.d.ts +9 -0
- package/dist/models/RecordAudit.js +47 -0
- package/dist/models/index.d.ts +8 -0
- package/dist/models/index.js +29 -0
- package/dist/services/MongoStorageService.d.ts +74 -0
- package/dist/services/MongoStorageService.js +933 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.js +51 -0
- package/package.json +101 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ReDBox MongoDB Storage Plugin
|
|
2
|
+
|
|
3
|
+
This package provides the MongoDB-backed storage service, models, and config registrations for ReDBox Portal.
|
|
4
|
+
|
|
5
|
+
## Monorepo workflow
|
|
6
|
+
|
|
7
|
+
- Build the package with `npm run build`
|
|
8
|
+
- Run the package unit suite with `npm run test`
|
|
9
|
+
- Use the root aliases from the repository root when you want monorepo wiring checks:
|
|
10
|
+
- `npm run compile:storage-mongo`
|
|
11
|
+
- `npm run test:storage-mongo`
|
|
12
|
+
- End-to-end storage behaviour is covered by the root integration suites:
|
|
13
|
+
- `npm run test:mocha`
|
|
14
|
+
- `npm run test:bruno:general`
|
|
15
|
+
|
|
16
|
+
## Runtime integration
|
|
17
|
+
|
|
18
|
+
- The package builds from `src/` to `dist/`
|
|
19
|
+
- The `@researchdatabox/redbox-core` loader consumes `registerRedboxModels()`, `registerRedboxServices()`, and `registerRedboxConfig()` from the built entrypoint
|
|
20
|
+
- Service/model names remain `MongoStorageService`, `Record`, `DeletedRecord`, and `RecordAudit`
|
|
21
|
+
|
|
22
|
+
## Configuration
|
|
23
|
+
|
|
24
|
+
- The storage models use the Sails datastore named `redboxStorage`
|
|
25
|
+
- Datastore connection details still live in the host portal’s Sails config
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.record = void 0;
|
|
4
|
+
exports.record = {
|
|
5
|
+
datastreamService: 'mongostorageservice',
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsaUJBQWlCLEVBQUUscUJBQXFCO0NBQ3pDLENBQUMifQ==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export declare const storage: {
|
|
2
|
+
serviceName: string;
|
|
3
|
+
mongodb: {
|
|
4
|
+
indices: ({
|
|
5
|
+
key: {
|
|
6
|
+
harvestId: number;
|
|
7
|
+
dateCreated?: undefined;
|
|
8
|
+
lastSaveDate?: undefined;
|
|
9
|
+
'metaMetadata.brandId'?: undefined;
|
|
10
|
+
'metaMetadata.type'?: undefined;
|
|
11
|
+
'metaMetadata.createdOn'?: undefined;
|
|
12
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
13
|
+
redboxOid?: undefined;
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
key: {
|
|
17
|
+
dateCreated: number;
|
|
18
|
+
harvestId?: undefined;
|
|
19
|
+
lastSaveDate?: undefined;
|
|
20
|
+
'metaMetadata.brandId'?: undefined;
|
|
21
|
+
'metaMetadata.type'?: undefined;
|
|
22
|
+
'metaMetadata.createdOn'?: undefined;
|
|
23
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
24
|
+
redboxOid?: undefined;
|
|
25
|
+
};
|
|
26
|
+
} | {
|
|
27
|
+
key: {
|
|
28
|
+
lastSaveDate: number;
|
|
29
|
+
harvestId?: undefined;
|
|
30
|
+
dateCreated?: undefined;
|
|
31
|
+
'metaMetadata.brandId'?: undefined;
|
|
32
|
+
'metaMetadata.type'?: undefined;
|
|
33
|
+
'metaMetadata.createdOn'?: undefined;
|
|
34
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
35
|
+
redboxOid?: undefined;
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
key: {
|
|
39
|
+
'metaMetadata.brandId': number;
|
|
40
|
+
harvestId?: undefined;
|
|
41
|
+
dateCreated?: undefined;
|
|
42
|
+
lastSaveDate?: undefined;
|
|
43
|
+
'metaMetadata.type'?: undefined;
|
|
44
|
+
'metaMetadata.createdOn'?: undefined;
|
|
45
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
46
|
+
redboxOid?: undefined;
|
|
47
|
+
};
|
|
48
|
+
} | {
|
|
49
|
+
key: {
|
|
50
|
+
'metaMetadata.type': number;
|
|
51
|
+
harvestId?: undefined;
|
|
52
|
+
dateCreated?: undefined;
|
|
53
|
+
lastSaveDate?: undefined;
|
|
54
|
+
'metaMetadata.brandId'?: undefined;
|
|
55
|
+
'metaMetadata.createdOn'?: undefined;
|
|
56
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
57
|
+
redboxOid?: undefined;
|
|
58
|
+
};
|
|
59
|
+
} | {
|
|
60
|
+
key: {
|
|
61
|
+
'metaMetadata.createdOn': number;
|
|
62
|
+
harvestId?: undefined;
|
|
63
|
+
dateCreated?: undefined;
|
|
64
|
+
lastSaveDate?: undefined;
|
|
65
|
+
'metaMetadata.brandId'?: undefined;
|
|
66
|
+
'metaMetadata.type'?: undefined;
|
|
67
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
68
|
+
redboxOid?: undefined;
|
|
69
|
+
};
|
|
70
|
+
} | {
|
|
71
|
+
key: {
|
|
72
|
+
'metaMetadata.lastSaveDate': number;
|
|
73
|
+
harvestId?: undefined;
|
|
74
|
+
dateCreated?: undefined;
|
|
75
|
+
lastSaveDate?: undefined;
|
|
76
|
+
'metaMetadata.brandId'?: undefined;
|
|
77
|
+
'metaMetadata.type'?: undefined;
|
|
78
|
+
'metaMetadata.createdOn'?: undefined;
|
|
79
|
+
redboxOid?: undefined;
|
|
80
|
+
};
|
|
81
|
+
} | {
|
|
82
|
+
key: {
|
|
83
|
+
redboxOid: number;
|
|
84
|
+
harvestId?: undefined;
|
|
85
|
+
dateCreated?: undefined;
|
|
86
|
+
lastSaveDate?: undefined;
|
|
87
|
+
'metaMetadata.brandId'?: undefined;
|
|
88
|
+
'metaMetadata.type'?: undefined;
|
|
89
|
+
'metaMetadata.createdOn'?: undefined;
|
|
90
|
+
'metaMetadata.lastSaveDate'?: undefined;
|
|
91
|
+
};
|
|
92
|
+
})[];
|
|
93
|
+
};
|
|
94
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.storage = void 0;
|
|
4
|
+
exports.storage = {
|
|
5
|
+
serviceName: 'mongostorageservice',
|
|
6
|
+
mongodb: {
|
|
7
|
+
indices: [
|
|
8
|
+
{ key: { harvestId: 1 } },
|
|
9
|
+
{ key: { dateCreated: 1 } },
|
|
10
|
+
{ key: { dateCreated: -1 } },
|
|
11
|
+
{ key: { lastSaveDate: 1 } },
|
|
12
|
+
{ key: { lastSaveDate: -1 } },
|
|
13
|
+
{ key: { 'metaMetadata.brandId': 1 } },
|
|
14
|
+
{ key: { 'metaMetadata.type': 1 } },
|
|
15
|
+
{ key: { 'metaMetadata.createdOn': 1 } },
|
|
16
|
+
{ key: { 'metaMetadata.createdOn': -1 } },
|
|
17
|
+
{ key: { 'metaMetadata.lastSaveDate': 1 } },
|
|
18
|
+
{ key: { 'metaMetadata.lastSaveDate': -1 } },
|
|
19
|
+
{ key: { redboxOid: 1 } },
|
|
20
|
+
{ key: { redboxOid: -1 } },
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLE9BQU8sR0FBRztJQUNyQixXQUFXLEVBQUUscUJBQXFCO0lBQ2xDLE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRTtZQUNQLEVBQUUsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pCLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QixFQUFFLEdBQUcsRUFBRSxFQUFFLHNCQUFzQixFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLEVBQUUsR0FBRyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsRUFBRSxHQUFHLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxFQUFFLEdBQUcsRUFBRSxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDekMsRUFBRSxHQUFHLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxFQUFFLEdBQUcsRUFBRSxFQUFFLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekIsRUFBRSxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtTQUMzQjtLQUNGO0NBQ0YsQ0FBQyJ9
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SailsHook } from 'sails';
|
|
2
|
+
import { storage } from './config/storage';
|
|
3
|
+
import { record } from './config/record';
|
|
4
|
+
import { MongoModels } from './models';
|
|
5
|
+
import { ServiceExports } from './services';
|
|
6
|
+
type RedboxStorageMongoHook = ((_sails: unknown) => SailsHook) & {
|
|
7
|
+
registerRedboxModels: () => typeof MongoModels;
|
|
8
|
+
registerRedboxServices: () => typeof ServiceExports;
|
|
9
|
+
registerRedboxConfig: () => {
|
|
10
|
+
storage: typeof storage;
|
|
11
|
+
record: typeof record;
|
|
12
|
+
};
|
|
13
|
+
ServiceExports: typeof ServiceExports;
|
|
14
|
+
};
|
|
15
|
+
declare const hook: RedboxStorageMongoHook;
|
|
16
|
+
export = hook;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const storage_1 = require("./config/storage");
|
|
3
|
+
const record_1 = require("./config/record");
|
|
4
|
+
const models_1 = require("./models");
|
|
5
|
+
const services_1 = require("./services");
|
|
6
|
+
const hook = ((_sails) => ({
|
|
7
|
+
initialize(cb) {
|
|
8
|
+
cb();
|
|
9
|
+
},
|
|
10
|
+
routes: {
|
|
11
|
+
before: {},
|
|
12
|
+
after: {},
|
|
13
|
+
},
|
|
14
|
+
configure() { },
|
|
15
|
+
defaults: {},
|
|
16
|
+
}));
|
|
17
|
+
hook.registerRedboxModels = function registerRedboxModels() {
|
|
18
|
+
return models_1.MongoModels;
|
|
19
|
+
};
|
|
20
|
+
hook.registerRedboxServices = function registerRedboxServices() {
|
|
21
|
+
return services_1.ServiceExports;
|
|
22
|
+
};
|
|
23
|
+
hook.registerRedboxConfig = function registerRedboxConfig() {
|
|
24
|
+
return {
|
|
25
|
+
storage: storage_1.storage,
|
|
26
|
+
record: record_1.record,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
hook.ServiceExports = services_1.ServiceExports;
|
|
30
|
+
module.exports = hook;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLDhDQUEyQztBQUMzQyw0Q0FBeUM7QUFDekMscUNBQXVDO0FBQ3ZDLHlDQUE0QztBQVM1QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFVBQVUsQ0FBQyxFQUF5QjtRQUNsQyxFQUFFLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFDRCxNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsRUFBRTtRQUNWLEtBQUssRUFBRSxFQUFFO0tBQ1Y7SUFDRCxTQUFTLEtBQUksQ0FBQztJQUNkLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQyxDQUEyQixDQUFDO0FBRTlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLG9CQUFvQjtJQUN2RCxPQUFPLG9CQUFXLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsc0JBQXNCO0lBQzNELE9BQU8seUJBQWMsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxvQkFBb0I7SUFDdkQsT0FBTztRQUNMLE9BQU8sRUFBUCxpQkFBTztRQUNQLE1BQU0sRUFBTixlQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQWMsQ0FBQztBQUVyQyxpQkFBUyxJQUFJLENBQUMifQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export declare class DeletedRecordClass {
|
|
3
|
+
redboxOid?: string;
|
|
4
|
+
deletedRecordMetadata?: Record<string, unknown>;
|
|
5
|
+
dateDeleted: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const DeletedRecordWLDef: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DeletedRecordWLDef = exports.DeletedRecordClass = void 0;
|
|
13
|
+
require("reflect-metadata");
|
|
14
|
+
const redbox_core_1 = require("@researchdatabox/redbox-core");
|
|
15
|
+
let DeletedRecordClass = class DeletedRecordClass {
|
|
16
|
+
redboxOid;
|
|
17
|
+
deletedRecordMetadata;
|
|
18
|
+
dateDeleted;
|
|
19
|
+
};
|
|
20
|
+
exports.DeletedRecordClass = DeletedRecordClass;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, redbox_core_1.Attr)({ type: 'string', unique: true }),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], DeletedRecordClass.prototype, "redboxOid", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
27
|
+
__metadata("design:type", Object)
|
|
28
|
+
], DeletedRecordClass.prototype, "deletedRecordMetadata", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, redbox_core_1.Attr)({ type: 'string', autoCreatedAt: true }),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], DeletedRecordClass.prototype, "dateDeleted", void 0);
|
|
33
|
+
exports.DeletedRecordClass = DeletedRecordClass = __decorate([
|
|
34
|
+
(0, redbox_core_1.Entity)('deletedrecord', { datastore: 'redboxStorage' })
|
|
35
|
+
], DeletedRecordClass);
|
|
36
|
+
exports.DeletedRecordWLDef = (0, redbox_core_1.toWaterlineModelDef)(DeletedRecordClass);
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZXRlZFJlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvRGVsZXRlZFJlY29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw0QkFBMEI7QUFDMUIsOERBQWlGO0FBRzFFLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCO0lBRXRCLFNBQVMsQ0FBVTtJQUduQixxQkFBcUIsQ0FBMkI7SUFHaEQsV0FBVyxDQUFVO0NBQzdCLENBQUE7QUFUWSxnREFBa0I7QUFFdEI7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs7cURBQ2I7QUFHbkI7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7O2lFQUNnQztBQUdoRDtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDOzt1REFDbEI7NkJBUmpCLGtCQUFrQjtJQUQ5QixJQUFBLG9CQUFNLEVBQUMsZUFBZSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDO0dBQzNDLGtCQUFrQixDQVM5QjtBQUVZLFFBQUEsa0JBQWtCLEdBQUcsSUFBQSxpQ0FBbUIsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export type JsonMap = Record<string, unknown>;
|
|
3
|
+
export declare class RecordClass {
|
|
4
|
+
redboxOid?: string;
|
|
5
|
+
harvestId?: string;
|
|
6
|
+
metaMetadata?: JsonMap;
|
|
7
|
+
metadata?: JsonMap;
|
|
8
|
+
workflow?: JsonMap;
|
|
9
|
+
authorization?: JsonMap;
|
|
10
|
+
dateCreated: string;
|
|
11
|
+
lastSaveDate: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const RecordWLDef: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RecordWLDef = exports.RecordClass = void 0;
|
|
13
|
+
require("reflect-metadata");
|
|
14
|
+
const redbox_core_1 = require("@researchdatabox/redbox-core");
|
|
15
|
+
let RecordClass = class RecordClass {
|
|
16
|
+
redboxOid;
|
|
17
|
+
harvestId;
|
|
18
|
+
metaMetadata;
|
|
19
|
+
metadata;
|
|
20
|
+
workflow;
|
|
21
|
+
authorization;
|
|
22
|
+
dateCreated;
|
|
23
|
+
lastSaveDate;
|
|
24
|
+
};
|
|
25
|
+
exports.RecordClass = RecordClass;
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, redbox_core_1.Attr)({ type: 'string', unique: true }),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], RecordClass.prototype, "redboxOid", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, redbox_core_1.Attr)({ type: 'string' }),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], RecordClass.prototype, "harvestId", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
36
|
+
__metadata("design:type", Object)
|
|
37
|
+
], RecordClass.prototype, "metaMetadata", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
40
|
+
__metadata("design:type", Object)
|
|
41
|
+
], RecordClass.prototype, "metadata", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
44
|
+
__metadata("design:type", Object)
|
|
45
|
+
], RecordClass.prototype, "workflow", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], RecordClass.prototype, "authorization", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, redbox_core_1.Attr)({ type: 'string', autoCreatedAt: true }),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], RecordClass.prototype, "dateCreated", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, redbox_core_1.Attr)({ type: 'string', autoUpdatedAt: true }),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], RecordClass.prototype, "lastSaveDate", void 0);
|
|
58
|
+
exports.RecordClass = RecordClass = __decorate([
|
|
59
|
+
(0, redbox_core_1.Entity)('record', {
|
|
60
|
+
datastore: 'redboxStorage',
|
|
61
|
+
})
|
|
62
|
+
], RecordClass);
|
|
63
|
+
exports.RecordWLDef = (0, redbox_core_1.toWaterlineModelDef)(RecordClass);
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy9SZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQTBCO0FBQzFCLDhEQUFpRjtBQU8xRSxJQUFNLFdBQVcsR0FBakIsTUFBTSxXQUFXO0lBRWYsU0FBUyxDQUFVO0lBR25CLFNBQVMsQ0FBVTtJQUduQixZQUFZLENBQVc7SUFHdkIsUUFBUSxDQUFXO0lBR25CLFFBQVEsQ0FBVztJQUduQixhQUFhLENBQVc7SUFHeEIsV0FBVyxDQUFVO0lBR3JCLFlBQVksQ0FBVTtDQUM5QixDQUFBO0FBeEJZLGtDQUFXO0FBRWY7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs7OENBQ2I7QUFHbkI7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7OzhDQUNDO0FBR25CO0lBRE4sSUFBQSxrQkFBSSxFQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDOztpREFDTztBQUd2QjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7NkNBQ0c7QUFHbkI7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7OzZDQUNHO0FBR25CO0lBRE4sSUFBQSxrQkFBSSxFQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDOztrREFDUTtBQUd4QjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDOztnREFDbEI7QUFHckI7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQzs7aURBQ2pCO3NCQXZCbEIsV0FBVztJQUh2QixJQUFBLG9CQUFNLEVBQUMsUUFBUSxFQUFFO1FBQ2hCLFNBQVMsRUFBRSxlQUFlO0tBQzNCLENBQUM7R0FDVyxXQUFXLENBd0J2QjtBQUVZLFFBQUEsV0FBVyxHQUFHLElBQUEsaUNBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export declare class RecordAuditClass {
|
|
3
|
+
redboxOid?: string;
|
|
4
|
+
user?: Record<string, unknown>;
|
|
5
|
+
record?: Record<string, unknown>;
|
|
6
|
+
dateCreated: string;
|
|
7
|
+
action?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const RecordAuditWLDef: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RecordAuditWLDef = exports.RecordAuditClass = void 0;
|
|
13
|
+
require("reflect-metadata");
|
|
14
|
+
const redbox_core_1 = require("@researchdatabox/redbox-core");
|
|
15
|
+
let RecordAuditClass = class RecordAuditClass {
|
|
16
|
+
redboxOid;
|
|
17
|
+
user;
|
|
18
|
+
record;
|
|
19
|
+
dateCreated;
|
|
20
|
+
action;
|
|
21
|
+
};
|
|
22
|
+
exports.RecordAuditClass = RecordAuditClass;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, redbox_core_1.Attr)({ type: 'string' }),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], RecordAuditClass.prototype, "redboxOid", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
29
|
+
__metadata("design:type", Object)
|
|
30
|
+
], RecordAuditClass.prototype, "user", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, redbox_core_1.Attr)({ type: 'json' }),
|
|
33
|
+
__metadata("design:type", Object)
|
|
34
|
+
], RecordAuditClass.prototype, "record", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, redbox_core_1.Attr)({ type: 'string', autoCreatedAt: true }),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], RecordAuditClass.prototype, "dateCreated", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, redbox_core_1.Attr)({ type: 'string' }),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], RecordAuditClass.prototype, "action", void 0);
|
|
43
|
+
exports.RecordAuditClass = RecordAuditClass = __decorate([
|
|
44
|
+
(0, redbox_core_1.Entity)('recordaudit', { datastore: 'redboxStorage' })
|
|
45
|
+
], RecordAuditClass);
|
|
46
|
+
exports.RecordAuditWLDef = (0, redbox_core_1.toWaterlineModelDef)(RecordAuditClass);
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL1JlY29yZEF1ZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDRCQUEwQjtBQUMxQiw4REFBaUY7QUFHMUUsSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBZ0I7SUFFcEIsU0FBUyxDQUFVO0lBR25CLElBQUksQ0FBMkI7SUFHL0IsTUFBTSxDQUEyQjtJQUdqQyxXQUFXLENBQVU7SUFHckIsTUFBTSxDQUFVO0NBQ3hCLENBQUE7QUFmWSw0Q0FBZ0I7QUFFcEI7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7O21EQUNDO0FBR25CO0lBRE4sSUFBQSxrQkFBSSxFQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDOzs4Q0FDZTtBQUcvQjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7Z0RBQ2lCO0FBR2pDO0lBRE4sSUFBQSxrQkFBSSxFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7O3FEQUNsQjtBQUdyQjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7Z0RBQ0Y7MkJBZFosZ0JBQWdCO0lBRDVCLElBQUEsb0JBQU0sRUFBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUM7R0FDekMsZ0JBQWdCLENBZTVCO0FBRVksUUFBQSxnQkFBZ0IsR0FBRyxJQUFBLGlDQUFtQixFQUFDLGdCQUFnQixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './Record';
|
|
2
|
+
export * from './DeletedRecord';
|
|
3
|
+
export * from './RecordAudit';
|
|
4
|
+
export declare const MongoModels: {
|
|
5
|
+
Record: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
|
|
6
|
+
DeletedRecord: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
|
|
7
|
+
RecordAudit: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
|
|
8
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MongoModels = void 0;
|
|
18
|
+
const Record_1 = require("./Record");
|
|
19
|
+
const DeletedRecord_1 = require("./DeletedRecord");
|
|
20
|
+
const RecordAudit_1 = require("./RecordAudit");
|
|
21
|
+
__exportStar(require("./Record"), exports);
|
|
22
|
+
__exportStar(require("./DeletedRecord"), exports);
|
|
23
|
+
__exportStar(require("./RecordAudit"), exports);
|
|
24
|
+
exports.MongoModels = {
|
|
25
|
+
Record: Record_1.RecordWLDef,
|
|
26
|
+
DeletedRecord: DeletedRecord_1.DeletedRecordWLDef,
|
|
27
|
+
RecordAudit: RecordAudit_1.RecordAuditWLDef,
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBQXVDO0FBQ3ZDLG1EQUFxRDtBQUNyRCwrQ0FBaUQ7QUFFakQsMkNBQXlCO0FBQ3pCLGtEQUFnQztBQUNoQyxnREFBOEI7QUFFakIsUUFBQSxXQUFXLEdBQUc7SUFDekIsTUFBTSxFQUFFLG9CQUFXO0lBQ25CLGFBQWEsRUFBRSxrQ0FBa0I7SUFDakMsV0FBVyxFQUFFLDhCQUFnQjtDQUM5QixDQUFDIn0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import mongodb = require('mongodb');
|
|
3
|
+
import type { Collection, Db, Document, FindCursor, FindOptions, GridFSFile } from 'mongodb';
|
|
4
|
+
import stream = require('stream');
|
|
5
|
+
import { Services as services, StorageManagerService as StorageManagerServiceTypes, DatastreamService, StorageService, StorageServiceResponse, DatastreamServiceResponse, Datastream, RecordAuditModel, RecordAuditParams, RecordModel, BrandingModel, UserModel, RoleModel } from '@researchdatabox/redbox-core';
|
|
6
|
+
type JsonMap = Record<string, unknown>;
|
|
7
|
+
type StorageRecord = RecordModel;
|
|
8
|
+
type MongoRecordDocument = Document;
|
|
9
|
+
type DatastreamContent = {
|
|
10
|
+
readstream?: NodeJS.ReadableStream;
|
|
11
|
+
body?: Buffer | string;
|
|
12
|
+
} & Record<string, unknown>;
|
|
13
|
+
type RelatedRecordsContext = {
|
|
14
|
+
processedRelationships: string[];
|
|
15
|
+
relatedObjects: Record<string, MongoRecordDocument[]>;
|
|
16
|
+
};
|
|
17
|
+
export declare namespace Services {
|
|
18
|
+
class MongoStorageService extends services.Core.Service implements StorageService, DatastreamService {
|
|
19
|
+
gridFsBucket: mongodb.GridFSBucket;
|
|
20
|
+
db: Db;
|
|
21
|
+
recordCol: Collection<MongoRecordDocument>;
|
|
22
|
+
deletedRecordCol: Collection<MongoRecordDocument>;
|
|
23
|
+
private _readyHookRegistered;
|
|
24
|
+
protected _exportedMethods: string[];
|
|
25
|
+
constructor();
|
|
26
|
+
private getUuid;
|
|
27
|
+
private getErrorMessage;
|
|
28
|
+
init(): void;
|
|
29
|
+
private registerReadyHook;
|
|
30
|
+
private collectionExists;
|
|
31
|
+
private performInit;
|
|
32
|
+
private createIndices;
|
|
33
|
+
create(_brand: BrandingModel, record: JsonMap, _recordType: unknown, _user?: unknown): Promise<StorageServiceResponse>;
|
|
34
|
+
updateMeta(brand: BrandingModel, oid: string, record: JsonMap, user?: UserModel): Promise<StorageServiceResponse>;
|
|
35
|
+
getMeta(oid: string): Promise<RecordModel>;
|
|
36
|
+
createBatch(type: string, data: JsonMap[], harvestIdFldName: string): Promise<unknown>;
|
|
37
|
+
provideUserAccessAndRemovePendingAccess(oid: any, userid: any, pendingValue: any): void;
|
|
38
|
+
getRelatedRecords(oid: string, brand: BrandingModel, recordTypeName?: string | null, mappingContext?: RelatedRecordsContext | null): Promise<RelatedRecordsContext>;
|
|
39
|
+
delete(oid: string, permanentlyDelete?: boolean): Promise<StorageServiceResponse>;
|
|
40
|
+
updateNotificationLog(oid: string, record: JsonMap, options: JsonMap): Promise<unknown>;
|
|
41
|
+
getDeletedRecords(workflowState: string, recordType: any, start: number, rows: number, username: string, roles: RoleModel[], brand: BrandingModel, _editAccessOnly?: any, packageType?: any, sort?: any, filterFields?: any, filterString?: any, filterMode?: string, secondarySort?: any): Promise<StorageServiceResponse>;
|
|
42
|
+
getRecords(workflowState: string, recordType: string, start: number, rows: number, username: string, roles: RoleModel[], brand: BrandingModel, _editAccessOnly?: any, packageType?: any, sort?: any, filterFields?: any, filterString?: any, filterMode?: any, secondarySort?: any): Promise<StorageServiceResponse>;
|
|
43
|
+
private escapeRegExp;
|
|
44
|
+
protected runRecordQuery(colName: any, query: any, options: any): Promise<{
|
|
45
|
+
items: mongodb.WithId<mongodb.BSON.Document>[];
|
|
46
|
+
totalItems: number;
|
|
47
|
+
}>;
|
|
48
|
+
protected runDeletedRecordQuery(colName: any, query: any, options: any): Promise<{
|
|
49
|
+
items: mongodb.WithId<mongodb.BSON.Document>[];
|
|
50
|
+
totalItems: number;
|
|
51
|
+
}>;
|
|
52
|
+
private fetchAllRecords;
|
|
53
|
+
exportAllPlans(username: any, roles: any, brand: any, format: any, modBefore: any, modAfter: any, recType: any): stream.Readable;
|
|
54
|
+
protected getRoleNames(roles: any, brand: any): any[];
|
|
55
|
+
addDatastreams(oid: string, fileIds: Datastream[]): Promise<DatastreamServiceResponse>;
|
|
56
|
+
updateDatastream(oid: string, record: StorageRecord, newMetadata: JsonMap, fileRoot: string | StorageManagerServiceTypes.Services.IDisk | null, fileIdsAdded: Datastream[]): Observable<Promise<unknown>[]>;
|
|
57
|
+
removeDatastream(oid: any, datastream: Datastream): Promise<void>;
|
|
58
|
+
addDatastream(oid: any, datastream: Datastream, stagingDisk?: StorageManagerServiceTypes.Services.IDisk): Promise<void>;
|
|
59
|
+
private streamFileToBucket;
|
|
60
|
+
addAndRemoveDatastreams(oid: any, addIds: Datastream[], removeIds: Datastream[], stagingDisk?: StorageManagerServiceTypes.Services.IDisk): Promise<void>;
|
|
61
|
+
getDatastream(oid: string, fileId: string): Promise<DatastreamContent>;
|
|
62
|
+
private getDatastreamAsync;
|
|
63
|
+
listDatastreams(oid: string, fileId?: string | null): Promise<Record<string, unknown>[]>;
|
|
64
|
+
private toJsonSafe;
|
|
65
|
+
private sanitizeRecordAudit;
|
|
66
|
+
createRecordAudit(recordAudit: RecordAuditModel): Promise<StorageServiceResponse>;
|
|
67
|
+
getRecordAudit(params: RecordAuditParams): Promise<unknown>;
|
|
68
|
+
restoreRecord(oid: string): Promise<StorageServiceResponse>;
|
|
69
|
+
destroyDeletedRecord(oid: string): Promise<StorageServiceResponse>;
|
|
70
|
+
protected getFileWithName(fileName: string, options?: FindOptions): FindCursor<GridFSFile>;
|
|
71
|
+
exists(oid: string): Promise<boolean>;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export {};
|