@proteinjs/db-driver-spanner 1.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/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/generated/index.d.ts +8 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +38 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/src/SpannerColumnTypeFactory.d.ts +5 -0
- package/dist/src/SpannerColumnTypeFactory.d.ts.map +1 -0
- package/dist/src/SpannerColumnTypeFactory.js +31 -0
- package/dist/src/SpannerColumnTypeFactory.js.map +1 -0
- package/dist/src/SpannerConfig.d.ts +8 -0
- package/dist/src/SpannerConfig.d.ts.map +1 -0
- package/dist/src/SpannerConfig.js +7 -0
- package/dist/src/SpannerConfig.js.map +1 -0
- package/dist/src/SpannerDriver.d.ts +30 -0
- package/dist/src/SpannerDriver.d.ts.map +1 -0
- package/dist/src/SpannerDriver.js +204 -0
- package/dist/src/SpannerDriver.js.map +1 -0
- package/dist/src/SpannerSchemaMetadata.d.ts +21 -0
- package/dist/src/SpannerSchemaMetadata.d.ts.map +1 -0
- package/dist/src/SpannerSchemaMetadata.js +229 -0
- package/dist/src/SpannerSchemaMetadata.js.map +1 -0
- package/dist/src/SpannerSchemaOperations.d.ts +10 -0
- package/dist/src/SpannerSchemaOperations.d.ts.map +1 -0
- package/dist/src/SpannerSchemaOperations.js +215 -0
- package/dist/src/SpannerSchemaOperations.js.map +1 -0
- package/dist/test/Crud.test.d.ts +2 -0
- package/dist/test/Crud.test.d.ts.map +1 -0
- package/dist/test/Crud.test.js +12 -0
- package/dist/test/Crud.test.js.map +1 -0
- package/dist/test/TableManager.test.d.ts +2 -0
- package/dist/test/TableManager.test.d.ts.map +1 -0
- package/dist/test/TableManager.test.js +17 -0
- package/dist/test/TableManager.test.js.map +1 -0
- package/dist/test/dropTable.d.ts +4 -0
- package/dist/test/dropTable.d.ts.map +1 -0
- package/dist/test/dropTable.js +115 -0
- package/dist/test/dropTable.js.map +1 -0
- package/generated/index.ts +34 -0
- package/index.ts +2 -0
- package/jest.config.js +19 -0
- package/package.json +42 -0
- package/src/SpannerColumnTypeFactory.ts +25 -0
- package/src/SpannerConfig.ts +9 -0
- package/src/SpannerDriver.ts +115 -0
- package/src/SpannerSchemaMetadata.ts +96 -0
- package/src/SpannerSchemaOperations.ts +122 -0
- package/test/Crud.test.ts +17 -0
- package/test/TableManager.test.ts +24 -0
- package/test/dropTable.ts +32 -0
- package/test/setup.js +1 -0
- package/tsconfig.json +23 -0
package/CHANGELOG.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
|
+
|
6
|
+
## [1.0.2](https://github.com/brentbahry/db/compare/@proteinjs/db-driver-spanner@1.0.1...@proteinjs/db-driver-spanner@1.0.2) (2024-04-19)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @proteinjs/db-driver-spanner
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
## 1.0.1 (2024-04-19)
|
15
|
+
|
16
|
+
**Note:** Version bump only for package @proteinjs/db-driver-spanner
|
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2023 Brent Bahry
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Test Environment Setup
|
2
|
+
|
3
|
+
1. Setup the [Spanner Emulator](https://cloud.google.com/spanner/docs/emulator#linux-macos) on your local machine
|
4
|
+
- Setup emulator in Docker
|
5
|
+
```
|
6
|
+
docker pull gcr.io/cloud-spanner-emulator/emulator
|
7
|
+
docker run -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator
|
8
|
+
```
|
9
|
+
- Create gcloud config to use when connecting to the emulator
|
10
|
+
```
|
11
|
+
gcloud config configurations create emulator
|
12
|
+
gcloud config set auth/disable_credentials true
|
13
|
+
gcloud config set project proteinjs-test
|
14
|
+
gcloud config set api_endpoint_overrides/spanner http://localhost:9020/
|
15
|
+
```
|
16
|
+
- Note: to switch between configs `gcloud config configurations activate [emulator | default]`
|
17
|
+
- Create instance
|
18
|
+
```
|
19
|
+
gcloud spanner instances create proteinjs-test \
|
20
|
+
--config=emulator-config --description="Protein JS Test Instance" --nodes=1
|
21
|
+
```
|
22
|
+
- Create database
|
23
|
+
```
|
24
|
+
gcloud spanner databases create test --instance=proteinjs-test
|
25
|
+
```
|
26
|
+
- Execute cli query
|
27
|
+
```
|
28
|
+
gcloud spanner databases execute-sql test \
|
29
|
+
--instance='proteinjs-test' \
|
30
|
+
--sql='select table_name from information_schema.tables'
|
31
|
+
```
|
32
|
+
2. Note: every time you restart the emulator, you need to re-create state (like the instance and the db)
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,eAAe,CAAC;AACvB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iBAAiB,CAAC;AA2BzB,cAAc,UAAU,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"use strict";
|
2
|
+
/** Load Dependency Source Graphs */
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
4
|
+
if (k2 === undefined) k2 = k;
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
8
|
+
}
|
9
|
+
Object.defineProperty(o, k2, desc);
|
10
|
+
}) : (function(o, m, k, k2) {
|
11
|
+
if (k2 === undefined) k2 = k;
|
12
|
+
o[k2] = m[k];
|
13
|
+
}));
|
14
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
15
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
16
|
+
};
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
+
require("@google-cloud/spanner");
|
19
|
+
require("@proteinjs/db");
|
20
|
+
require("@proteinjs/db-query");
|
21
|
+
require("@proteinjs/reflection");
|
22
|
+
require("@proteinjs/util");
|
23
|
+
/** Generate Source Graph */
|
24
|
+
var sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/db-driver-spanner/SpannerConfig\",\"value\":{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"SpannerConfig\",\"filePath\":\"/home/runner/work/db/db/packages/drivers/spanner/src/SpannerConfig.ts\",\"qualifiedName\":\"@proteinjs/db-driver-spanner/SpannerConfig\",\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"typeParameters\":[],\"directParents\":null},{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"{\\n projectId: string,\\n instanceName: string,\\n databaseName: string,\\n}\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db-driver-spanner/{\\n projectId: string,\\n instanceName: string,\\n databaseName: string,\\n}\",\"typeParameters\":[],\"directParents\":null}],\"sourceType\":1}},{\"v\":\"@proteinjs/reflection/Loadable\"},{\"v\":\"@proteinjs/db-driver-spanner/SpannerDriver\",\"value\":{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"SpannerDriver\",\"filePath\":\"/home/runner/work/db/db/packages/drivers/spanner/src/SpannerDriver.ts\",\"qualifiedName\":\"@proteinjs/db-driver-spanner/SpannerDriver\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"SPANNER\",\"type\":{\"packageName\":\"@google-cloud/spanner\",\"name\":\"Spanner\",\"filePath\":null,\"qualifiedName\":\"@google-cloud/spanner/Spanner\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":true,\"visibility\":\"private\"},{\"name\":\"SPANNER_INSTANCE\",\"type\":{\"packageName\":\"@google-cloud/spanner\",\"name\":\"Instance\",\"filePath\":null,\"qualifiedName\":\"@google-cloud/spanner/Instance\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":true,\"visibility\":\"private\"},{\"name\":\"SPANNER_DB\",\"type\":{\"packageName\":\"@google-cloud/spanner\",\"name\":\"Database\",\"filePath\":null,\"qualifiedName\":\"@google-cloud/spanner/Database\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":true,\"visibility\":\"private\"},{\"name\":\"logger\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\"},{\"name\":\"config\",\"type\":{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"SpannerConfig\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db-driver-spanner/SpannerConfig\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\"}],\"methods\":[{\"name\":\"getSpanner\",\"returnType\":{\"packageName\":\"@google-cloud/spanner\",\"name\":\"Spanner\",\"filePath\":null,\"qualifiedName\":\"@google-cloud/spanner/Spanner\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\",\"parameters\":[]},{\"name\":\"getSpannerInstance\",\"returnType\":{\"packageName\":\"@google-cloud/spanner\",\"name\":\"Instance\",\"filePath\":null,\"qualifiedName\":\"@google-cloud/spanner/Instance\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\",\"parameters\":[]},{\"name\":\"getSpannerDb\",\"returnType\":{\"packageName\":\"@google-cloud/spanner\",\"name\":\"Database\",\"filePath\":null,\"qualifiedName\":\"@google-cloud/spanner/Database\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\",\"parameters\":[]},{\"name\":\"getDbName\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]},{\"name\":\"getTableManager\",\"returnType\":{\"packageName\":\"@proteinjs/db\",\"name\":\"TableManager\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db/TableManager\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]},{\"name\":\"createDbIfNotExists\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]},{\"name\":\"dbExists\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<boolean>\",\"filePath\":null,\"qualifiedName\":\"/Promise<boolean>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\",\"parameters\":[{\"name\":\"databaseName\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"runQuery\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<any[]>\",\"filePath\":null,\"qualifiedName\":\"/Promise<any[]>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"generateStatement\",\"type\":{\"packageName\":\"\",\"name\":\"(config: DbDriverStatementConfig) => Statement\",\"filePath\":null,\"qualifiedName\":\"/(config: DbDriverStatementConfig) => Statement\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"runDml\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<number>\",\"filePath\":null,\"qualifiedName\":\"/Promise<number>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"generateStatement\",\"type\":{\"packageName\":\"\",\"name\":\"(config: DbDriverStatementConfig) => Statement\",\"filePath\":null,\"qualifiedName\":\"/(config: DbDriverStatementConfig) => Statement\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"runUpdateSchema\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"sql\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/db\",\"name\":\"DbDriver\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db/DbDriver\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/db/DbDriver\"},{\"v\":\"@proteinjs/db-driver-spanner/SpannerSchemaMetadata\",\"value\":{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"SpannerSchemaMetadata\",\"filePath\":\"/home/runner/work/db/db/packages/drivers/spanner/src/SpannerSchemaMetadata.ts\",\"qualifiedName\":\"@proteinjs/db-driver-spanner/SpannerSchemaMetadata\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"getColumnMetadata\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<{[columnName: string]: { type: string, isNullable: boolean }}>\",\"filePath\":null,\"qualifiedName\":\"/Promise<{[columnName: string]: { type: string, isNullable: boolean }}>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getPrimaryKey\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string[]>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string[]>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getForeignKeys\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<{[columnName: string]: { referencedTableName: string, referencedColumnName: string }}>\",\"filePath\":null,\"qualifiedName\":\"/Promise<{[columnName: string]: { referencedTableName: string, referencedColumnName: string }}>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getUniqueColumns\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string[]>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string[]>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getIndexes\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<{[keyName: string]: string[]}>\",\"filePath\":null,\"qualifiedName\":\"/Promise<{[keyName: string]: string[]}>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParentInterfaces\":[],\"directParentClasses\":[{\"packageName\":\"@proteinjs/db\",\"name\":\"SchemaMetadata\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db/SchemaMetadata\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParentInterfaces\":[],\"directParentClasses\":[]}],\"sourceType\":2}},{\"v\":\"@proteinjs/db/SchemaMetadata\"},{\"v\":\"@proteinjs/db-driver-spanner/SpannerSchemaOperations\",\"value\":{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"SpannerSchemaOperations\",\"filePath\":\"/home/runner/work/db/db/packages/drivers/spanner/src/SpannerSchemaOperations.ts\",\"qualifiedName\":\"@proteinjs/db-driver-spanner/SpannerSchemaOperations\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"logger\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\"},{\"name\":\"spannerDriver\",\"type\":{\"packageName\":\"@proteinjs/db-driver-spanner\",\"name\":\"SpannerDriver\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db-driver-spanner/SpannerDriver\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\"}],\"methods\":[{\"name\":\"createTable\",\"returnType\":null,\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"alterTable\",\"returnType\":null,\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"table\",\"type\":{\"packageName\":\"\",\"name\":\"Table<any>\",\"filePath\":null,\"qualifiedName\":\"/Table<any>\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"tableChanges\",\"type\":{\"packageName\":\"@proteinjs/db\",\"name\":\"TableChanges\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db/TableChanges\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/db\",\"name\":\"SchemaOperations\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/db/SchemaOperations\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/db/SchemaOperations\"}],\"edges\":[{\"v\":\"@proteinjs/db-driver-spanner/SpannerConfig\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends type\"},{\"v\":\"@proteinjs/db-driver-spanner/SpannerDriver\",\"w\":\"@proteinjs/db/DbDriver\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/db-driver-spanner/SpannerSchemaMetadata\",\"w\":\"@proteinjs/db/SchemaMetadata\",\"value\":\"extends class\"},{\"v\":\"@proteinjs/db-driver-spanner/SpannerSchemaOperations\",\"w\":\"@proteinjs/db/SchemaOperations\",\"value\":\"implements interface\"}]}";
|
25
|
+
/** Generate Source Links */
|
26
|
+
var SpannerDriver_1 = require("../src/SpannerDriver");
|
27
|
+
var SpannerSchemaMetadata_1 = require("../src/SpannerSchemaMetadata");
|
28
|
+
var SpannerSchemaOperations_1 = require("../src/SpannerSchemaOperations");
|
29
|
+
var sourceLinks = {
|
30
|
+
'@proteinjs/db-driver-spanner/SpannerDriver': SpannerDriver_1.SpannerDriver,
|
31
|
+
'@proteinjs/db-driver-spanner/SpannerSchemaMetadata': SpannerSchemaMetadata_1.SpannerSchemaMetadata,
|
32
|
+
'@proteinjs/db-driver-spanner/SpannerSchemaOperations': SpannerSchemaOperations_1.SpannerSchemaOperations,
|
33
|
+
};
|
34
|
+
/** Load Source Graph and Links */
|
35
|
+
var reflection_1 = require("@proteinjs/reflection");
|
36
|
+
reflection_1.SourceRepository.merge(sourceGraph, sourceLinks);
|
37
|
+
__exportStar(require("../index"), exports);
|
38
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,iCAA+B;AAC/B,yBAAuB;AACvB,+BAA6B;AAC7B,iCAA+B;AAC/B,2BAAyB;AAGzB,4BAA4B;AAE5B,IAAM,WAAW,GAAG,4paAA4pa,CAAC;AAGjra,4BAA4B;AAE5B,sDAAqD;AACrD,sEAAqE;AACrE,0EAAyE;AAEzE,IAAM,WAAW,GAAG;IACnB,4CAA4C,EAAE,6BAAa;IAC3D,oDAAoD,EAAE,6CAAqB;IAC3E,sDAAsD,EAAE,iDAAuB;CAC/E,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
@@ -0,0 +1,19 @@
|
|
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
|
+
__exportStar(require("./src/SpannerDriver"), exports);
|
18
|
+
__exportStar(require("./src/SpannerConfig"), exports);
|
19
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,sDAAoC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerColumnTypeFactory.d.ts","sourceRoot":"","sources":["../../src/SpannerColumnTypeFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAuF,MAAM,eAAe,CAAC;AAGzJ,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM;CAoB1C"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.SpannerColumnTypeFactory = void 0;
|
4
|
+
var db_1 = require("@proteinjs/db");
|
5
|
+
// max size of a row in spanner is 10mb
|
6
|
+
var SpannerColumnTypeFactory = /** @class */ (function () {
|
7
|
+
function SpannerColumnTypeFactory() {
|
8
|
+
}
|
9
|
+
SpannerColumnTypeFactory.prototype.getType = function (column) {
|
10
|
+
if (column instanceof db_1.IntegerColumn)
|
11
|
+
return 'INT64';
|
12
|
+
else if (column instanceof db_1.StringColumn)
|
13
|
+
return "STRING(".concat(column.maxLength, ")");
|
14
|
+
else if (column instanceof db_1.FloatColumn)
|
15
|
+
return 'FLOAT64';
|
16
|
+
else if (column instanceof db_1.DecimalColumn)
|
17
|
+
return column.large ? 'BIGNUMERIC' : 'NUMERIC';
|
18
|
+
else if (column instanceof db_1.BooleanColumn)
|
19
|
+
return 'BOOL';
|
20
|
+
else if (column instanceof db_1.DateColumn)
|
21
|
+
return 'DATE';
|
22
|
+
else if (column instanceof db_1.DateTimeColumn)
|
23
|
+
return 'TIMESTAMP';
|
24
|
+
else if (column instanceof db_1.BinaryColumn)
|
25
|
+
return "BYTES(".concat(!column.maxLength ? 'MAX' : column.maxLength, ")");
|
26
|
+
throw new Error("Invalid column type: ".concat(column.constructor.name, ", must extend a base column"));
|
27
|
+
};
|
28
|
+
return SpannerColumnTypeFactory;
|
29
|
+
}());
|
30
|
+
exports.SpannerColumnTypeFactory = SpannerColumnTypeFactory;
|
31
|
+
//# sourceMappingURL=SpannerColumnTypeFactory.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerColumnTypeFactory.js","sourceRoot":"","sources":["../../src/SpannerColumnTypeFactory.ts"],"names":[],"mappings":";;;AAAA,oCAAyJ;AAEzJ,uCAAuC;AACvC;IAAA;IAqBA,CAAC;IApBC,0CAAO,GAAP,UAAQ,MAAwB;QAC9B,IAAI,MAAM,YAAY,kBAAa;YACjC,OAAO,OAAO,CAAC;aACZ,IAAI,MAAM,YAAY,iBAAY;YACrC,OAAO,iBAAU,MAAM,CAAC,SAAS,MAAG,CAAC;aAClC,IAAI,MAAM,YAAY,gBAAW;YACpC,OAAO,SAAS,CAAC;aACd,IAAI,MAAM,YAAY,kBAAa;YACtC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;aAC5C,IAAI,MAAM,YAAY,kBAAa;YACtC,OAAO,MAAM,CAAC;aACX,IAAI,MAAM,YAAY,eAAU;YACnC,OAAO,MAAM,CAAC;aACX,IAAI,MAAM,YAAY,mBAAc;YACvC,OAAO,WAAW,CAAC;aAChB,IAAI,MAAM,YAAY,iBAAY;YACrC,OAAO,gBAAS,CAAE,MAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,MAAuB,CAAC,SAAS,MAAG,CAAC;QAEtG,MAAM,IAAI,KAAK,CAAC,+BAAwB,MAAM,CAAC,WAAW,CAAC,IAAI,gCAA6B,CAAC,CAAC;IAChG,CAAC;IACH,+BAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,4DAAwB"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { Loadable } from '@proteinjs/reflection';
|
2
|
+
export declare const getSpannerConfig: () => SpannerConfig;
|
3
|
+
export type SpannerConfig = Loadable & {
|
4
|
+
projectId: string;
|
5
|
+
instanceName: string;
|
6
|
+
databaseName: string;
|
7
|
+
};
|
8
|
+
//# sourceMappingURL=SpannerConfig.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerConfig.d.ts","sourceRoot":"","sources":["../../src/SpannerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAEnE,eAAO,MAAM,gBAAgB,qBAAmG,CAAC;AAEjI,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAA"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getSpannerConfig = void 0;
|
4
|
+
var reflection_1 = require("@proteinjs/reflection");
|
5
|
+
var getSpannerConfig = function () { return reflection_1.SourceRepository.get().object('@proteinjs/db-driver-spanner/SpannerConfig'); };
|
6
|
+
exports.getSpannerConfig = getSpannerConfig;
|
7
|
+
//# sourceMappingURL=SpannerConfig.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerConfig.js","sourceRoot":"","sources":["../../src/SpannerConfig.ts"],"names":[],"mappings":";;;AAAA,oDAAmE;AAE5D,IAAM,gBAAgB,GAAG,cAAM,OAAA,6BAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAgB,4CAA4C,CAAC,EAA1F,CAA0F,CAAC;AAApH,QAAA,gBAAgB,oBAAoG"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { DbDriver, DbDriverStatementConfig, TableManager } from '@proteinjs/db';
|
2
|
+
import { SpannerConfig } from './SpannerConfig';
|
3
|
+
import { Statement } from '@proteinjs/db-query';
|
4
|
+
export declare class SpannerDriver implements DbDriver {
|
5
|
+
private static SPANNER;
|
6
|
+
private static SPANNER_INSTANCE;
|
7
|
+
private static SPANNER_DB;
|
8
|
+
private logger;
|
9
|
+
private config;
|
10
|
+
constructor(config?: SpannerConfig);
|
11
|
+
private getSpanner;
|
12
|
+
private getSpannerInstance;
|
13
|
+
private getSpannerDb;
|
14
|
+
getDbName(): string;
|
15
|
+
getTableManager(): TableManager;
|
16
|
+
createDbIfNotExists(): Promise<void>;
|
17
|
+
private dbExists;
|
18
|
+
runQuery(generateStatement: (config: DbDriverStatementConfig) => Statement): Promise<any[]>;
|
19
|
+
/**
|
20
|
+
* Execute a write operation.
|
21
|
+
*
|
22
|
+
* @returns number of affected rows
|
23
|
+
*/
|
24
|
+
runDml(generateStatement: (config: DbDriverStatementConfig) => Statement): Promise<number>;
|
25
|
+
/**
|
26
|
+
* Execute a schema write operation.
|
27
|
+
*/
|
28
|
+
runUpdateSchema(sql: string): Promise<void>;
|
29
|
+
}
|
30
|
+
//# sourceMappingURL=SpannerDriver.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerDriver.d.ts","sourceRoot":"","sources":["../../src/SpannerDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKhD,qBAAa,aAAc,YAAW,QAAQ;IAC7C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAU;IAChC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAW;IAC1C,OAAO,CAAC,MAAM,CAAC,UAAU,CAAW;IACpC,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,CAAC,EAAE,aAAa;IAIlC,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,YAAY;IAOpB,SAAS;IAIT,eAAe,IAAI,YAAY;IAOzB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;YAO5B,QAAQ;IAKhB,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAajG;;;;OAIG;IACG,MAAM,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBhG;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjD"}
|
@@ -0,0 +1,204 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
15
|
+
function step(op) {
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
20
|
+
switch (op[0]) {
|
21
|
+
case 0: case 1: t = op; break;
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
25
|
+
default:
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
30
|
+
if (t[2]) _.ops.pop();
|
31
|
+
_.trys.pop(); continue;
|
32
|
+
}
|
33
|
+
op = body.call(thisArg, _);
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
36
|
+
}
|
37
|
+
};
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
39
|
+
exports.SpannerDriver = void 0;
|
40
|
+
var spanner_1 = require("@google-cloud/spanner");
|
41
|
+
var db_1 = require("@proteinjs/db");
|
42
|
+
var SpannerConfig_1 = require("./SpannerConfig");
|
43
|
+
var util_1 = require("@proteinjs/util");
|
44
|
+
var SpannerSchemaOperations_1 = require("./SpannerSchemaOperations");
|
45
|
+
var SpannerColumnTypeFactory_1 = require("./SpannerColumnTypeFactory");
|
46
|
+
var SpannerSchemaMetadata_1 = require("./SpannerSchemaMetadata");
|
47
|
+
var SpannerDriver = /** @class */ (function () {
|
48
|
+
function SpannerDriver(config) {
|
49
|
+
this.logger = new util_1.Logger(this.constructor.name);
|
50
|
+
this.config = config ? config : (0, SpannerConfig_1.getSpannerConfig)();
|
51
|
+
}
|
52
|
+
SpannerDriver.prototype.getSpanner = function () {
|
53
|
+
if (!SpannerDriver.SPANNER)
|
54
|
+
SpannerDriver.SPANNER = new spanner_1.Spanner({ projectId: this.config.projectId });
|
55
|
+
return SpannerDriver.SPANNER;
|
56
|
+
};
|
57
|
+
SpannerDriver.prototype.getSpannerInstance = function () {
|
58
|
+
if (!SpannerDriver.SPANNER_INSTANCE)
|
59
|
+
SpannerDriver.SPANNER_INSTANCE = this.getSpanner().instance(this.config.instanceName);
|
60
|
+
return SpannerDriver.SPANNER_INSTANCE;
|
61
|
+
};
|
62
|
+
SpannerDriver.prototype.getSpannerDb = function () {
|
63
|
+
if (!SpannerDriver.SPANNER_DB)
|
64
|
+
SpannerDriver.SPANNER_DB = this.getSpannerInstance().database(this.config.databaseName);
|
65
|
+
return SpannerDriver.SPANNER_DB;
|
66
|
+
};
|
67
|
+
SpannerDriver.prototype.getDbName = function () {
|
68
|
+
return this.config.databaseName;
|
69
|
+
};
|
70
|
+
SpannerDriver.prototype.getTableManager = function () {
|
71
|
+
var columnTypeFactory = new SpannerColumnTypeFactory_1.SpannerColumnTypeFactory();
|
72
|
+
var schemaOperations = new SpannerSchemaOperations_1.SpannerSchemaOperations(this);
|
73
|
+
var schemaMetadata = new SpannerSchemaMetadata_1.SpannerSchemaMetadata(this, false);
|
74
|
+
return new db_1.TableManager(this, columnTypeFactory, schemaOperations, schemaMetadata);
|
75
|
+
};
|
76
|
+
SpannerDriver.prototype.createDbIfNotExists = function () {
|
77
|
+
return __awaiter(this, void 0, void 0, function () {
|
78
|
+
return __generator(this, function (_a) {
|
79
|
+
switch (_a.label) {
|
80
|
+
case 0: return [4 /*yield*/, this.dbExists(this.getDbName())];
|
81
|
+
case 1:
|
82
|
+
if (_a.sent())
|
83
|
+
return [2 /*return*/];
|
84
|
+
return [4 /*yield*/, this.getSpannerInstance().createDatabase(this.getDbName())];
|
85
|
+
case 2:
|
86
|
+
_a.sent();
|
87
|
+
return [2 /*return*/];
|
88
|
+
}
|
89
|
+
});
|
90
|
+
});
|
91
|
+
};
|
92
|
+
SpannerDriver.prototype.dbExists = function (databaseName) {
|
93
|
+
return __awaiter(this, void 0, void 0, function () {
|
94
|
+
var exists;
|
95
|
+
return __generator(this, function (_a) {
|
96
|
+
switch (_a.label) {
|
97
|
+
case 0: return [4 /*yield*/, this.getSpannerInstance().database(databaseName).exists()];
|
98
|
+
case 1:
|
99
|
+
exists = (_a.sent())[0];
|
100
|
+
return [2 /*return*/, exists];
|
101
|
+
}
|
102
|
+
});
|
103
|
+
});
|
104
|
+
};
|
105
|
+
SpannerDriver.prototype.runQuery = function (generateStatement) {
|
106
|
+
return __awaiter(this, void 0, void 0, function () {
|
107
|
+
var _a, sql, namedParams, rows, error_1;
|
108
|
+
return __generator(this, function (_b) {
|
109
|
+
switch (_b.label) {
|
110
|
+
case 0:
|
111
|
+
_a = generateStatement({ useParams: true, useNamedParams: true, prefixTablesWithDb: false }), sql = _a.sql, namedParams = _a.namedParams;
|
112
|
+
_b.label = 1;
|
113
|
+
case 1:
|
114
|
+
_b.trys.push([1, 3, , 4]);
|
115
|
+
this.logger.debug("Executing query: ".concat(sql));
|
116
|
+
return [4 /*yield*/, this.getSpannerDb().run({ sql: sql, params: namedParams === null || namedParams === void 0 ? void 0 : namedParams.params })];
|
117
|
+
case 2:
|
118
|
+
rows = (_b.sent())[0];
|
119
|
+
return [2 /*return*/, rows.map(function (row) { return row.toJSON(); })];
|
120
|
+
case 3:
|
121
|
+
error_1 = _b.sent();
|
122
|
+
this.logger.error("Failed when executing query: ".concat(sql, "\nreason: ").concat(error_1.details));
|
123
|
+
throw error_1;
|
124
|
+
case 4: return [2 /*return*/];
|
125
|
+
}
|
126
|
+
});
|
127
|
+
});
|
128
|
+
};
|
129
|
+
/**
|
130
|
+
* Execute a write operation.
|
131
|
+
*
|
132
|
+
* @returns number of affected rows
|
133
|
+
*/
|
134
|
+
SpannerDriver.prototype.runDml = function (generateStatement) {
|
135
|
+
return __awaiter(this, void 0, void 0, function () {
|
136
|
+
var _a, sql, namedParams, error_2;
|
137
|
+
var _this = this;
|
138
|
+
return __generator(this, function (_b) {
|
139
|
+
switch (_b.label) {
|
140
|
+
case 0:
|
141
|
+
_a = generateStatement({ useParams: true, useNamedParams: true, prefixTablesWithDb: false }), sql = _a.sql, namedParams = _a.namedParams;
|
142
|
+
_b.label = 1;
|
143
|
+
case 1:
|
144
|
+
_b.trys.push([1, 3, , 4]);
|
145
|
+
return [4 /*yield*/, this.getSpannerDb().runTransactionAsync(function (transaction) { return __awaiter(_this, void 0, void 0, function () {
|
146
|
+
var rowCount;
|
147
|
+
return __generator(this, function (_a) {
|
148
|
+
switch (_a.label) {
|
149
|
+
case 0:
|
150
|
+
this.logger.debug("Executing dml: ".concat(sql));
|
151
|
+
return [4 /*yield*/, transaction.runUpdate({
|
152
|
+
sql: sql,
|
153
|
+
params: namedParams === null || namedParams === void 0 ? void 0 : namedParams.params,
|
154
|
+
})];
|
155
|
+
case 1:
|
156
|
+
rowCount = (_a.sent())[0];
|
157
|
+
return [4 /*yield*/, transaction.commit()];
|
158
|
+
case 2:
|
159
|
+
_a.sent();
|
160
|
+
return [2 /*return*/, rowCount];
|
161
|
+
}
|
162
|
+
});
|
163
|
+
}); })];
|
164
|
+
case 2: return [2 /*return*/, _b.sent()];
|
165
|
+
case 3:
|
166
|
+
error_2 = _b.sent();
|
167
|
+
this.logger.error("Failed when executing dml: ".concat(sql, "\nreason: ").concat(error_2.details));
|
168
|
+
throw error_2;
|
169
|
+
case 4: return [2 /*return*/];
|
170
|
+
}
|
171
|
+
});
|
172
|
+
});
|
173
|
+
};
|
174
|
+
/**
|
175
|
+
* Execute a schema write operation.
|
176
|
+
*/
|
177
|
+
SpannerDriver.prototype.runUpdateSchema = function (sql) {
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
179
|
+
var operation, error_3;
|
180
|
+
return __generator(this, function (_a) {
|
181
|
+
switch (_a.label) {
|
182
|
+
case 0:
|
183
|
+
_a.trys.push([0, 3, , 4]);
|
184
|
+
this.logger.debug("Executing schema update: ".concat(sql));
|
185
|
+
return [4 /*yield*/, this.getSpannerDb().updateSchema(sql)];
|
186
|
+
case 1:
|
187
|
+
operation = (_a.sent())[0];
|
188
|
+
return [4 /*yield*/, operation.promise()];
|
189
|
+
case 2:
|
190
|
+
_a.sent();
|
191
|
+
return [3 /*break*/, 4];
|
192
|
+
case 3:
|
193
|
+
error_3 = _a.sent();
|
194
|
+
this.logger.error("Failed when executing schema update: ".concat(sql, "\nreason: ").concat(error_3.details));
|
195
|
+
throw error_3;
|
196
|
+
case 4: return [2 /*return*/];
|
197
|
+
}
|
198
|
+
});
|
199
|
+
});
|
200
|
+
};
|
201
|
+
return SpannerDriver;
|
202
|
+
}());
|
203
|
+
exports.SpannerDriver = SpannerDriver;
|
204
|
+
//# sourceMappingURL=SpannerDriver.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerDriver.js","sourceRoot":"","sources":["../../src/SpannerDriver.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { SchemaMetadata, Table } from '@proteinjs/db';
|
2
|
+
export declare class SpannerSchemaMetadata extends SchemaMetadata {
|
3
|
+
getColumnMetadata(table: Table<any>): Promise<{
|
4
|
+
[columnName: string]: {
|
5
|
+
type: string;
|
6
|
+
isNullable: boolean;
|
7
|
+
};
|
8
|
+
}>;
|
9
|
+
getPrimaryKey(table: Table<any>): Promise<string[]>;
|
10
|
+
getForeignKeys(table: Table<any>): Promise<{
|
11
|
+
[columnName: string]: {
|
12
|
+
referencedTableName: string;
|
13
|
+
referencedColumnName: string;
|
14
|
+
};
|
15
|
+
}>;
|
16
|
+
getUniqueColumns(table: Table<any>): Promise<string[]>;
|
17
|
+
getIndexes(table: Table<any>): Promise<{
|
18
|
+
[keyName: string]: string[];
|
19
|
+
}>;
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=SpannerSchemaMetadata.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SpannerSchemaMetadata.d.ts","sourceRoot":"","sources":["../../src/SpannerSchemaMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE5F,qBAAa,qBAAsB,SAAQ,cAAc;IACjD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAAC,CAAC,UAAU,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAA;KAAC,CAAC;IAa5G,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKnD,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAAC,CAAC,UAAU,EAAE,MAAM,GAAG;YAAE,mBAAmB,EAAE,MAAM,CAAC;YAAC,oBAAoB,EAAE,MAAM,CAAA;SAAE,CAAA;KAAC,CAAC;IAwCjI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IActD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAAC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAC,CAAC;CAoB5E"}
|