@bitblit/ratchet-rdbms 4.0.420-alpha → 4.0.421-alpha

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.
Files changed (150) hide show
  1. package/lib/build/index.d.ts +1 -0
  2. package/lib/build/index.js +2 -0
  3. package/lib/build/index.js.map +1 -0
  4. package/lib/build/ratchet-rdbms-info.d.ts +5 -0
  5. package/lib/build/ratchet-rdbms-info.js +15 -0
  6. package/lib/build/ratchet-rdbms-info.js.map +1 -0
  7. package/lib/model/connection-and-tunnel.d.ts +6 -0
  8. package/lib/model/connection-and-tunnel.js +2 -0
  9. package/lib/model/connection-and-tunnel.js.map +1 -0
  10. package/lib/model/database-access-provider.d.ts +7 -0
  11. package/lib/model/database-access-provider.js +2 -0
  12. package/lib/model/database-access-provider.js.map +1 -0
  13. package/lib/model/database-access.d.ts +17 -0
  14. package/lib/model/database-access.js +2 -0
  15. package/lib/model/database-access.js.map +1 -0
  16. package/lib/model/database-config-list.d.ts +3 -0
  17. package/lib/model/database-config-list.js +2 -0
  18. package/lib/model/database-config-list.js.map +1 -0
  19. package/lib/model/database-request-type.d.ts +6 -0
  20. package/lib/model/database-request-type.js +8 -0
  21. package/lib/model/database-request-type.js.map +1 -0
  22. package/lib/model/group-by-count-result.d.ts +4 -0
  23. package/lib/model/group-by-count-result.js +2 -0
  24. package/lib/model/group-by-count-result.js.map +1 -0
  25. package/lib/model/index.d.ts +19 -0
  26. package/lib/model/index.js +20 -0
  27. package/lib/model/index.js.map +1 -0
  28. package/lib/model/modify-results.d.ts +9 -0
  29. package/lib/model/modify-results.js +2 -0
  30. package/lib/model/modify-results.js.map +1 -0
  31. package/lib/model/named-parameter-database-service-config.d.ts +12 -0
  32. package/lib/model/named-parameter-database-service-config.js +2 -0
  33. package/lib/model/named-parameter-database-service-config.js.map +1 -0
  34. package/lib/model/paginated-results.d.ts +5 -0
  35. package/lib/model/paginated-results.js +2 -0
  36. package/lib/model/paginated-results.js.map +1 -0
  37. package/lib/model/pagination-bounds.d.ts +6 -0
  38. package/lib/model/pagination-bounds.js +2 -0
  39. package/lib/model/pagination-bounds.js.map +1 -0
  40. package/lib/model/paginator.d.ts +9 -0
  41. package/lib/model/paginator.js +2 -0
  42. package/lib/model/paginator.js.map +1 -0
  43. package/lib/model/query-defaults.d.ts +4 -0
  44. package/lib/model/query-defaults.js +2 -0
  45. package/lib/model/query-defaults.js.map +1 -0
  46. package/lib/model/query-text-provider.d.ts +4 -0
  47. package/lib/model/query-text-provider.js +2 -0
  48. package/lib/model/query-text-provider.js.map +1 -0
  49. package/lib/model/request-results.d.ts +4 -0
  50. package/lib/model/request-results.js +2 -0
  51. package/lib/model/request-results.js.map +1 -0
  52. package/lib/model/simple-query-text-provider.d.ts +7 -0
  53. package/lib/model/simple-query-text-provider.js +18 -0
  54. package/lib/model/simple-query-text-provider.js.map +1 -0
  55. package/lib/model/sort-direction.d.ts +4 -0
  56. package/lib/model/sort-direction.js +6 -0
  57. package/lib/model/sort-direction.js.map +1 -0
  58. package/lib/model/ssh/ssh-tunnel-config.d.ts +8 -0
  59. package/lib/model/ssh/ssh-tunnel-config.js +2 -0
  60. package/lib/model/ssh/ssh-tunnel-config.js.map +1 -0
  61. package/lib/model/ssh/ssh-tunnel-container.d.ts +12 -0
  62. package/lib/model/ssh/ssh-tunnel-container.js +2 -0
  63. package/lib/model/ssh/ssh-tunnel-container.js.map +1 -0
  64. package/lib/model/transaction-isolation-level.d.ts +4 -0
  65. package/lib/model/transaction-isolation-level.js +6 -0
  66. package/lib/model/transaction-isolation-level.js.map +1 -0
  67. package/lib/mysql/index.d.ts +5 -0
  68. package/lib/mysql/index.js +6 -0
  69. package/lib/mysql/index.js.map +1 -0
  70. package/lib/mysql/model/mysql-db-config.d.ts +12 -0
  71. package/lib/mysql/model/mysql-db-config.js +2 -0
  72. package/lib/mysql/model/mysql-db-config.js.map +1 -0
  73. package/lib/mysql/model/mysql-master-status.d.ts +6 -0
  74. package/lib/mysql/model/mysql-master-status.js +2 -0
  75. package/lib/mysql/model/mysql-master-status.js.map +1 -0
  76. package/lib/mysql/model/mysql-slave-status.d.ts +52 -0
  77. package/lib/mysql/model/mysql-slave-status.js +2 -0
  78. package/lib/mysql/model/mysql-slave-status.js.map +1 -0
  79. package/lib/mysql/mysql-style-database-access.d.ts +20 -0
  80. package/lib/mysql/mysql-style-database-access.js +57 -0
  81. package/lib/mysql/mysql-style-database-access.js.map +1 -0
  82. package/lib/mysql/rds-mysql-style-connection-provider.d.ts +29 -0
  83. package/lib/mysql/rds-mysql-style-connection-provider.js +205 -0
  84. package/lib/mysql/rds-mysql-style-connection-provider.js.map +1 -0
  85. package/lib/query-builder/index.d.ts +3 -0
  86. package/lib/query-builder/index.js +4 -0
  87. package/lib/query-builder/index.js.map +1 -0
  88. package/lib/query-builder/query-builder-result.d.ts +9 -0
  89. package/lib/query-builder/query-builder-result.js +13 -0
  90. package/lib/query-builder/query-builder-result.js.map +1 -0
  91. package/lib/query-builder/query-builder.d.ts +52 -0
  92. package/lib/query-builder/query-builder.js +352 -0
  93. package/lib/query-builder/query-builder.js.map +1 -0
  94. package/lib/query-builder/query-util.d.ts +16 -0
  95. package/lib/query-builder/query-util.js +137 -0
  96. package/lib/query-builder/query-util.js.map +1 -0
  97. package/lib/service/index.d.ts +3 -0
  98. package/lib/service/index.js +4 -0
  99. package/lib/service/index.js.map +1 -0
  100. package/lib/service/named-parameter-database-service.d.ts +42 -0
  101. package/lib/service/named-parameter-database-service.js +272 -0
  102. package/lib/service/named-parameter-database-service.js.map +1 -0
  103. package/lib/service/ssh-tunnel-service.d.ts +6 -0
  104. package/lib/service/ssh-tunnel-service.js +49 -0
  105. package/lib/service/ssh-tunnel-service.js.map +1 -0
  106. package/lib/service/transactional-named-parameter-database-service.d.ts +20 -0
  107. package/lib/service/transactional-named-parameter-database-service.js +129 -0
  108. package/lib/service/transactional-named-parameter-database-service.js.map +1 -0
  109. package/lib/sqlite/index.d.ts +9 -0
  110. package/lib/sqlite/index.js +10 -0
  111. package/lib/sqlite/index.js.map +1 -0
  112. package/lib/sqlite/model/fetch-remote-mode.d.ts +4 -0
  113. package/lib/sqlite/model/fetch-remote-mode.js +6 -0
  114. package/lib/sqlite/model/fetch-remote-mode.js.map +1 -0
  115. package/lib/sqlite/model/flush-remote-mode.d.ts +4 -0
  116. package/lib/sqlite/model/flush-remote-mode.js +6 -0
  117. package/lib/sqlite/model/flush-remote-mode.js.map +1 -0
  118. package/lib/sqlite/model/sqlite-connection-config-flag.d.ts +3 -0
  119. package/lib/sqlite/model/sqlite-connection-config-flag.js +5 -0
  120. package/lib/sqlite/model/sqlite-connection-config-flag.js.map +1 -0
  121. package/lib/sqlite/model/sqlite-connection-config.d.ts +9 -0
  122. package/lib/sqlite/model/sqlite-connection-config.js +2 -0
  123. package/lib/sqlite/model/sqlite-connection-config.js.map +1 -0
  124. package/lib/sqlite/model/sqlite-local-file-config.d.ts +3 -0
  125. package/lib/sqlite/model/sqlite-local-file-config.js +2 -0
  126. package/lib/sqlite/model/sqlite-local-file-config.js.map +1 -0
  127. package/lib/sqlite/model/sqlite-remote-file-sync-config.d.ts +8 -0
  128. package/lib/sqlite/model/sqlite-remote-file-sync-config.js +2 -0
  129. package/lib/sqlite/model/sqlite-remote-file-sync-config.js.map +1 -0
  130. package/lib/sqlite/sqlite-database-access.d.ts +25 -0
  131. package/lib/sqlite/sqlite-database-access.js +106 -0
  132. package/lib/sqlite/sqlite-database-access.js.map +1 -0
  133. package/lib/sqlite/sqlite-remote-sync-database-access.d.ts +34 -0
  134. package/lib/sqlite/sqlite-remote-sync-database-access.js +129 -0
  135. package/lib/sqlite/sqlite-remote-sync-database-access.js.map +1 -0
  136. package/lib/sqlite/sqlite-style-connection-provider.d.ts +19 -0
  137. package/lib/sqlite/sqlite-style-connection-provider.js +157 -0
  138. package/lib/sqlite/sqlite-style-connection-provider.js.map +1 -0
  139. package/lib/util/aws-rds-cert-2023.d.ts +6 -0
  140. package/lib/util/aws-rds-cert-2023.js +499 -0
  141. package/lib/util/aws-rds-cert-2023.js.map +1 -0
  142. package/lib/util/index.d.ts +2 -0
  143. package/lib/util/index.js +3 -0
  144. package/lib/util/index.js.map +1 -0
  145. package/lib/util/relational-database-utils.d.ts +4 -0
  146. package/lib/util/relational-database-utils.js +31 -0
  147. package/lib/util/relational-database-utils.js.map +1 -0
  148. package/package.json +12 -13
  149. package/lib/index.mjs +0 -2
  150. package/lib/types.d.ts +0 -489
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-remote-file-sync-config.js","sourceRoot":"","sources":["../../../src/sqlite/model/sqlite-remote-file-sync-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { AsyncDatabase } from 'promised-sqlite3';
2
+ import { DatabaseAccess } from '../model/database-access.js';
3
+ import { DatabaseRequestType } from '../model/database-request-type.js';
4
+ import { ModifyResults } from '../model/modify-results.js';
5
+ import { RequestResults } from '../model/request-results.js';
6
+ import { SqliteConnectionConfigFlag } from './model/sqlite-connection-config-flag.js';
7
+ export declare class SqliteDatabaseAccess implements DatabaseAccess {
8
+ private conn;
9
+ private flags;
10
+ private extraConfig;
11
+ constructor(conn: AsyncDatabase, flags: SqliteConnectionConfigFlag[], extraConfig: Record<string, any>);
12
+ get connection(): AsyncDatabase;
13
+ beginTransaction(): Promise<void>;
14
+ close(): Promise<boolean>;
15
+ commitTransaction(): Promise<void>;
16
+ escape(value: any): string;
17
+ onRequestFailureOnly(_type: DatabaseRequestType): Promise<void>;
18
+ onRequestSuccessOnly(_type: DatabaseRequestType): Promise<void>;
19
+ onRequestSuccessOrFailure(_type: DatabaseRequestType): Promise<void>;
20
+ preQuery(): Promise<void>;
21
+ modify(query: string, fields: Record<string, any>): Promise<RequestResults<ModifyResults>>;
22
+ query<S>(inQuery: string, inFields: Record<string, any>): Promise<RequestResults<S>>;
23
+ testConnection(logTestResults?: boolean): Promise<number | null>;
24
+ rollbackTransaction(): Promise<void>;
25
+ }
@@ -0,0 +1,106 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
3
+ import SqlString from 'sqlstring';
4
+ import { QueryUtil } from '../query-builder/query-util.js';
5
+ import { SqliteConnectionConfigFlag } from './model/sqlite-connection-config-flag.js';
6
+ export class SqliteDatabaseAccess {
7
+ conn;
8
+ flags;
9
+ extraConfig;
10
+ constructor(conn, flags, extraConfig) {
11
+ this.conn = conn;
12
+ this.flags = flags;
13
+ this.extraConfig = extraConfig;
14
+ }
15
+ get connection() {
16
+ return this.conn;
17
+ }
18
+ beginTransaction() {
19
+ throw ErrorRatchet.fErr('Transactions not supported in Sqlite');
20
+ }
21
+ async close() {
22
+ try {
23
+ await this.conn.close();
24
+ return true;
25
+ }
26
+ catch (err) {
27
+ Logger.error('Failed to close : %s', err, err);
28
+ return false;
29
+ }
30
+ }
31
+ commitTransaction() {
32
+ throw ErrorRatchet.fErr('Transactions not supported in Sqlite');
33
+ }
34
+ escape(value) {
35
+ let rval = SqlString.escape(value);
36
+ rval = rval.replaceAll("\\'", "''");
37
+ return rval;
38
+ }
39
+ async onRequestFailureOnly(_type) { }
40
+ async onRequestSuccessOnly(_type) {
41
+ return Promise.resolve(undefined);
42
+ }
43
+ async onRequestSuccessOrFailure(_type) {
44
+ return Promise.resolve(undefined);
45
+ }
46
+ async preQuery() {
47
+ return Promise.resolve(undefined);
48
+ }
49
+ async modify(query, fields) {
50
+ const out = await this.query(query, fields);
51
+ Logger.debug('Modify returned %j', out);
52
+ const val = await this.conn.all('SELECT changes() as changedRows, last_insert_rowid() as insertId;');
53
+ const update = {
54
+ changedRows: val[0]['changedRows'],
55
+ insertId: val[0]['insertId'],
56
+ fieldCount: undefined,
57
+ affectedRows: val[0]['changedRows'],
58
+ info: undefined,
59
+ serverStatus: undefined,
60
+ warningStatus: undefined,
61
+ };
62
+ const res = {
63
+ results: update,
64
+ fields: null,
65
+ };
66
+ return res;
67
+ }
68
+ async query(inQuery, inFields) {
69
+ const fields = QueryUtil.addPrefixToFieldNames(inFields, ':');
70
+ let query = QueryUtil.replaceNullReplacementsInQuery(inQuery, fields);
71
+ const slFields = QueryUtil.removeUnusedFields(query, fields);
72
+ Object.keys(slFields).forEach((k) => {
73
+ const val = slFields[k];
74
+ if (Array.isArray(val)) {
75
+ const escaped = this.escape(val);
76
+ query = query.replaceAll(k, escaped);
77
+ delete slFields[k];
78
+ }
79
+ });
80
+ if ((this.flags || []).includes(SqliteConnectionConfigFlag.AlwaysCollateNoCase)) {
81
+ query += ' COLLATE NOCASE';
82
+ }
83
+ const res = await this.conn.all(query, slFields);
84
+ const rval = {
85
+ results: res,
86
+ fields: null,
87
+ };
88
+ return rval;
89
+ }
90
+ async testConnection(logTestResults) {
91
+ if (logTestResults) {
92
+ Logger.info('Running connection test');
93
+ }
94
+ const res = await this.query('SELECT unixepoch()*1000 AS test', {});
95
+ const rows = res.results;
96
+ const timestamp = rows.length === 1 ? rows[0].test : null;
97
+ if (logTestResults) {
98
+ Logger.info('Test returned : %j', timestamp);
99
+ }
100
+ return timestamp;
101
+ }
102
+ async rollbackTransaction() {
103
+ throw ErrorRatchet.fErr('Transactions not supported in Sqlite');
104
+ }
105
+ }
106
+ //# sourceMappingURL=sqlite-database-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-database-access.js","sourceRoot":"","sources":["../../src/sqlite/sqlite-database-access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { DatabaseAccess } from '../model/database-access.js';
2
+ import { DatabaseRequestType } from '../model/database-request-type.js';
3
+ import { RequestResults } from '../model/request-results.js';
4
+ import { ModifyResults } from '../model/modify-results.js';
5
+ import { SqliteRemoteFileSyncConfig } from './model/sqlite-remote-file-sync-config.js';
6
+ import { FlushRemoteMode } from './model/flush-remote-mode.js';
7
+ import { SqliteConnectionConfigFlag } from './model/sqlite-connection-config-flag.js';
8
+ import { FetchRemoteMode } from './model/fetch-remote-mode.js';
9
+ import { BackupResult } from '@bitblit/ratchet-common/network/remote-file-sync/backup-result';
10
+ export declare class SqliteRemoteSyncDatabaseAccess implements DatabaseAccess {
11
+ private cfg;
12
+ private flags;
13
+ private extraConfig;
14
+ private cacheDb;
15
+ constructor(cfg: SqliteRemoteFileSyncConfig, flags: SqliteConnectionConfigFlag[], extraConfig: Record<string, any>);
16
+ private db;
17
+ backupRemoteNow(): Promise<BackupResult>;
18
+ changeFlushRemoteMode(newMode: FlushRemoteMode): void;
19
+ changeFetchRemoteMode(newMode: FetchRemoteMode): void;
20
+ flushLocalToRemote(): Promise<void>;
21
+ reloadRemoteToLocal(): Promise<void>;
22
+ private closeSyncReopen;
23
+ private createDb;
24
+ beginTransaction(): Promise<void>;
25
+ close(): Promise<boolean>;
26
+ commitTransaction(): Promise<void>;
27
+ escape(value: any): string;
28
+ onRequestSuccessOnly(type: DatabaseRequestType): Promise<void>;
29
+ preQuery(): Promise<void>;
30
+ modify(query: string, fields: Record<string, any>): Promise<RequestResults<ModifyResults>>;
31
+ query<S>(inQuery: string, inFields: Record<string, any>): Promise<RequestResults<S>>;
32
+ testConnection(logTestResults?: boolean): Promise<number | null>;
33
+ rollbackTransaction(): Promise<void>;
34
+ }
@@ -0,0 +1,129 @@
1
+ import { AsyncDatabase } from 'promised-sqlite3';
2
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
3
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
4
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
5
+ import { StopWatch } from '@bitblit/ratchet-common/lang/stop-watch';
6
+ import SqlString from 'sqlstring';
7
+ import { SqliteDatabaseAccess } from './sqlite-database-access.js';
8
+ import { DatabaseRequestType } from '../model/database-request-type.js';
9
+ import { FlushRemoteMode } from './model/flush-remote-mode.js';
10
+ import { FetchRemoteMode } from './model/fetch-remote-mode.js';
11
+ export class SqliteRemoteSyncDatabaseAccess {
12
+ cfg;
13
+ flags;
14
+ extraConfig;
15
+ cacheDb;
16
+ constructor(cfg, flags, extraConfig) {
17
+ this.cfg = cfg;
18
+ this.flags = flags;
19
+ this.extraConfig = extraConfig;
20
+ this.cfg.flushRemoteMode = this.cfg.flushRemoteMode || FlushRemoteMode.Auto;
21
+ this.cfg.fetchRemoteMode = this.cfg.fetchRemoteMode || FetchRemoteMode.EveryQuery;
22
+ }
23
+ async db() {
24
+ if (!this.cacheDb) {
25
+ this.cacheDb = this.createDb();
26
+ }
27
+ return this.cacheDb;
28
+ }
29
+ async backupRemoteNow() {
30
+ return this.cfg.remoteFileSync.backupRemote();
31
+ }
32
+ changeFlushRemoteMode(newMode) {
33
+ RequireRatchet.notNullOrUndefined(newMode, 'newMode');
34
+ this.cfg.flushRemoteMode = newMode;
35
+ }
36
+ changeFetchRemoteMode(newMode) {
37
+ RequireRatchet.notNullOrUndefined(newMode, 'newMode');
38
+ this.cfg.fetchRemoteMode = newMode;
39
+ }
40
+ async flushLocalToRemote() {
41
+ Logger.info('Flushing to remote (Flush mode is %s)', this.cfg.flushRemoteMode);
42
+ this.cacheDb = this.closeSyncReopen(this.db(), false);
43
+ await this.cacheDb;
44
+ }
45
+ async reloadRemoteToLocal() {
46
+ Logger.info('Reloading remote to local (Fetch mode is %s)', this.cfg.fetchRemoteMode);
47
+ this.cacheDb = this.closeSyncReopen(this.db(), true);
48
+ await this.cacheDb;
49
+ }
50
+ async closeSyncReopen(oldDbProm, remoteToLocal) {
51
+ const sw = new StopWatch();
52
+ const db = await oldDbProm;
53
+ const takeAction = await (remoteToLocal ? this.cfg.remoteFileSync.wouldFetch : this.cfg.remoteFileSync.wouldPush);
54
+ let rval;
55
+ if (takeAction) {
56
+ Logger.info('Closing database for sync');
57
+ await db.close();
58
+ Logger.info('Remote sync : %s', remoteToLocal ? 'remoteToLocal' : 'localToRemote');
59
+ const result = remoteToLocal
60
+ ? await this.cfg.remoteFileSync.fetchRemoteToLocal()
61
+ : await this.cfg.remoteFileSync.sendLocalToRemote();
62
+ Logger.info('Returned %s - reopening', result);
63
+ const newDb = await AsyncDatabase.open(this.cfg.remoteFileSync.localFileName);
64
+ rval = new SqliteDatabaseAccess(newDb, this.flags, this.extraConfig);
65
+ Logger.info('closeSyncReopen took %s', sw.dump());
66
+ }
67
+ else {
68
+ Logger.info('Skipping close/sync/open - no change detected');
69
+ rval = db;
70
+ }
71
+ return rval;
72
+ }
73
+ async createDb() {
74
+ Logger.info('Pulling file local');
75
+ await this.cfg.remoteFileSync.fetchRemoteToLocal();
76
+ Logger.info('Creating database');
77
+ const db = await AsyncDatabase.open(this.cfg.remoteFileSync.localFileName);
78
+ const rval = new SqliteDatabaseAccess(db, this.flags, this.extraConfig);
79
+ return rval;
80
+ }
81
+ beginTransaction() {
82
+ throw ErrorRatchet.fErr('Transactions not supported in Sqlite');
83
+ }
84
+ async close() {
85
+ try {
86
+ const db = await this.db();
87
+ await db.close();
88
+ return true;
89
+ }
90
+ catch (err) {
91
+ Logger.error('Failed to close : %s', err, err);
92
+ return false;
93
+ }
94
+ }
95
+ commitTransaction() {
96
+ throw ErrorRatchet.fErr('Transactions not supported in Sqlite');
97
+ }
98
+ escape(value) {
99
+ return SqlString.format('?', value);
100
+ }
101
+ async onRequestSuccessOnly(type) {
102
+ if (type === DatabaseRequestType.Modify && this.cfg.flushRemoteMode === FlushRemoteMode.Auto) {
103
+ Logger.info('Successful modification with auto mode - flushing remote');
104
+ await this.flushLocalToRemote();
105
+ }
106
+ }
107
+ async preQuery() {
108
+ if (this?.cfg?.fetchRemoteMode === FetchRemoteMode.EveryQuery) {
109
+ Logger.debug('EveryQuery mode - checking remote');
110
+ await this.reloadRemoteToLocal();
111
+ }
112
+ }
113
+ async modify(query, fields) {
114
+ const db = await this.db();
115
+ return db.modify(query, fields);
116
+ }
117
+ async query(inQuery, inFields) {
118
+ const db = await this.db();
119
+ return db.query(inQuery, inFields);
120
+ }
121
+ async testConnection(logTestResults) {
122
+ const db = await this.db();
123
+ return db.testConnection(logTestResults);
124
+ }
125
+ async rollbackTransaction() {
126
+ throw ErrorRatchet.fErr('Transactions not supported in Sqlite');
127
+ }
128
+ }
129
+ //# sourceMappingURL=sqlite-remote-sync-database-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-remote-sync-database-access.js","sourceRoot":"","sources":["../../src/sqlite/sqlite-remote-sync-database-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAIxE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D,MAAM,OAAO,8BAA8B;IAI/B;IACA;IACA;IALF,OAAO,CAAgC;IAE/C,YACU,GAA+B,EAC/B,KAAmC,EACnC,WAAgC;QAFhC,QAAG,GAAH,GAAG,CAA4B;QAC/B,UAAK,GAAL,KAAK,CAA8B;QACnC,gBAAW,GAAX,WAAW,CAAqB;QAExC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,UAAU,CAAC;IACpF,CAAC;IAEO,KAAK,CAAC,EAAE;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;IAChD,CAAC;IAEM,qBAAqB,CAAC,OAAwB;QACnD,cAAc,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;IACrC,CAAC;IAEM,qBAAqB,CAAC,OAAwB;QACnD,cAAc,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC9B,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAAwC,EAAE,aAAsB;QAC5F,MAAM,EAAE,GAAc,IAAI,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,GAAyB,MAAM,SAAS,CAAC;QACjD,MAAM,UAAU,GAAY,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3H,IAAI,IAA0B,CAAC;QAE/B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACnF,MAAM,MAAM,GAAuB,aAAa;gBAC9C,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,EAAE;gBACpD,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAkB,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC7F,IAAI,GAAG,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC7D,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,MAAM,EAAE,GAAkB,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAyB,IAAI,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;QACd,MAAM,YAAY,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,EAAE,GAAyB,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,MAAM,YAAY,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,KAAU;QACf,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAyB;QAClD,IAAI,IAAI,KAAK,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;YAC7F,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACxE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAYM,KAAK,CAAC,QAAQ;QACnB,IAAI,IAAI,EAAE,GAAG,EAAE,eAAe,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAA2B;QACrD,MAAM,EAAE,GAAyB,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAI,OAAe,EAAE,QAA6B;QAC3D,MAAM,EAAE,GAAyB,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,cAAwB;QAClD,MAAM,EAAE,GAAyB,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,YAAY,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClE,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { DatabaseAccessProvider } from '../model/database-access-provider.js';
2
+ import { DatabaseAccess } from '../model/database-access.js';
3
+ import { DatabaseConfigList } from '../model/database-config-list.js';
4
+ import { SqliteConnectionConfig } from './model/sqlite-connection-config.js';
5
+ export declare class SqliteStyleConnectionProvider implements DatabaseAccessProvider {
6
+ private configPromiseProvider;
7
+ private additionalConfig;
8
+ private connectionCache;
9
+ private cacheConfigPromise;
10
+ constructor(configPromiseProvider: () => Promise<DatabaseConfigList<SqliteConnectionConfig>>, additionalConfig?: Record<string, any>);
11
+ private addShutdownHandlerToProcess;
12
+ clearDatabaseAccessCache(): Promise<boolean>;
13
+ getDatabaseAccess(name: string): Promise<DatabaseAccess | undefined>;
14
+ private getDbConfig;
15
+ private createAsyncDatabase;
16
+ private configPromise;
17
+ private createSqliteConnectionConfig;
18
+ static validDbConfig(cfg: SqliteConnectionConfig): string[];
19
+ }
@@ -0,0 +1,157 @@
1
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
2
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
3
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
4
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
5
+ import { AsyncDatabase } from 'promised-sqlite3';
6
+ import fs from 'fs';
7
+ import { SqliteDatabaseAccess } from './sqlite-database-access.js';
8
+ import { SqliteRemoteSyncDatabaseAccess } from './sqlite-remote-sync-database-access.js';
9
+ export class SqliteStyleConnectionProvider {
10
+ configPromiseProvider;
11
+ additionalConfig;
12
+ connectionCache = new Map();
13
+ cacheConfigPromise;
14
+ constructor(configPromiseProvider, additionalConfig = {}) {
15
+ this.configPromiseProvider = configPromiseProvider;
16
+ this.additionalConfig = additionalConfig;
17
+ this.cacheConfigPromise = this.createSqliteConnectionConfig();
18
+ Logger.info('Added shutdown handler to the process (Only once per instantiation)');
19
+ this.addShutdownHandlerToProcess();
20
+ }
21
+ addShutdownHandlerToProcess() {
22
+ process.on('exit', () => {
23
+ Logger.info('Process is shutting down, closing connections');
24
+ this.clearDatabaseAccessCache().catch((err) => {
25
+ Logger.error('Shutdown connection failed : %s', err);
26
+ });
27
+ });
28
+ }
29
+ async clearDatabaseAccessCache() {
30
+ const rval = false;
31
+ Logger.info('Clearing connection cache for SqliteStyleConnectionProvider');
32
+ const oldConnections = Array.from(this.connectionCache.values());
33
+ this.cacheConfigPromise = null;
34
+ this.connectionCache = new Map();
35
+ if (oldConnections.length > 0) {
36
+ for (let i = 0; i < oldConnections.length; i++) {
37
+ Logger.info('Shutting down old connection %d of %d', i, oldConnections.length);
38
+ try {
39
+ const conn = await oldConnections[i];
40
+ Logger.info('Conn %d', i);
41
+ if (conn) {
42
+ Logger.info('Stopping connection to database');
43
+ try {
44
+ await conn.close();
45
+ Logger.info('Database connection closed');
46
+ }
47
+ catch (err) {
48
+ if (ErrorRatchet.asErr(err).message.includes('closed state')) {
49
+ }
50
+ else {
51
+ Logger.error('Something went wrong closing the database connection : %s', err);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ catch (err) {
57
+ Logger.warn('Shutdown failed : %s ', err, err);
58
+ }
59
+ }
60
+ }
61
+ Logger.info('Old db and tunnels removed');
62
+ return rval;
63
+ }
64
+ async getDatabaseAccess(name) {
65
+ Logger.silly('getConnectionAndTunnel : %s', name);
66
+ if (!this.connectionCache.has(name)) {
67
+ Logger.info('No connectionCache found for %s - creating new one', name);
68
+ const dbConfig = await this.getDbConfig(name);
69
+ const connection = this.createAsyncDatabase(dbConfig, this.additionalConfig, true);
70
+ this.connectionCache.set(name, connection);
71
+ Logger.info('Added connectionCache for %s', name);
72
+ }
73
+ return this.connectionCache.get(name);
74
+ }
75
+ async getDbConfig(name) {
76
+ Logger.info('SqliteStyleConnectionProvider:getDbConfig:Initiating promise for %s', name);
77
+ const cfgs = await this.configPromise();
78
+ const finder = StringRatchet.trimToEmpty(name).toLowerCase();
79
+ const dbConfig = cfgs.dbList.find((s) => StringRatchet.trimToEmpty(s.label).toLowerCase() === finder);
80
+ if (!dbConfig) {
81
+ throw ErrorRatchet.fErr('Cannot find any connection config named %s (Available are %j)', name, cfgs.dbList.map((d) => d.label));
82
+ }
83
+ return dbConfig;
84
+ }
85
+ async createAsyncDatabase(dbCfg, _additionalConfig = {}, clearCacheOnConnectionFailure) {
86
+ Logger.info('In SqliteStyleConnectionProvider:createAsyncDatabase : %s', dbCfg.label);
87
+ RequireRatchet.notNullOrUndefined(dbCfg, 'dbCfg');
88
+ Logger.debug('Opening connection for SqliteStyleConnectionProvider');
89
+ let rval;
90
+ try {
91
+ if (dbCfg.remoteFileSync) {
92
+ rval = new SqliteRemoteSyncDatabaseAccess(dbCfg.remoteFileSync, dbCfg.flags, _additionalConfig);
93
+ }
94
+ else if (dbCfg.localFile) {
95
+ if (!fs.existsSync(dbCfg.localFile.filePath)) {
96
+ throw ErrorRatchet.fErr('Requested file does not exist : %s', dbCfg.localFile.filePath);
97
+ }
98
+ const db = await AsyncDatabase.open(dbCfg.localFile.filePath);
99
+ rval = new SqliteDatabaseAccess(db, dbCfg.flags, _additionalConfig);
100
+ }
101
+ else {
102
+ Logger.info('Neither remote nor local file specified, using memory');
103
+ const db = await AsyncDatabase.open(':memory:');
104
+ rval = new SqliteDatabaseAccess(db, dbCfg.flags, _additionalConfig);
105
+ }
106
+ }
107
+ catch (err) {
108
+ Logger.info('Failed trying to create connection : %s : clearing for retry', err);
109
+ if (clearCacheOnConnectionFailure) {
110
+ this.connectionCache = new Map();
111
+ }
112
+ return undefined;
113
+ }
114
+ return rval;
115
+ }
116
+ configPromise() {
117
+ if (!this.cacheConfigPromise) {
118
+ this.cacheConfigPromise = this.createSqliteConnectionConfig();
119
+ }
120
+ return this.cacheConfigPromise;
121
+ }
122
+ async createSqliteConnectionConfig() {
123
+ RequireRatchet.notNullOrUndefined(this.configPromiseProvider, 'input');
124
+ const inputPromise = this.configPromiseProvider();
125
+ Logger.info('Creating connection config');
126
+ const cfg = await inputPromise;
127
+ RequireRatchet.true(cfg.dbList.length > 0, 'input.dbList');
128
+ cfg.dbList.forEach((db) => {
129
+ const errors = SqliteStyleConnectionProvider.validDbConfig(db);
130
+ if (errors?.length) {
131
+ throw ErrorRatchet.fErr('Errors found in db config : %j', errors);
132
+ }
133
+ });
134
+ return cfg;
135
+ }
136
+ static validDbConfig(cfg) {
137
+ let rval = [];
138
+ if (!cfg) {
139
+ rval.push('The config is null');
140
+ }
141
+ else {
142
+ if (cfg.localFile && cfg.remoteFileSync) {
143
+ rval.push('May not define both filePath and remoteFileSync');
144
+ }
145
+ if (cfg.localFile && !StringRatchet.trimToNull(cfg.localFile.filePath)) {
146
+ rval.push('Localfile provided but filepath is not');
147
+ }
148
+ if (cfg.remoteFileSync && !cfg.remoteFileSync.remoteFileSync) {
149
+ rval.push('remoteFileSync provided but remoteFileSync value within is not');
150
+ }
151
+ rval.push(StringRatchet.trimToNull(cfg.label) ? null : 'label is required and non-empty');
152
+ }
153
+ rval = rval.filter((s) => !!s);
154
+ return rval;
155
+ }
156
+ }
157
+ //# sourceMappingURL=sqlite-style-connection-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-style-connection-provider.js","sourceRoot":"","sources":["../../src/sqlite/sqlite-style-connection-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class AwsRdsCert2023 {
2
+ static readonly US_EAST_1_BUNDLE_PEM: string;
3
+ static readonly US_EAST_2_BUNDLE_PEM: string;
4
+ static readonly US_WEST_1_BUNDLE_PEM: string;
5
+ static readonly US_WEST_2_BUNDLE_PEM: string;
6
+ }