@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 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,3 @@
1
+ export declare const record: {
2
+ datastreamService: string;
3
+ };
@@ -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
@@ -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 {};