dbgate-types 6.1.6 → 6.2.1

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/dbinfo.d.ts CHANGED
@@ -163,7 +163,7 @@ export interface SchedulerEventInfo extends SqlObjectInfo {
163
163
  onCompletion: 'PRESERVE' | 'NOT PRESERVE';
164
164
  status: 'ENABLED' | 'DISABLED';
165
165
  lastExecuted?: string;
166
- intervalValue: number;
166
+ intervalValue: string;
167
167
  intervalField: string;
168
168
  starts: string;
169
169
  executeAt: string;
@@ -189,3 +189,34 @@ export interface DatabaseInfoObjects {
189
189
  export interface DatabaseInfo extends DatabaseInfoObjects {
190
190
  engine?: string;
191
191
  }
192
+
193
+ export interface ColumnReferenceTiny {
194
+ n: string; // name
195
+ r?: string; // ref name
196
+ }
197
+
198
+ export interface PrimaryKeyInfoTiny {
199
+ c: ColumnReferenceTiny[]; // columns
200
+ }
201
+
202
+ export interface ForeignKeyInfoTiny {
203
+ c: ColumnReferenceTiny[]; // columns
204
+ r: string; // reference table name
205
+ }
206
+
207
+ export interface ColumnInfoTiny {
208
+ n: string; // name
209
+ t: string; // type
210
+ }
211
+
212
+ export interface TableInfoTiny {
213
+ n: string; //name
214
+ o: string; // comment
215
+ c: ColumnInfoTiny[]; // columns
216
+ p?: PrimaryKeyInfoTiny; // primary key
217
+ f?: ForeignKeyInfoTiny[]; // foreign keys
218
+ }
219
+
220
+ export interface DatabaseInfoTiny {
221
+ t: TableInfoTiny[]; // tables
222
+ }
package/dialect.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { ColumnInfo } from './dbinfo';
2
+
1
3
  export interface SqlDialect {
2
4
  rangeSelect?: boolean;
3
5
  limitSelect?: boolean;
@@ -6,12 +8,15 @@ export interface SqlDialect {
6
8
  topRecords?: boolean;
7
9
  stringEscapeChar: string;
8
10
  offsetFetchRangeSyntax?: boolean;
11
+ offsetNotSupported?: boolean;
9
12
  quoteIdentifier(s: string): string;
10
13
  fallbackDataType?: string;
11
14
  explicitDropConstraint?: boolean;
12
15
  anonymousPrimaryKey?: boolean;
16
+ anonymousForeignKey?: boolean;
13
17
  defaultSchemaName?: string;
14
18
  enableConstraintsPerTable?: boolean;
19
+ enableAllForeignKeys?: boolean;
15
20
  requireStandaloneSelectForScopeIdentity?: boolean;
16
21
  allowMultipleValuesInsert?: boolean;
17
22
 
@@ -44,7 +49,14 @@ export interface SqlDialect {
44
49
  omitForeignKeys?: boolean;
45
50
  omitUniqueConstraints?: boolean;
46
51
  omitIndexes?: boolean;
52
+ omitTableAliases?: boolean;
53
+ omitTableBeforeColumn?: boolean;
54
+ disableAutoIncrement?: boolean;
55
+ disableNonPrimaryKeyRename?: boolean;
56
+ disableRenameTable?: boolean;
57
+ defaultNewTableColumns?: ColumnInfo[];
47
58
  sortingKeys?: boolean;
59
+ generateDefaultValueForUuid?: string;
48
60
 
49
61
  // syntax for create column: ALTER TABLE table ADD COLUMN column
50
62
  createColumnWithColumnKeyword?: boolean;
@@ -53,6 +65,7 @@ export interface SqlDialect {
53
65
  requireFromDual?: boolean;
54
66
  userDatabaseNamePrefix?: string; // c## in Oracle
55
67
  upperCaseAllDbObjectNames?: boolean;
68
+ defaultValueBeforeNullability?: boolean;
56
69
 
57
70
  predefinedDataTypes: string[];
58
71
 
package/dumper.d.ts CHANGED
@@ -11,7 +11,7 @@ export interface SqlDumper extends AlterProcessor {
11
11
  putRaw(s: string);
12
12
  put(format: string, ...args);
13
13
  putCmd(format: string, ...args);
14
- putValue(value: string | number | Date);
14
+ putValue(value: string | number | Date, dataType?: string);
15
15
  putCollection<T>(delimiter: string, collection: T[], lambda: (item: T) => void);
16
16
  transform(type: TransformType, dumpExpr: () => void);
17
17
  createDatabase(name: string);
@@ -24,4 +24,5 @@ export interface SqlDumper extends AlterProcessor {
24
24
  truncateTable(table: NamedObjectInfo);
25
25
  beginTransaction();
26
26
  commitTransaction();
27
+ rollbackTransaction();
27
28
  }
package/engines.d.ts CHANGED
@@ -32,6 +32,7 @@ export interface RunScriptOptions {
32
32
  export interface QueryOptions {
33
33
  discardResult?: boolean;
34
34
  importSqlDump?: boolean;
35
+ range?: { offset: number; limit: number };
35
36
  }
36
37
 
37
38
  export interface WriteTableOptions {
@@ -39,6 +40,7 @@ export interface WriteTableOptions {
39
40
  truncate?: boolean;
40
41
  createIfNotExists?: boolean;
41
42
  commitAfterInsert?: boolean;
43
+ targetTableStructure?: TableInfo;
42
44
  }
43
45
 
44
46
  export interface EngineAuthType {
@@ -133,8 +135,8 @@ export interface FilterBehaviourProvider {
133
135
  getFilterBehaviour(dataType: string, standardFilterBehaviours: { [id: string]: FilterBehaviour }): FilterBehaviour;
134
136
  }
135
137
 
136
- export interface DatabaseHandle {
137
- client: any;
138
+ export interface DatabaseHandle<TClient = any> {
139
+ client: TClient;
138
140
  database?: string;
139
141
  feedback?: (message: any) => void;
140
142
  getDatabase?: () => any;
@@ -142,7 +144,7 @@ export interface DatabaseHandle {
142
144
  treeKeySeparator?: string;
143
145
  }
144
146
 
145
- export interface EngineDriver extends FilterBehaviourProvider {
147
+ export interface EngineDriver<TClient = any> extends FilterBehaviourProvider {
146
148
  engine: string;
147
149
  title: string;
148
150
  defaultPort?: number;
@@ -160,8 +162,9 @@ export interface EngineDriver extends FilterBehaviourProvider {
160
162
  profilerTimestampFunction?: string;
161
163
  profilerChartAggregateFunction?: string;
162
164
  profilerChartMeasures?: { label: string; field: string }[];
163
- isElectronOnly?: boolean;
165
+ // isElectronOnly?: boolean;
164
166
  supportsTransactions?: boolean;
167
+ implicitTransactions?: boolean; // transaction is started with first SQL command, no BEGIN TRANSACTION is needed
165
168
 
166
169
  collectionSingularLabel?: string;
167
170
  collectionPluralLabel?: string;
@@ -180,57 +183,68 @@ export interface EngineDriver extends FilterBehaviourProvider {
180
183
  beforeConnectionSave?: (values: any) => any;
181
184
  databaseUrlPlaceholder?: string;
182
185
  defaultAuthTypeName?: string;
186
+ defaultLocalDataCenter?: string;
183
187
  defaultSocketPath?: string;
184
188
  authTypeLabel?: string;
185
189
  importExportArgs?: any[];
186
- connect({ server, port, user, password, database }): Promise<DatabaseHandle>;
187
- close(dbhan: DatabaseHandle): Promise<any>;
188
- query(dbhan: DatabaseHandle, sql: string, options?: QueryOptions): Promise<QueryResult>;
189
- stream(dbhan: DatabaseHandle, sql: string, options: StreamOptions);
190
- readQuery(dbhan: DatabaseHandle, sql: string, structure?: TableInfo): Promise<stream.Readable>;
191
- readJsonQuery(dbhan: DatabaseHandle, query: any, structure?: TableInfo): Promise<stream.Readable>;
190
+ connect({ server, port, user, password, database }): Promise<DatabaseHandle<TClient>>;
191
+ close(dbhan: DatabaseHandle<TClient>): Promise<any>;
192
+ query(dbhan: DatabaseHandle<TClient>, sql: string, options?: QueryOptions): Promise<QueryResult>;
193
+ stream(dbhan: DatabaseHandle<TClient>, sql: string, options: StreamOptions);
194
+ readQuery(dbhan: DatabaseHandle<TClient>, sql: string, structure?: TableInfo): Promise<stream.Readable>;
195
+ readJsonQuery(dbhan: DatabaseHandle<TClient>, query: any, structure?: TableInfo): Promise<stream.Readable>;
192
196
  // eg. PostgreSQL COPY FROM stdin
193
- writeQueryFromStream(dbhan: DatabaseHandle, sql: string): Promise<stream.Writable>;
194
- writeTable(dbhan: DatabaseHandle, name: NamedObjectInfo, options: WriteTableOptions): Promise<stream.Writable>;
197
+ writeQueryFromStream(dbhan: DatabaseHandle<TClient>, sql: string): Promise<stream.Writable>;
198
+ writeTable(
199
+ dbhan: DatabaseHandle<TClient>,
200
+ name: NamedObjectInfo,
201
+ options: WriteTableOptions
202
+ ): Promise<stream.Writable>;
195
203
  analyseSingleObject(
196
- dbhan: DatabaseHandle,
204
+ dbhan: DatabaseHandle<TClient>,
197
205
  name: NamedObjectInfo,
198
206
  objectTypeField: keyof DatabaseInfo
199
207
  ): Promise<TableInfo | ViewInfo | ProcedureInfo | FunctionInfo | TriggerInfo>;
200
- analyseSingleTable(dbhan: DatabaseHandle, name: NamedObjectInfo): Promise<TableInfo>;
201
- getVersion(dbhan: DatabaseHandle): Promise<{ version: string; versionText?: string }>;
202
- listDatabases(dbhan: DatabaseHandle): Promise<
208
+ analyseSingleTable(dbhan: DatabaseHandle<TClient>, name: NamedObjectInfo): Promise<TableInfo>;
209
+ getVersion(dbhan: DatabaseHandle<TClient>): Promise<{ version: string; versionText?: string }>;
210
+ listDatabases(dbhan: DatabaseHandle<TClient>): Promise<
203
211
  {
204
212
  name: string;
205
213
  }[]
206
214
  >;
207
- loadKeys(dbhan: DatabaseHandle, root: string, filter?: string): Promise;
208
- exportKeys(dbhan: DatabaseHandle, options: {}): Promise;
209
- loadKeyInfo(dbhan: DatabaseHandle, key): Promise;
210
- loadKeyTableRange(dbhan: DatabaseHandle, key, cursor, count): Promise;
211
- loadFieldValues(dbhan: DatabaseHandle, name: NamedObjectInfo, field: string, search: string): Promise;
212
- analyseFull(dbhan: DatabaseHandle, serverVersion): Promise<DatabaseInfo>;
213
- analyseIncremental(dbhan: DatabaseHandle, structure: DatabaseInfo, serverVersion): Promise<DatabaseInfo>;
215
+ loadKeys(dbhan: DatabaseHandle<TClient>, root: string, filter?: string): Promise;
216
+ exportKeys(dbhan: DatabaseHandle<TClient>, options: {}): Promise;
217
+ loadKeyInfo(dbhan: DatabaseHandle<TClient>, key): Promise;
218
+ loadKeyTableRange(dbhan: DatabaseHandle<TClient>, key, cursor, count): Promise;
219
+ loadFieldValues(
220
+ dbhan: DatabaseHandle<TClient>,
221
+ name: NamedObjectInfo,
222
+ field: string,
223
+ search: string,
224
+ dataType: string
225
+ ): Promise;
226
+ analyseFull(dbhan: DatabaseHandle<TClient>, serverVersion): Promise<DatabaseInfo>;
227
+ analyseIncremental(dbhan: DatabaseHandle<TClient>, structure: DatabaseInfo, serverVersion): Promise<DatabaseInfo>;
214
228
  dialect: SqlDialect;
215
229
  dialectByVersion(version): SqlDialect;
216
230
  createDumper(options = null): SqlDumper;
217
- createBackupDumper(dbhan: DatabaseHandle, options): Promise<SqlBackupDumper>;
231
+ createBackupDumper(dbhan: DatabaseHandle<TClient>, options): Promise<SqlBackupDumper>;
218
232
  getAuthTypes(): EngineAuthType[];
219
- readCollection(dbhan: DatabaseHandle, options: ReadCollectionOptions): Promise<any>;
220
- updateCollection(dbhan: DatabaseHandle, changeSet: any): Promise<any>;
233
+ readCollection(dbhan: DatabaseHandle<TClient>, options: ReadCollectionOptions): Promise<any>;
234
+ updateCollection(dbhan: DatabaseHandle<TClient>, changeSet: any): Promise<any>;
221
235
  getCollectionUpdateScript(changeSet: any, collectionInfo: CollectionInfo): string;
222
- createDatabase(dbhan: DatabaseHandle, name: string): Promise;
223
- dropDatabase(dbhan: DatabaseHandle, name: string): Promise;
236
+ createDatabase(dbhan: DatabaseHandle<TClient>, name: string): Promise;
237
+ dropDatabase(dbhan: DatabaseHandle<TClient>, name: string): Promise;
224
238
  getQuerySplitterOptions(usage: 'stream' | 'script' | 'editor' | 'import'): any;
225
- script(dbhan: DatabaseHandle, sql: string, options?: RunScriptOptions): Promise;
226
- operation(dbhan: DatabaseHandle, operation: {}, options?: RunScriptOptions): Promise;
239
+ script(dbhan: DatabaseHandle<TClient>, sql: string, options?: RunScriptOptions): Promise;
240
+ operation(dbhan: DatabaseHandle<TClient>, operation: {}, options?: RunScriptOptions): Promise;
227
241
  getNewObjectTemplates(): NewObjectTemplate[];
228
242
  // direct call of dbhan.client method, only some methods could be supported, on only some drivers
229
- callMethod(dbhan: DatabaseHandle, method, args);
230
- serverSummary(dbhan: DatabaseHandle): Promise<ServerSummary>;
231
- summaryCommand(dbhan: DatabaseHandle, command, row): Promise<void>;
232
- startProfiler(dbhan: DatabaseHandle, options): Promise<any>;
233
- stopProfiler(dbhan: DatabaseHandle, profiler): Promise<void>;
243
+ callMethod(dbhan: DatabaseHandle<TClient>, method, args);
244
+ serverSummary(dbhan: DatabaseHandle<TClient>): Promise<ServerSummary>;
245
+ summaryCommand(dbhan: DatabaseHandle<TClient>, command, row): Promise<void>;
246
+ startProfiler(dbhan: DatabaseHandle<TClient>, options): Promise<any>;
247
+ stopProfiler(dbhan: DatabaseHandle<TClient>, profiler): Promise<void>;
234
248
  getRedirectAuthUrl(connection, options): Promise<{ url: string; sid: string }>;
235
249
  getAuthTokenFromCode(connection, options): Promise<string>;
236
250
  getAccessTokenFromAuth(connection, req): Promise<string | null>;
@@ -241,11 +255,13 @@ export interface EngineDriver extends FilterBehaviourProvider {
241
255
  createSaveChangeSetScript(
242
256
  changeSet: any,
243
257
  dbinfo: DatabaseInfo,
244
- defaultCreator: (changeSet: any, dbinfo: DatabaseInfo) => any
258
+ defaultCreator: (changeSet: any, dbinfo: DatabaseInfo, dialect: SqlDialect) => any
245
259
  ): any[];
246
260
  // adapts table info from different source (import, other database) to be suitable for this database
247
261
  adaptTableInfo(table: TableInfo): TableInfo;
248
- listSchemas(dbhan: DatabaseHandle): SchemaInfo[];
262
+ // simple data type adapter
263
+ adaptDataType(dataType: string): string;
264
+ listSchemas(dbhan: DatabaseHandle<TClient>): SchemaInfo[];
249
265
 
250
266
  analyserClass?: any;
251
267
  dumperClass?: any;
package/index.d.ts CHANGED
@@ -48,3 +48,4 @@ export * from './extensions';
48
48
  export * from './alter-processor';
49
49
  export * from './appdefs';
50
50
  export * from './filter-type';
51
+ export * from './test-engines';
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "6.1.6",
2
+ "version": "6.2.1",
3
3
  "name": "dbgate-types",
4
4
  "homepage": "https://dbgate.org/",
5
5
  "repository": {
@@ -0,0 +1,87 @@
1
+ import { ParameterInfo, SchedulerEventInfo, TriggerInfo } from './dbinfo';
2
+
3
+ export type TestObjectInfo = {
4
+ type: string;
5
+ create1: string;
6
+ create2: string;
7
+ drop1: string;
8
+ drop2: string;
9
+ };
10
+
11
+ export type TestEngineInfo = {
12
+ label: string;
13
+ connection: {
14
+ engine: string;
15
+ server?: string;
16
+ databaseUrl?: string;
17
+ serviceName?: string;
18
+ password?: string;
19
+ user?: string;
20
+ port?: number;
21
+ };
22
+
23
+ removeNotNull?: boolean;
24
+
25
+ skipOnCI?: boolean;
26
+ skipIncrementalAnalysis?: boolean;
27
+ skipDataModifications?: boolean;
28
+ skipReferences?: boolean;
29
+ skipIndexes?: boolean;
30
+ skipNullability?: boolean;
31
+ skipUnique?: boolean;
32
+ skipAutoIncrement?: boolean;
33
+ skipPkColumnTesting?: boolean;
34
+ skipDataDuplicator?: boolean;
35
+ skipDeploy?: boolean;
36
+ skipStringLength?: boolean;
37
+ skipChangeColumn?: boolean;
38
+ skipDefaultValue?: boolean;
39
+ skipNonPkRename?: boolean;
40
+ skipPkDrop?: boolean;
41
+ skipOrderBy?: boolean;
42
+ skipImportModel?: boolean;
43
+
44
+ forceSortResults?: boolean;
45
+ forceSortStructureColumns?: boolean;
46
+ alterTableAddColumnSyntax?: boolean;
47
+ dbSnapshotBySeconds?: boolean;
48
+ setNullDefaultInsteadOfDrop?: boolean;
49
+
50
+ useTextTypeForStrings?: boolean;
51
+
52
+ supportRenameSqlObject?: boolean;
53
+ supportSchemas?: boolean;
54
+
55
+ defaultSchemaName?: string;
56
+
57
+ generateDbFile?: boolean;
58
+ dbSnapshotBySeconds?: boolean;
59
+ dumpFile?: string;
60
+ dumpChecks?: Array<{ sql: string; res: string }>;
61
+
62
+ parametersOtherSql?: string[];
63
+ parameters?: Array<{
64
+ testName: string;
65
+ create: string;
66
+ drop: string;
67
+ objectTypeField: string;
68
+ list: Array<Partial<ParameterInfo>>;
69
+ }>;
70
+ triggers?: Array<{
71
+ testName: string;
72
+ create: string;
73
+ drop: string;
74
+ triggerOtherCreateSql?: string;
75
+ triggerOtherDropSql?: string;
76
+ objectTypeField: string;
77
+ expected: Partial<TriggerInfo>;
78
+ }>;
79
+ schedulerEvents?: Array<{
80
+ create: string;
81
+ drop: string;
82
+ objectTypeField: string;
83
+ expected: Partial<SchedulerEventInfo>;
84
+ }>;
85
+
86
+ objects?: Array<TestObjectInfo>;
87
+ };