@encodeagent/platform-helper-data 1.2510.1041539 → 1.2510.1231638
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/{azure-cosmosdb → cosmosdb}/index.d.ts +5 -3
- package/dist/cosmosdb/index.d.ts.map +1 -0
- package/dist/{azure-cosmosdb → cosmosdb}/index.js +84 -8
- package/dist/cosmosdb/index.js.map +1 -0
- package/dist/cosmosdb/query-builder.d.ts +10 -0
- package/dist/cosmosdb/query-builder.d.ts.map +1 -0
- package/dist/cosmosdb/query-builder.js +123 -0
- package/dist/cosmosdb/query-builder.js.map +1 -0
- package/dist/{aws-dynamodb → dynamodb}/index.d.ts +3 -2
- package/dist/dynamodb/index.d.ts.map +1 -0
- package/dist/{aws-dynamodb → dynamodb}/index.js +40 -2
- package/dist/dynamodb/index.js.map +1 -0
- package/dist/firestore/index.d.ts +8 -0
- package/dist/firestore/index.d.ts.map +1 -0
- package/dist/firestore/index.js +48 -0
- package/dist/firestore/index.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -7
- package/dist/index.js.map +1 -1
- package/dist/mongodb/index.d.ts +12 -0
- package/dist/mongodb/index.d.ts.map +1 -0
- package/dist/mongodb/index.js +156 -0
- package/dist/mongodb/index.js.map +1 -0
- package/dist/util.d.ts +112 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +40 -0
- package/dist/util.js.map +1 -0
- package/dist/wrapper/index.d.ts +21 -6
- package/dist/wrapper/index.d.ts.map +1 -1
- package/dist/wrapper/index.js +143 -46
- package/dist/wrapper/index.js.map +1 -1
- package/package.json +4 -5
- package/dist/aws-dynamodb/index.d.ts.map +0 -1
- package/dist/aws-dynamodb/index.js.map +0 -1
- package/dist/azure-cosmosdb/index.d.ts.map +0 -1
- package/dist/azure-cosmosdb/index.js.map +0 -1
- package/dist/gcp-firestore/index.d.ts +0 -7
- package/dist/gcp-firestore/index.d.ts.map +0 -1
- package/dist/gcp-firestore/index.js +0 -17
- package/dist/gcp-firestore/index.js.map +0 -1
- package/dist/mongo/index.d.ts +0 -7
- package/dist/mongo/index.d.ts.map +0 -1
- package/dist/mongo/index.js +0 -17
- package/dist/mongo/index.js.map +0 -1
- package/dist/types.d.ts +0 -46
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -12
- package/dist/types.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Azure Cosmos DB implementation
|
|
3
3
|
*/
|
|
4
|
-
import { IConnectionForServiceProps, IConnectionResult, IRetrieveResult,
|
|
4
|
+
import { IConnectionForServiceProps, IConnectionResult, IRetrieveResult, ICreateResult, ICreateProps, IRetrieveProps, IQueryProps, IQueryResult } from '../util';
|
|
5
5
|
/**
|
|
6
6
|
* Create Azure Cosmos DB connection
|
|
7
7
|
* @param props Connection properties with URI and key
|
|
@@ -11,7 +11,9 @@ export declare function connect(props: IConnectionForServiceProps): Promise<ICon
|
|
|
11
11
|
/**
|
|
12
12
|
* Retrieve document by ID from Azure Cosmos DB
|
|
13
13
|
* @param props Retrieve properties with client, collection (container), and id
|
|
14
|
-
* @returns Promise<IRetrieveResult
|
|
14
|
+
* @returns Promise<IRetrieveResult>
|
|
15
15
|
*/
|
|
16
|
-
export declare function retrieve
|
|
16
|
+
export declare function retrieve(props: IRetrieveProps): Promise<IRetrieveResult>;
|
|
17
|
+
export declare function query(props: IQueryProps): Promise<IQueryResult>;
|
|
18
|
+
export declare function create(props: ICreateProps): Promise<ICreateResult>;
|
|
17
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cosmosdb/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAgB,WAAW,EAAE,YAAY,EAA2B,MAAM,SAAS,CAAC;AAMxM;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgC3F;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAgD9E;AAGD,wBAAsB,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA+CrE;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAkCxE"}
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.connect = connect;
|
|
7
7
|
exports.retrieve = retrieve;
|
|
8
|
+
exports.query = query;
|
|
9
|
+
exports.create = create;
|
|
8
10
|
const platform_helper_util_1 = require("@encodeagent/platform-helper-util");
|
|
11
|
+
const util_1 = require("../util");
|
|
9
12
|
const cosmos_1 = require("@azure/cosmos");
|
|
10
|
-
const
|
|
13
|
+
const query_builder_1 = require("./query-builder");
|
|
14
|
+
const ENGINE = "cosmosdb";
|
|
11
15
|
/**
|
|
12
16
|
* Create Azure Cosmos DB connection
|
|
13
17
|
* @param props Connection properties with URI and key
|
|
@@ -45,19 +49,22 @@ async function connect(props) {
|
|
|
45
49
|
/**
|
|
46
50
|
* Retrieve document by ID from Azure Cosmos DB
|
|
47
51
|
* @param props Retrieve properties with client, collection (container), and id
|
|
48
|
-
* @returns Promise<IRetrieveResult
|
|
52
|
+
* @returns Promise<IRetrieveResult>
|
|
49
53
|
*/
|
|
50
54
|
async function retrieve(props) {
|
|
51
55
|
try {
|
|
52
56
|
const { client, id, partitionKey, databaseId, containerId } = props;
|
|
57
|
+
const errorResult = (0, util_1.validateDatabaseSetting)({
|
|
58
|
+
databaseId,
|
|
59
|
+
containerId,
|
|
60
|
+
checkDatabaseId: true,
|
|
61
|
+
checkContainerId: true
|
|
62
|
+
});
|
|
63
|
+
if (errorResult) {
|
|
64
|
+
return errorResult;
|
|
65
|
+
}
|
|
53
66
|
// Get database and container references
|
|
54
67
|
const database = client.database(databaseId);
|
|
55
|
-
if (!databaseId) {
|
|
56
|
-
return {
|
|
57
|
-
engine: ENGINE,
|
|
58
|
-
error: 'The databaseId or process.env.DATABASE_ID is required'
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
68
|
const container = database.container(containerId);
|
|
62
69
|
if ((0, platform_helper_util_1.isNonEmptyString)(partitionKey)) {
|
|
63
70
|
const { resource: item } = await container.item(id, partitionKey).read();
|
|
@@ -88,4 +95,73 @@ async function retrieve(props) {
|
|
|
88
95
|
};
|
|
89
96
|
}
|
|
90
97
|
}
|
|
98
|
+
async function query(props) {
|
|
99
|
+
let dbQuery = undefined;
|
|
100
|
+
const { client, databaseId, containerId, query } = props;
|
|
101
|
+
try {
|
|
102
|
+
const errorResult = (0, util_1.validateDatabaseSetting)({
|
|
103
|
+
databaseId,
|
|
104
|
+
containerId,
|
|
105
|
+
checkDatabaseId: true,
|
|
106
|
+
checkContainerId: true
|
|
107
|
+
});
|
|
108
|
+
if (errorResult) {
|
|
109
|
+
return { ...errorResult, query };
|
|
110
|
+
}
|
|
111
|
+
const database = client.database(databaseId);
|
|
112
|
+
const container = database.container(containerId);
|
|
113
|
+
const dbQuery = (0, query_builder_1.processQuery)(query);
|
|
114
|
+
const { sql, parameters } = dbQuery;
|
|
115
|
+
console.log({ query, dbQuery });
|
|
116
|
+
const iterator = container.items.query({ query: sql, parameters }, {
|
|
117
|
+
enableCrossPartitionQuery: true
|
|
118
|
+
});
|
|
119
|
+
const { resources } = await iterator.fetchAll();
|
|
120
|
+
;
|
|
121
|
+
return {
|
|
122
|
+
engine: ENGINE,
|
|
123
|
+
data: resources,
|
|
124
|
+
query,
|
|
125
|
+
dbQuery
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return {
|
|
130
|
+
engine: ENGINE,
|
|
131
|
+
query,
|
|
132
|
+
dbQuery,
|
|
133
|
+
error: error instanceof Error ? error.message : 'Failed to query documents from Cosmos DB'
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async function create(props) {
|
|
138
|
+
try {
|
|
139
|
+
const { client, databaseId, containerId, record } = props;
|
|
140
|
+
const errorResult = (0, util_1.validateDatabaseSetting)({
|
|
141
|
+
databaseId,
|
|
142
|
+
containerId,
|
|
143
|
+
checkDatabaseId: true,
|
|
144
|
+
checkContainerId: true
|
|
145
|
+
});
|
|
146
|
+
if (errorResult) {
|
|
147
|
+
return errorResult;
|
|
148
|
+
}
|
|
149
|
+
const database = client.database(databaseId);
|
|
150
|
+
const container = database.container(containerId);
|
|
151
|
+
const response = await container.items.create({
|
|
152
|
+
...record,
|
|
153
|
+
id: record.id ?? (0, platform_helper_util_1.newGuid)()
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
engine: ENGINE,
|
|
157
|
+
data: response.resource
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return {
|
|
162
|
+
engine: ENGINE,
|
|
163
|
+
error: error instanceof Error ? error.message : 'Failed to create record in Cosmos DB'
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
91
167
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cosmosdb/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/cosmosdb/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAE9D,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;CAC9C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CA4InD"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processQuery = processQuery;
|
|
4
|
+
function processQuery(q) {
|
|
5
|
+
let paramCounter = 0;
|
|
6
|
+
const parameters = [];
|
|
7
|
+
const nextParam = (value) => {
|
|
8
|
+
const name = `@p${++paramCounter}`;
|
|
9
|
+
parameters.push({ name, value });
|
|
10
|
+
return name;
|
|
11
|
+
};
|
|
12
|
+
const idf = (field) => field.trim().startsWith("c.") ? field.trim() : `c.${field.trim()}`;
|
|
13
|
+
// Accept both { op: "AND", filters: [...] } and relaxed { op: "AND", [0]: {...}, [1]: {...} }
|
|
14
|
+
const normalizeFilter = (f) => {
|
|
15
|
+
if (!f)
|
|
16
|
+
return undefined;
|
|
17
|
+
if (typeof f.op === "string" &&
|
|
18
|
+
(f.op === "AND" || f.op === "OR" || f.op === "NOT")) {
|
|
19
|
+
const filtersArr = Array.isArray(f.filters)
|
|
20
|
+
? f.filters
|
|
21
|
+
: Object.keys(f)
|
|
22
|
+
.filter((k) => /^\d+$/.test(k))
|
|
23
|
+
.map((k) => f[k]);
|
|
24
|
+
return {
|
|
25
|
+
op: f.op,
|
|
26
|
+
filters: (filtersArr || [])
|
|
27
|
+
.map(normalizeFilter)
|
|
28
|
+
.filter(Boolean),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// assume simple filter
|
|
32
|
+
return f;
|
|
33
|
+
};
|
|
34
|
+
const buildSimple = (f) => {
|
|
35
|
+
const field = idf(f.name);
|
|
36
|
+
const op = f.op.toUpperCase();
|
|
37
|
+
switch (op) {
|
|
38
|
+
case "IN": {
|
|
39
|
+
const vals = Array.isArray(f.value) ? f.value : [f.value];
|
|
40
|
+
if (vals.length === 0)
|
|
41
|
+
return "1 = 0"; // empty IN -> no matches
|
|
42
|
+
const paramNames = vals.map((v) => nextParam(v));
|
|
43
|
+
return `${field} IN (${paramNames.join(", ")})`;
|
|
44
|
+
}
|
|
45
|
+
case "BETWEEN": {
|
|
46
|
+
const [lo, hi] = Array.isArray(f.value)
|
|
47
|
+
? f.value
|
|
48
|
+
: [undefined, undefined];
|
|
49
|
+
const pLo = nextParam(lo);
|
|
50
|
+
const pHi = nextParam(hi);
|
|
51
|
+
return `${field} BETWEEN ${pLo} AND ${pHi}`;
|
|
52
|
+
}
|
|
53
|
+
case "LIKE": {
|
|
54
|
+
const p = nextParam(f.value);
|
|
55
|
+
return `${field} LIKE ${p}`;
|
|
56
|
+
}
|
|
57
|
+
case "CONTAINS": {
|
|
58
|
+
const p = nextParam(f.value);
|
|
59
|
+
return `CONTAINS(${field}, ${p})`;
|
|
60
|
+
}
|
|
61
|
+
case "STARTSWITH": {
|
|
62
|
+
const p = nextParam(f.value);
|
|
63
|
+
return `STARTSWITH(${field}, ${p})`;
|
|
64
|
+
}
|
|
65
|
+
case "ENDSWITH": {
|
|
66
|
+
const p = nextParam(f.value);
|
|
67
|
+
return `ENDSWITH(${field}, ${p})`;
|
|
68
|
+
}
|
|
69
|
+
default: {
|
|
70
|
+
const p = nextParam(f.value);
|
|
71
|
+
return `${field} ${op} ${p}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const buildFilter = (node) => {
|
|
76
|
+
if (!node)
|
|
77
|
+
return undefined;
|
|
78
|
+
// Group
|
|
79
|
+
if ("filters" in node && "op" in node) {
|
|
80
|
+
const group = node;
|
|
81
|
+
if (group.op === "NOT") {
|
|
82
|
+
const inner = group.filters?.map(buildFilter).filter(Boolean);
|
|
83
|
+
if (!inner || inner.length === 0)
|
|
84
|
+
return undefined;
|
|
85
|
+
return `(NOT (${inner.join(" AND ")}))`;
|
|
86
|
+
}
|
|
87
|
+
const parts = (group.filters || [])
|
|
88
|
+
.map(buildFilter)
|
|
89
|
+
.filter(Boolean);
|
|
90
|
+
if (parts.length === 0)
|
|
91
|
+
return undefined;
|
|
92
|
+
if (parts.length === 1)
|
|
93
|
+
return parts[0];
|
|
94
|
+
return `(${parts.join(` ${group.op} `)})`;
|
|
95
|
+
}
|
|
96
|
+
// Simple
|
|
97
|
+
return buildSimple(node);
|
|
98
|
+
};
|
|
99
|
+
// SELECT
|
|
100
|
+
const cols = q.attributes && q.attributes.length > 0
|
|
101
|
+
? q.attributes.map(idf).join(", ")
|
|
102
|
+
: "c";
|
|
103
|
+
const distinct = q.distinct ? "DISTINCT " : "";
|
|
104
|
+
const top = q.top && q.top > 0 ? `TOP ${q.top} ` : "";
|
|
105
|
+
let sql = `SELECT ${distinct}${top}${cols} FROM c`;
|
|
106
|
+
// WHERE
|
|
107
|
+
const where = buildFilter(normalizeFilter(q.filter));
|
|
108
|
+
if (where)
|
|
109
|
+
sql += ` WHERE ${where}`;
|
|
110
|
+
// ORDER BY
|
|
111
|
+
if (q.orderBy && q.orderBy.length > 0) {
|
|
112
|
+
const parts = q.orderBy.map((o) => `${idf(o.name)} ${o.direction?.toUpperCase() === "DESC" ? "DESC" : "ASC"}`);
|
|
113
|
+
sql += ` ORDER BY ${parts.join(", ")}`;
|
|
114
|
+
}
|
|
115
|
+
// Pagination (Cosmos requires ORDER BY for OFFSET/LIMIT)
|
|
116
|
+
if (q.orderBy && q.orderBy.length > 0 && typeof q.pageSize === "number" && q.pageSize > 0) {
|
|
117
|
+
const page = Math.max(0, q.page ?? 0);
|
|
118
|
+
const offset = page * q.pageSize;
|
|
119
|
+
sql += ` OFFSET ${offset} LIMIT ${q.pageSize}`;
|
|
120
|
+
}
|
|
121
|
+
return { sql, parameters };
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=query-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/cosmosdb/query-builder.ts"],"names":[],"mappings":";;AAOA,oCA4IC;AA5ID,SAAgB,YAAY,CAAC,CAAS;IAClC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,UAAU,GAAmC,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,EAAE,YAAY,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE,CAC1B,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAEvE,8FAA8F;IAC9F,MAAM,eAAe,GAAG,CACpB,CAAM,EACkC,EAAE;QAC1C,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzB,IACI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;YACxB,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EACrD,CAAC;YACC,MAAM,UAAU,GAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC9C,CAAC,CAAC,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;qBACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1B,OAAO;gBACH,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;qBACtB,GAAG,CAAC,eAAe,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAwC;aAC9D,CAAC;QACN,CAAC;QAED,uBAAuB;QACvB,OAAO,CAAkB,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAgB,EAAU,EAAE;QAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAE9B,QAAQ,EAAE,EAAE,CAAC;YACT,KAAK,IAAI,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,GAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACjE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,OAAO,CAAC,CAAC,yBAAyB;gBAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,OAAO,GAAG,KAAK,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACpD,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;oBACnC,CAAC,CAAC,CAAC,CAAC,KAAK;oBACT,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC1B,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC1B,OAAO,GAAG,KAAK,YAAY,GAAG,QAAQ,GAAG,EAAE,CAAC;YAChD,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,GAAG,KAAK,SAAS,CAAC,EAAE,CAAC;YAChC,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,YAAY,KAAK,KAAK,CAAC,GAAG,CAAC;YACtC,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,cAAc,KAAK,KAAK,CAAC,GAAG,CAAC;YACxC,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,YAAY,KAAK,KAAK,CAAC,GAAG,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,GAAG,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAChB,IAAmC,EACjB,EAAE;QACpB,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,QAAQ;QACR,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAoB,CAAC;YAEnC,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACnD,OAAO,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;iBAC9B,GAAG,CAAC,WAAW,CAAC;iBAChB,MAAM,CAAC,OAAO,CAAa,CAAC;YAEjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;QAC9C,CAAC;QAED,SAAS;QACT,OAAO,WAAW,CAAC,IAAqB,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,SAAS;IACT,MAAM,IAAI,GACN,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,GAAG,CAAC;IACd,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtD,IAAI,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,GAAG,IAAI,SAAS,CAAC;IAEnD,QAAQ;IACR,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,KAAK;QAAE,GAAG,IAAI,UAAU,KAAK,EAAE,CAAC;IAEpC,WAAW;IACX,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CACpF,CAAC;QACF,GAAG,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC;QACjC,GAAG,IAAI,WAAW,MAAM,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview AWS DynamoDB implementation
|
|
3
3
|
*/
|
|
4
|
-
import { IConnectionForServiceProps, IConnectionResult, IRetrieveResult,
|
|
4
|
+
import { IConnectionForServiceProps, IConnectionResult, IRetrieveResult, IRetrieveProps, ICreateProps } from '../util';
|
|
5
5
|
/**
|
|
6
6
|
* Create AWS DynamoDB connection
|
|
7
7
|
* @param props Connection properties with URI and key
|
|
@@ -13,5 +13,6 @@ export declare function connect(props: IConnectionForServiceProps): Promise<ICon
|
|
|
13
13
|
* @param props Retrieve properties with client, collection (table), and id
|
|
14
14
|
* @returns Promise<IRetrieveResult<T>>
|
|
15
15
|
*/
|
|
16
|
-
export declare function retrieve<T>(props:
|
|
16
|
+
export declare function retrieve<T>(props: IRetrieveProps): Promise<IRetrieveResult<T>>;
|
|
17
|
+
export declare function create<T>(props: ICreateProps): Promise<IRetrieveResult<T>>;
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dynamodb/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAiB,MAAM,SAAS,CAAC;AAOtI;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmD3F;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAkCpF;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAyChF"}
|
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.connect = connect;
|
|
7
7
|
exports.retrieve = retrieve;
|
|
8
|
+
exports.create = create;
|
|
8
9
|
const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
|
|
9
10
|
const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
|
|
10
|
-
const
|
|
11
|
+
const platform_helper_util_1 = require("@encodeagent/platform-helper-util");
|
|
12
|
+
const ENGINE = "dynamodb";
|
|
11
13
|
/**
|
|
12
14
|
* Create AWS DynamoDB connection
|
|
13
15
|
* @param props Connection properties with URI and key
|
|
@@ -18,7 +20,7 @@ async function connect(props) {
|
|
|
18
20
|
const { uri, key } = props;
|
|
19
21
|
if (!uri) {
|
|
20
22
|
return {
|
|
21
|
-
engine: "
|
|
23
|
+
engine: "dynamodb",
|
|
22
24
|
error: 'AWS DynamoDB URI is required'
|
|
23
25
|
};
|
|
24
26
|
}
|
|
@@ -93,4 +95,40 @@ async function retrieve(props) {
|
|
|
93
95
|
};
|
|
94
96
|
}
|
|
95
97
|
}
|
|
98
|
+
async function create(props) {
|
|
99
|
+
try {
|
|
100
|
+
const { client, containerId, record } = props;
|
|
101
|
+
if (!containerId) {
|
|
102
|
+
return {
|
|
103
|
+
engine: ENGINE,
|
|
104
|
+
error: 'The containerId (table name) is required'
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (!record) {
|
|
108
|
+
return {
|
|
109
|
+
engine: ENGINE,
|
|
110
|
+
error: 'The record is required'
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const item = {
|
|
114
|
+
...record,
|
|
115
|
+
id: record.id ?? (0, platform_helper_util_1.newGuid)()
|
|
116
|
+
};
|
|
117
|
+
const command = new client_dynamodb_1.PutItemCommand({
|
|
118
|
+
TableName: containerId,
|
|
119
|
+
Item: (0, util_dynamodb_1.marshall)(item)
|
|
120
|
+
});
|
|
121
|
+
await client.send(command);
|
|
122
|
+
return {
|
|
123
|
+
engine: ENGINE,
|
|
124
|
+
data: item
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
return {
|
|
129
|
+
engine: ENGINE,
|
|
130
|
+
error: error instanceof Error ? error.message : 'Failed to create record in DynamoDB'
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
96
134
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dynamodb/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview GCP Firestore implementation
|
|
3
|
+
*/
|
|
4
|
+
import { IConnectionForServiceProps, IConnectionResult, IRetrieveResult, IRetrieveProps, ICreateProps, ICreateResult } from '../util';
|
|
5
|
+
export declare function connect(props: IConnectionForServiceProps): Promise<IConnectionResult>;
|
|
6
|
+
export declare function retrieve<T>(props: IRetrieveProps): Promise<IRetrieveResult<T>>;
|
|
7
|
+
export declare function create<T>(props: ICreateProps): Promise<ICreateResult<T>>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/firestore/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAItI,wBAAsB,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAG3F;AAGD,wBAAsB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAGpF;AAGD,wBAAsB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAgC9E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview GCP Firestore implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.connect = connect;
|
|
7
|
+
exports.retrieve = retrieve;
|
|
8
|
+
exports.create = create;
|
|
9
|
+
const ENGINE = "firestore";
|
|
10
|
+
async function connect(props) {
|
|
11
|
+
// TODO: Implement GCP Firestore connection
|
|
12
|
+
throw new Error('GCP Firestore connection not implemented');
|
|
13
|
+
}
|
|
14
|
+
async function retrieve(props) {
|
|
15
|
+
// TODO: Implement GCP Firestore retrieve by ID
|
|
16
|
+
throw new Error('GCP Firestore retrieve not implemented');
|
|
17
|
+
}
|
|
18
|
+
async function create(props) {
|
|
19
|
+
try {
|
|
20
|
+
const { databaseId, containerId, record } = props;
|
|
21
|
+
if (!databaseId) {
|
|
22
|
+
return {
|
|
23
|
+
engine: ENGINE,
|
|
24
|
+
error: 'The databaseId or process.env.DATABASE_ID is required'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!containerId) {
|
|
28
|
+
return {
|
|
29
|
+
engine: ENGINE,
|
|
30
|
+
error: 'The containerId or process.env.DATABASE_CONTAINER_ID is required'
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (!record) {
|
|
34
|
+
return {
|
|
35
|
+
engine: ENGINE,
|
|
36
|
+
error: 'The record is required'
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
throw new Error('GCP Firestore create not implemented');
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
engine: ENGINE,
|
|
44
|
+
error: error instanceof Error ? error.message : 'Failed to create record in GCP Firestore'
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/firestore/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,0BAGC;AAGD,4BAGC;AAGD,wBAgCC;AA9CD,MAAM,MAAM,GAAG,WAAW,CAAC;AAEpB,KAAK,UAAU,OAAO,CAAC,KAAiC;IAC3D,2CAA2C;IAC3C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAChE,CAAC;AAGM,KAAK,UAAU,QAAQ,CAAI,KAAqB;IACnD,+CAA+C;IAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC9D,CAAC;AAGM,KAAK,UAAU,MAAM,CAAI,KAAmB;IAC/C,IAAI,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAElD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;gBACH,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,uDAAuD;aACjE,CAAC;QACN,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO;gBACH,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,kEAAkE;aAC5E,CAAC;QACN,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;gBACH,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,wBAAwB;aAClC,CAAC;QACN,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C;SAC7F,CAAC;IACN,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Main export file for @encodeagent/platform-helper-data
|
|
3
3
|
*/
|
|
4
|
-
export { connect, retrieve } from './wrapper';
|
|
5
|
-
export type { TDatabaseEngine, IConnectionResult, IRetrieveResult,
|
|
6
|
-
export { ENGINE, URI, KEY, DATABASE_ID,
|
|
4
|
+
export { connect, retrieve, create } from './wrapper';
|
|
5
|
+
export type { TDatabaseEngine, IConnectionResult, IRetrieveResult, IRetrieveProps, IConnectionForServiceProps, IConnectDatabaseError, } from './util';
|
|
6
|
+
export { ENGINE, URI, KEY, DATABASE_ID, CONTAINER_ID_FOR_DATA, CONTAINER_ID_FOR_SETTINGS } from './util';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGtD,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,GAExB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACH,MAAM,EACN,GAAG,EACH,GAAG,EACH,WAAW,EACX,qBAAqB,EACrB,yBAAyB,EAC5B,MAAM,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
* @fileoverview Main export file for @encodeagent/platform-helper-data
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.CONTAINER_ID_FOR_SETTINGS = exports.CONTAINER_ID_FOR_DATA = exports.DATABASE_ID = exports.KEY = exports.URI = exports.ENGINE = exports.create = exports.retrieve = exports.connect = void 0;
|
|
7
7
|
// Export wrapper functions (main API)
|
|
8
8
|
var wrapper_1 = require("./wrapper");
|
|
9
9
|
Object.defineProperty(exports, "connect", { enumerable: true, get: function () { return wrapper_1.connect; } });
|
|
10
10
|
Object.defineProperty(exports, "retrieve", { enumerable: true, get: function () { return wrapper_1.retrieve; } });
|
|
11
|
+
Object.defineProperty(exports, "create", { enumerable: true, get: function () { return wrapper_1.create; } });
|
|
11
12
|
// Export all constants from types.ts
|
|
12
|
-
var
|
|
13
|
-
Object.defineProperty(exports, "ENGINE", { enumerable: true, get: function () { return
|
|
14
|
-
Object.defineProperty(exports, "URI", { enumerable: true, get: function () { return
|
|
15
|
-
Object.defineProperty(exports, "KEY", { enumerable: true, get: function () { return
|
|
16
|
-
Object.defineProperty(exports, "DATABASE_ID", { enumerable: true, get: function () { return
|
|
17
|
-
Object.defineProperty(exports, "
|
|
13
|
+
var util_1 = require("./util");
|
|
14
|
+
Object.defineProperty(exports, "ENGINE", { enumerable: true, get: function () { return util_1.ENGINE; } });
|
|
15
|
+
Object.defineProperty(exports, "URI", { enumerable: true, get: function () { return util_1.URI; } });
|
|
16
|
+
Object.defineProperty(exports, "KEY", { enumerable: true, get: function () { return util_1.KEY; } });
|
|
17
|
+
Object.defineProperty(exports, "DATABASE_ID", { enumerable: true, get: function () { return util_1.DATABASE_ID; } });
|
|
18
|
+
Object.defineProperty(exports, "CONTAINER_ID_FOR_DATA", { enumerable: true, get: function () { return util_1.CONTAINER_ID_FOR_DATA; } });
|
|
19
|
+
Object.defineProperty(exports, "CONTAINER_ID_FOR_SETTINGS", { enumerable: true, get: function () { return util_1.CONTAINER_ID_FOR_SETTINGS; } });
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,sCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,sCAAsC;AACtC,qCAAsD;AAA7C,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,iGAAA,MAAM,OAAA;AAalC,qCAAqC;AACrC,+BAOgB;AANZ,8FAAA,MAAM,OAAA;AACN,2FAAA,GAAG,OAAA;AACH,2FAAA,GAAG,OAAA;AACH,mGAAA,WAAW,OAAA;AACX,6GAAA,qBAAqB,OAAA;AACrB,iHAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MongoDB implementation
|
|
3
|
+
*/
|
|
4
|
+
import { IConnectionForServiceProps, IConnectionResult, IRetrieveResult, IRetrieveProps, ICreateProps, ICreateResult } from '../util';
|
|
5
|
+
export declare function connect(props: IConnectionForServiceProps): Promise<IConnectionResult>;
|
|
6
|
+
export declare function retrieve(props: IRetrieveProps): Promise<IRetrieveResult>;
|
|
7
|
+
/**
|
|
8
|
+
* Query documents from MongoDB collection
|
|
9
|
+
* Uses same connection shape as retrieve, with optional filter, sort, and limit.
|
|
10
|
+
*/
|
|
11
|
+
export declare function create(props: ICreateProps): Promise<ICreateResult>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mongodb/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,0BAA0B,EAAE,iBAAiB,EAC7C,eAAe,EAAE,cAAc,EAE/B,YAAY,EAAE,aAAa,EAC9B,MAAM,SAAS,CAAC;AAMjB,wBAAsB,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyB3F;AAGD,wBAAsB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA4C9E;AAED;;;GAGG;AAkDH,wBAAsB,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CxE"}
|