nodecommons-esm-database-arangodb 0.0.2
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/index.d.mts +5 -0
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -0
- package/dist/services/commons-arangodb.service.d.mts +21 -0
- package/dist/services/commons-arangodb.service.mjs +65 -0
- package/dist/services/commons-arangodb.service.mjs.map +1 -0
- package/dist/types/tcommons-arangodb-document.d.mts +5 -0
- package/dist/types/tcommons-arangodb-document.mjs +9 -0
- package/dist/types/tcommons-arangodb-document.mjs.map +1 -0
- package/dist/types/tcommons-arangodb-edge.d.mts +6 -0
- package/dist/types/tcommons-arangodb-edge.mjs +12 -0
- package/dist/types/tcommons-arangodb-edge.mjs.map +1 -0
- package/dist/types/tcommons-arangodb-traversal-depth.d.mts +5 -0
- package/dist/types/tcommons-arangodb-traversal-depth.mjs +9 -0
- package/dist/types/tcommons-arangodb-traversal-depth.mjs.map +1 -0
- package/package.json +33 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CommonsArangodbService } from './services/commons-arangodb.service.mjs';
|
|
2
|
+
import { TCommonsArangodbEdge, isTCommonsArangodbEdge } from './types/tcommons-arangodb-edge.mjs';
|
|
3
|
+
import { TCommonsArangodbDocument, isTCommonsArangodbDocument } from './types/tcommons-arangodb-document.mjs';
|
|
4
|
+
import { TCommonsArangodbTraversalDepth, isTCommonsArangodbTraversalDepth } from './types/tcommons-arangodb-traversal-depth.mjs';
|
|
5
|
+
export { CommonsArangodbService, TCommonsArangodbEdge, isTCommonsArangodbEdge, TCommonsArangodbDocument, isTCommonsArangodbDocument, TCommonsArangodbTraversalDepth, isTCommonsArangodbTraversalDepth };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CommonsArangodbService } from './services/commons-arangodb.service.mjs';
|
|
2
|
+
import { isTCommonsArangodbEdge } from './types/tcommons-arangodb-edge.mjs';
|
|
3
|
+
import { isTCommonsArangodbDocument } from './types/tcommons-arangodb-document.mjs';
|
|
4
|
+
import { isTCommonsArangodbTraversalDepth } from './types/tcommons-arangodb-traversal-depth.mjs';
|
|
5
|
+
export { CommonsArangodbService, isTCommonsArangodbEdge, isTCommonsArangodbDocument, isTCommonsArangodbTraversalDepth };
|
|
6
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAwB,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAClG,OAAO,EAA4B,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAC9G,OAAO,EAAkC,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACjI,OAAO,EACN,sBAAsB,EAEtB,sBAAsB,EAEtB,0BAA0B,EAE1B,gCAAgC,EAChC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Database } from 'arangojs';
|
|
2
|
+
import { DocumentCollection, EdgeCollection } from 'arangojs/collections';
|
|
3
|
+
import { Document } from 'arangojs/documents';
|
|
4
|
+
import { Cursor } from 'arangojs/cursors';
|
|
5
|
+
import { GeneratedAqlQuery } from 'arangojs/aql';
|
|
6
|
+
import { TPropertyObject } from 'tscommons-esm-core';
|
|
7
|
+
import { CommonsNosqlDatabaseService, ICommonsCredentials } from 'nodecommons-esm-database';
|
|
8
|
+
import { TCommonsArangodbDocument } from '../types/tcommons-arangodb-document.mjs';
|
|
9
|
+
export declare abstract class CommonsArangodbService extends CommonsNosqlDatabaseService<ICommonsCredentials> {
|
|
10
|
+
private db;
|
|
11
|
+
protected init(): Promise<void>;
|
|
12
|
+
protected getRawDb(): Database;
|
|
13
|
+
getDocumentCollection<T extends TPropertyObject>(name: string): DocumentCollection<T>;
|
|
14
|
+
getEdgeCollection<T extends TPropertyObject>(name: string): EdgeCollection<T>;
|
|
15
|
+
query<T extends TPropertyObject>(query: GeneratedAqlQuery): Promise<Cursor<T>>;
|
|
16
|
+
protected listTDocumentByQuery<T extends TPropertyObject>(query: GeneratedAqlQuery): Promise<Document<T>[]>;
|
|
17
|
+
protected getFirstTDocumentByQuery<T extends TPropertyObject>(query: GeneratedAqlQuery): Promise<Document<T> | undefined>;
|
|
18
|
+
close(): void;
|
|
19
|
+
saveDocument<T extends TPropertyObject>(document: T, collection: string): Promise<T & TCommonsArangodbDocument>;
|
|
20
|
+
removeDocument<T extends TPropertyObject>(document: T & TCommonsArangodbDocument, collection: string): Promise<boolean>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Database } from 'arangojs';
|
|
2
|
+
import { CommonsNosqlDatabaseService } from 'nodecommons-esm-database';
|
|
3
|
+
export class CommonsArangodbService extends CommonsNosqlDatabaseService {
|
|
4
|
+
db;
|
|
5
|
+
async init() {
|
|
6
|
+
this.db = new Database(`http://${this.credentials.host || 'localhost'}:${this.credentials.port || 8529}`, this.credentials.name);
|
|
7
|
+
if (this.credentials.user && this.credentials.user !== '') {
|
|
8
|
+
this.db.useBasicAuth(this.credentials.user, this.credentials.password);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
getRawDb() {
|
|
12
|
+
if (!this.db)
|
|
13
|
+
throw new Error('Database not initialised');
|
|
14
|
+
return this.db;
|
|
15
|
+
}
|
|
16
|
+
getDocumentCollection(name) {
|
|
17
|
+
if (!this.db)
|
|
18
|
+
throw new Error('The database has not been initialised yet');
|
|
19
|
+
return this.db.collection(name);
|
|
20
|
+
}
|
|
21
|
+
getEdgeCollection(name) {
|
|
22
|
+
if (!this.db)
|
|
23
|
+
throw new Error('The database has not been initialised yet');
|
|
24
|
+
return this.db.collection(name);
|
|
25
|
+
}
|
|
26
|
+
async query(query) {
|
|
27
|
+
if (!this.db)
|
|
28
|
+
throw new Error('The database has not been initialised yet');
|
|
29
|
+
return await this.db.query(query);
|
|
30
|
+
}
|
|
31
|
+
async listTDocumentByQuery(query) {
|
|
32
|
+
const cursor = await this.query(query);
|
|
33
|
+
return cursor.all();
|
|
34
|
+
}
|
|
35
|
+
async getFirstTDocumentByQuery(query) {
|
|
36
|
+
const cursor = await this.query(query);
|
|
37
|
+
if (!cursor.hasNext)
|
|
38
|
+
return undefined;
|
|
39
|
+
const next = await cursor.next();
|
|
40
|
+
if (!next)
|
|
41
|
+
return undefined;
|
|
42
|
+
return next;
|
|
43
|
+
}
|
|
44
|
+
close() {
|
|
45
|
+
if (this.db)
|
|
46
|
+
this.db.close();
|
|
47
|
+
}
|
|
48
|
+
async saveDocument(document, collection) {
|
|
49
|
+
const c = this.getDocumentCollection(collection);
|
|
50
|
+
const result = await c.save(document);
|
|
51
|
+
if (result.new)
|
|
52
|
+
return result.new;
|
|
53
|
+
return {
|
|
54
|
+
...document,
|
|
55
|
+
_id: result._id, // eslint-disable-line no-underscore-dangle
|
|
56
|
+
_key: result._key // eslint-disable-line no-underscore-dangle
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async removeDocument(document, collection) {
|
|
60
|
+
const c = this.getDocumentCollection(collection);
|
|
61
|
+
const result = await c.remove(document);
|
|
62
|
+
return result.old !== undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=commons-arangodb.service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commons-arangodb.service.mjs","sourceRoot":"","sources":["../../src/services/commons-arangodb.service.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { commonsTypeHasPropertyString } from 'tscommons-esm-core';
|
|
2
|
+
export function isTCommonsArangodbDocument(test) {
|
|
3
|
+
if (!commonsTypeHasPropertyString(test, '_id'))
|
|
4
|
+
return false;
|
|
5
|
+
if (!commonsTypeHasPropertyString(test, '_key'))
|
|
6
|
+
return false;
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=tcommons-arangodb-document.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcommons-arangodb-document.mjs","sourceRoot":"","sources":["../../src/types/tcommons-arangodb-document.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAOlE,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACvD,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9D,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TCommonsArangodbDocument } from './tcommons-arangodb-document.mjs';
|
|
2
|
+
export type TCommonsArangodbEdge = TCommonsArangodbDocument & {
|
|
3
|
+
_from: string;
|
|
4
|
+
_to: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function isTCommonsArangodbEdge(test: unknown): test is TCommonsArangodbEdge;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { commonsTypeHasPropertyString } from 'tscommons-esm-core';
|
|
2
|
+
import { isTCommonsArangodbDocument } from './tcommons-arangodb-document.mjs';
|
|
3
|
+
export function isTCommonsArangodbEdge(test) {
|
|
4
|
+
if (!isTCommonsArangodbDocument(test))
|
|
5
|
+
return false;
|
|
6
|
+
if (!commonsTypeHasPropertyString(test, '_from'))
|
|
7
|
+
return false;
|
|
8
|
+
if (!commonsTypeHasPropertyString(test, '_to'))
|
|
9
|
+
return false;
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=tcommons-arangodb-edge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcommons-arangodb-edge.mjs","sourceRoot":"","sources":["../../src/types/tcommons-arangodb-edge.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAA4B,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAOxG,MAAM,UAAU,sBAAsB,CAAC,IAAa;IACnD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpD,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { commonsTypeHasPropertyNumber } from 'tscommons-esm-core';
|
|
2
|
+
export function isTCommonsArangodbTraversalDepth(test) {
|
|
3
|
+
if (!commonsTypeHasPropertyNumber(test, 'min'))
|
|
4
|
+
return false;
|
|
5
|
+
if (!commonsTypeHasPropertyNumber(test, 'max'))
|
|
6
|
+
return false;
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=tcommons-arangodb-traversal-depth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcommons-arangodb-traversal-depth.mjs","sourceRoot":"","sources":["../../src/types/tcommons-arangodb-traversal-depth.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAOlE,MAAM,UAAU,gCAAgC,CAAC,IAAa;IAC7D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,OAAO,IAAI,CAAC;AACb,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nodecommons-esm-database-arangodb",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"tsc": "./node_modules/typescript/bin/tsc",
|
|
7
|
+
"preprepare": "rm -rf ./dist; php ~/Dev/etim.php src/ && npm run tsc",
|
|
8
|
+
"publish-major": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version major && npm install && npm publish && git add . && git commit -m 'publish'",
|
|
9
|
+
"publish-minor": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version minor && npm install && npm publish && git add . && git commit -m 'publish'",
|
|
10
|
+
"publish-patch": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version patch && npm install && npm publish && git add . && git commit -m 'publish'"
|
|
11
|
+
},
|
|
12
|
+
"main": "dist/index.mjs",
|
|
13
|
+
"types": "dist/index.d.mjs",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"author": "Pete Morris",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@stylistic/eslint-plugin-ts": "^2.11.0",
|
|
19
|
+
"@types/node": "^22.10.0",
|
|
20
|
+
"eslint-plugin-import": "^2.31.0",
|
|
21
|
+
"eslint-plugin-prefer-arrow-functions": "^3.4.1",
|
|
22
|
+
"typescript": "^5.7.2",
|
|
23
|
+
"typescript-eslint": "^8.16.0"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist/**/*"
|
|
27
|
+
],
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"arangojs": "^10.1.1",
|
|
30
|
+
"nodecommons-esm-database": "^0.0.12",
|
|
31
|
+
"tscommons-esm-core": "^0.0.5"
|
|
32
|
+
}
|
|
33
|
+
}
|