@njdamstra/appwrite-utils-cli 1.8.9 → 1.10.0
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/CONFIG_TODO.md +1189 -0
- package/SELECTION_DIALOGS.md +146 -0
- package/SERVICE_IMPLEMENTATION_REPORT.md +462 -0
- package/dist/adapters/index.d.ts +7 -8
- package/dist/adapters/index.js +7 -9
- package/dist/backups/operations/bucketBackup.js +2 -2
- package/dist/backups/operations/collectionBackup.d.ts +1 -1
- package/dist/backups/operations/collectionBackup.js +3 -3
- package/dist/backups/operations/comprehensiveBackup.d.ts +1 -1
- package/dist/backups/operations/comprehensiveBackup.js +2 -2
- package/dist/backups/tracking/centralizedTracking.d.ts +1 -1
- package/dist/backups/tracking/centralizedTracking.js +2 -2
- package/dist/cli/commands/configCommands.js +51 -7
- package/dist/cli/commands/databaseCommands.d.ts +1 -0
- package/dist/cli/commands/databaseCommands.js +119 -9
- package/dist/cli/commands/functionCommands.js +3 -3
- package/dist/cli/commands/importFileCommands.d.ts +7 -0
- package/dist/cli/commands/importFileCommands.js +674 -0
- package/dist/cli/commands/schemaCommands.js +3 -3
- package/dist/cli/commands/storageCommands.js +2 -3
- package/dist/cli/commands/transferCommands.js +3 -5
- package/dist/collections/attributes.d.ts +1 -1
- package/dist/collections/attributes.js +2 -35
- package/dist/collections/indexes.js +1 -3
- package/dist/collections/methods.d.ts +1 -1
- package/dist/collections/methods.js +111 -192
- package/dist/collections/tableOperations.d.ts +1 -0
- package/dist/collections/tableOperations.js +55 -23
- package/dist/collections/transferOperations.d.ts +1 -1
- package/dist/collections/transferOperations.js +3 -4
- package/dist/collections/wipeOperations.d.ts +4 -3
- package/dist/collections/wipeOperations.js +112 -39
- package/dist/databases/methods.js +2 -2
- package/dist/databases/setup.js +2 -2
- package/dist/examples/yamlTerminologyExample.js +2 -2
- package/dist/functions/deployments.d.ts +1 -1
- package/dist/functions/deployments.js +5 -5
- package/dist/functions/fnConfigDiscovery.js +2 -2
- package/dist/functions/methods.js +16 -4
- package/dist/init.js +1 -1
- package/dist/interactiveCLI.d.ts +6 -1
- package/dist/interactiveCLI.js +63 -9
- package/dist/main.js +130 -177
- package/dist/migrations/afterImportActions.js +2 -3
- package/dist/migrations/appwriteToX.d.ts +1 -1
- package/dist/migrations/appwriteToX.js +9 -7
- package/dist/migrations/comprehensiveTransfer.js +3 -5
- package/dist/migrations/dataLoader.js +2 -5
- package/dist/migrations/importController.js +3 -4
- package/dist/migrations/importDataActions.js +3 -3
- package/dist/migrations/relationships.js +1 -2
- package/dist/migrations/services/DataTransformationService.js +2 -2
- package/dist/migrations/services/FileHandlerService.js +1 -1
- package/dist/migrations/services/ImportOrchestrator.js +4 -4
- package/dist/migrations/services/RateLimitManager.js +1 -1
- package/dist/migrations/services/RelationshipResolver.js +1 -1
- package/dist/migrations/services/UserMappingService.js +1 -1
- package/dist/migrations/services/ValidationService.js +1 -1
- package/dist/migrations/transfer.d.ts +8 -4
- package/dist/migrations/transfer.js +106 -55
- package/dist/migrations/yaml/YamlImportConfigLoader.js +1 -1
- package/dist/migrations/yaml/YamlImportIntegration.js +2 -2
- package/dist/migrations/yaml/generateImportSchemas.js +1 -1
- package/dist/setupCommands.d.ts +1 -1
- package/dist/setupCommands.js +5 -6
- package/dist/setupController.js +1 -1
- package/dist/shared/backupTracking.d.ts +1 -1
- package/dist/shared/backupTracking.js +2 -2
- package/dist/shared/confirmationDialogs.js +1 -1
- package/dist/shared/migrationHelpers.d.ts +1 -1
- package/dist/shared/migrationHelpers.js +3 -3
- package/dist/shared/operationQueue.d.ts +1 -1
- package/dist/shared/operationQueue.js +2 -3
- package/dist/shared/operationsTable.d.ts +1 -1
- package/dist/shared/operationsTable.js +2 -2
- package/dist/shared/progressManager.js +1 -1
- package/dist/shared/selectionDialogs.js +9 -8
- package/dist/storage/methods.js +4 -4
- package/dist/storage/schemas.d.ts +2 -2
- package/dist/tables/indexManager.d.ts +65 -0
- package/dist/tables/indexManager.js +294 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/dist/users/methods.js +2 -3
- package/dist/utils/configMigration.js +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/loadConfigs.d.ts +2 -2
- package/dist/utils/loadConfigs.js +6 -7
- package/dist/utils/setupFiles.js +5 -7
- package/dist/utilsController.d.ts +15 -8
- package/dist/utilsController.js +57 -28
- package/package.json +7 -3
- package/src/adapters/index.ts +8 -34
- package/src/backups/operations/bucketBackup.ts +2 -2
- package/src/backups/operations/collectionBackup.ts +4 -4
- package/src/backups/operations/comprehensiveBackup.ts +3 -3
- package/src/backups/tracking/centralizedTracking.ts +3 -3
- package/src/cli/commands/configCommands.ts +72 -8
- package/src/cli/commands/databaseCommands.ts +161 -9
- package/src/cli/commands/functionCommands.ts +4 -3
- package/src/cli/commands/importFileCommands.ts +815 -0
- package/src/cli/commands/schemaCommands.ts +3 -3
- package/src/cli/commands/storageCommands.ts +2 -3
- package/src/cli/commands/transferCommands.ts +3 -6
- package/src/collections/attributes.ts +3 -39
- package/src/collections/indexes.ts +2 -4
- package/src/collections/methods.ts +115 -150
- package/src/collections/tableOperations.ts +57 -21
- package/src/collections/transferOperations.ts +4 -5
- package/src/collections/wipeOperations.ts +154 -51
- package/src/databases/methods.ts +2 -2
- package/src/databases/setup.ts +2 -2
- package/src/examples/yamlTerminologyExample.ts +2 -2
- package/src/functions/deployments.ts +6 -5
- package/src/functions/fnConfigDiscovery.ts +2 -2
- package/src/functions/methods.ts +17 -4
- package/src/init.ts +1 -1
- package/src/interactiveCLI.ts +75 -10
- package/src/main.ts +143 -287
- package/src/migrations/afterImportActions.ts +2 -3
- package/src/migrations/appwriteToX.ts +12 -8
- package/src/migrations/comprehensiveTransfer.ts +6 -6
- package/src/migrations/dataLoader.ts +2 -5
- package/src/migrations/importController.ts +3 -4
- package/src/migrations/importDataActions.ts +3 -3
- package/src/migrations/relationships.ts +1 -2
- package/src/migrations/services/DataTransformationService.ts +2 -2
- package/src/migrations/services/FileHandlerService.ts +1 -1
- package/src/migrations/services/ImportOrchestrator.ts +4 -4
- package/src/migrations/services/RateLimitManager.ts +1 -1
- package/src/migrations/services/RelationshipResolver.ts +1 -1
- package/src/migrations/services/UserMappingService.ts +1 -1
- package/src/migrations/services/ValidationService.ts +1 -1
- package/src/migrations/transfer.ts +126 -83
- package/src/migrations/yaml/YamlImportConfigLoader.ts +1 -1
- package/src/migrations/yaml/YamlImportIntegration.ts +2 -2
- package/src/migrations/yaml/generateImportSchemas.ts +1 -1
- package/src/setupCommands.ts +5 -6
- package/src/setupController.ts +1 -1
- package/src/shared/backupTracking.ts +3 -3
- package/src/shared/confirmationDialogs.ts +1 -1
- package/src/shared/migrationHelpers.ts +4 -4
- package/src/shared/operationQueue.ts +3 -4
- package/src/shared/operationsTable.ts +3 -3
- package/src/shared/progressManager.ts +1 -1
- package/src/shared/selectionDialogs.ts +9 -8
- package/src/storage/methods.ts +4 -4
- package/src/tables/indexManager.ts +409 -0
- package/src/types.ts +2 -2
- package/src/users/methods.ts +2 -3
- package/src/utils/configMigration.ts +1 -1
- package/src/utils/index.ts +1 -1
- package/src/utils/loadConfigs.ts +15 -7
- package/src/utils/setupFiles.ts +5 -7
- package/src/utilsController.ts +86 -32
- package/dist/adapters/AdapterFactory.d.ts +0 -94
- package/dist/adapters/AdapterFactory.js +0 -405
- package/dist/adapters/DatabaseAdapter.d.ts +0 -233
- package/dist/adapters/DatabaseAdapter.js +0 -50
- package/dist/adapters/LegacyAdapter.d.ts +0 -50
- package/dist/adapters/LegacyAdapter.js +0 -612
- package/dist/adapters/TablesDBAdapter.d.ts +0 -45
- package/dist/adapters/TablesDBAdapter.js +0 -571
- package/dist/config/ConfigManager.d.ts +0 -445
- package/dist/config/ConfigManager.js +0 -625
- package/dist/config/configMigration.d.ts +0 -87
- package/dist/config/configMigration.js +0 -390
- package/dist/config/configValidation.d.ts +0 -66
- package/dist/config/configValidation.js +0 -358
- package/dist/config/index.d.ts +0 -8
- package/dist/config/index.js +0 -7
- package/dist/config/services/ConfigDiscoveryService.d.ts +0 -126
- package/dist/config/services/ConfigDiscoveryService.js +0 -374
- package/dist/config/services/ConfigLoaderService.d.ts +0 -129
- package/dist/config/services/ConfigLoaderService.js +0 -540
- package/dist/config/services/ConfigMergeService.d.ts +0 -208
- package/dist/config/services/ConfigMergeService.js +0 -308
- package/dist/config/services/ConfigValidationService.d.ts +0 -214
- package/dist/config/services/ConfigValidationService.js +0 -310
- package/dist/config/services/SessionAuthService.d.ts +0 -225
- package/dist/config/services/SessionAuthService.js +0 -456
- package/dist/config/services/__tests__/ConfigMergeService.test.d.ts +0 -1
- package/dist/config/services/__tests__/ConfigMergeService.test.js +0 -271
- package/dist/config/services/index.d.ts +0 -13
- package/dist/config/services/index.js +0 -10
- package/dist/config/yamlConfig.d.ts +0 -722
- package/dist/config/yamlConfig.js +0 -702
- package/dist/functions/pathResolution.d.ts +0 -37
- package/dist/functions/pathResolution.js +0 -185
- package/dist/shared/attributeMapper.d.ts +0 -20
- package/dist/shared/attributeMapper.js +0 -203
- package/dist/shared/errorUtils.d.ts +0 -54
- package/dist/shared/errorUtils.js +0 -95
- package/dist/shared/functionManager.d.ts +0 -48
- package/dist/shared/functionManager.js +0 -336
- package/dist/shared/indexManager.d.ts +0 -24
- package/dist/shared/indexManager.js +0 -151
- package/dist/shared/jsonSchemaGenerator.d.ts +0 -50
- package/dist/shared/jsonSchemaGenerator.js +0 -290
- package/dist/shared/logging.d.ts +0 -61
- package/dist/shared/logging.js +0 -116
- package/dist/shared/messageFormatter.d.ts +0 -39
- package/dist/shared/messageFormatter.js +0 -162
- package/dist/shared/pydanticModelGenerator.d.ts +0 -17
- package/dist/shared/pydanticModelGenerator.js +0 -615
- package/dist/shared/schemaGenerator.d.ts +0 -40
- package/dist/shared/schemaGenerator.js +0 -556
- package/dist/utils/ClientFactory.d.ts +0 -87
- package/dist/utils/ClientFactory.js +0 -212
- package/dist/utils/configDiscovery.d.ts +0 -78
- package/dist/utils/configDiscovery.js +0 -472
- package/dist/utils/constantsGenerator.d.ts +0 -31
- package/dist/utils/constantsGenerator.js +0 -321
- package/dist/utils/dataConverters.d.ts +0 -46
- package/dist/utils/dataConverters.js +0 -139
- package/dist/utils/directoryUtils.d.ts +0 -22
- package/dist/utils/directoryUtils.js +0 -59
- package/dist/utils/getClientFromConfig.d.ts +0 -39
- package/dist/utils/getClientFromConfig.js +0 -199
- package/dist/utils/helperFunctions.d.ts +0 -63
- package/dist/utils/helperFunctions.js +0 -156
- package/dist/utils/pathResolvers.d.ts +0 -53
- package/dist/utils/pathResolvers.js +0 -72
- package/dist/utils/projectConfig.d.ts +0 -119
- package/dist/utils/projectConfig.js +0 -171
- package/dist/utils/retryFailedPromises.d.ts +0 -2
- package/dist/utils/retryFailedPromises.js +0 -23
- package/dist/utils/sessionAuth.d.ts +0 -48
- package/dist/utils/sessionAuth.js +0 -164
- package/dist/utils/typeGuards.d.ts +0 -35
- package/dist/utils/typeGuards.js +0 -57
- package/dist/utils/validationRules.d.ts +0 -43
- package/dist/utils/validationRules.js +0 -42
- package/dist/utils/versionDetection.d.ts +0 -58
- package/dist/utils/versionDetection.js +0 -251
- package/dist/utils/yamlConverter.d.ts +0 -100
- package/dist/utils/yamlConverter.js +0 -428
- package/dist/utils/yamlLoader.d.ts +0 -70
- package/dist/utils/yamlLoader.js +0 -267
- package/src/adapters/AdapterFactory.ts +0 -510
- package/src/adapters/DatabaseAdapter.ts +0 -306
- package/src/adapters/LegacyAdapter.ts +0 -841
- package/src/adapters/TablesDBAdapter.ts +0 -773
- package/src/config/ConfigManager.ts +0 -808
- package/src/config/README.md +0 -274
- package/src/config/configMigration.ts +0 -575
- package/src/config/configValidation.ts +0 -445
- package/src/config/index.ts +0 -10
- package/src/config/services/ConfigDiscoveryService.ts +0 -463
- package/src/config/services/ConfigLoaderService.ts +0 -740
- package/src/config/services/ConfigMergeService.ts +0 -388
- package/src/config/services/ConfigValidationService.ts +0 -394
- package/src/config/services/SessionAuthService.ts +0 -565
- package/src/config/services/__tests__/ConfigMergeService.test.ts +0 -351
- package/src/config/services/index.ts +0 -29
- package/src/config/yamlConfig.ts +0 -761
- package/src/functions/pathResolution.ts +0 -227
- package/src/shared/attributeMapper.ts +0 -229
- package/src/shared/errorUtils.ts +0 -110
- package/src/shared/functionManager.ts +0 -525
- package/src/shared/indexManager.ts +0 -254
- package/src/shared/jsonSchemaGenerator.ts +0 -383
- package/src/shared/logging.ts +0 -149
- package/src/shared/messageFormatter.ts +0 -208
- package/src/shared/pydanticModelGenerator.ts +0 -618
- package/src/shared/schemaGenerator.ts +0 -644
- package/src/utils/ClientFactory.ts +0 -240
- package/src/utils/configDiscovery.ts +0 -557
- package/src/utils/constantsGenerator.ts +0 -369
- package/src/utils/dataConverters.ts +0 -159
- package/src/utils/directoryUtils.ts +0 -61
- package/src/utils/getClientFromConfig.ts +0 -257
- package/src/utils/helperFunctions.ts +0 -228
- package/src/utils/pathResolvers.ts +0 -81
- package/src/utils/projectConfig.ts +0 -299
- package/src/utils/retryFailedPromises.ts +0 -29
- package/src/utils/sessionAuth.ts +0 -230
- package/src/utils/typeGuards.ts +0 -65
- package/src/utils/validationRules.ts +0 -88
- package/src/utils/versionDetection.ts +0 -292
- package/src/utils/yamlConverter.ts +0 -542
- package/src/utils/yamlLoader.ts +0 -371
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DatabaseAdapter Interface - Unified API for Appwrite Database Operations
|
|
3
|
-
*
|
|
4
|
-
* This interface provides a unified way to interact with both legacy Appwrite
|
|
5
|
-
* (collections/documents) and new TablesDB (tables/rows) APIs. All internal
|
|
6
|
-
* code uses TablesDB-style method signatures for consistency.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { Client } from "node-appwrite";
|
|
10
|
-
import type { ApiMode } from "../utils/versionDetection.js";
|
|
11
|
-
|
|
12
|
-
// Base parameter types using TablesDB terminology
|
|
13
|
-
export interface CreateRowParams {
|
|
14
|
-
databaseId: string;
|
|
15
|
-
tableId: string;
|
|
16
|
-
id: string;
|
|
17
|
-
data: any;
|
|
18
|
-
permissions?: string[];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface UpdateRowParams {
|
|
22
|
-
databaseId: string;
|
|
23
|
-
tableId: string;
|
|
24
|
-
id: string;
|
|
25
|
-
data?: any;
|
|
26
|
-
permissions?: string[];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface ListRowsParams {
|
|
30
|
-
databaseId: string;
|
|
31
|
-
tableId: string;
|
|
32
|
-
queries?: any[];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface DeleteRowParams {
|
|
36
|
-
databaseId: string;
|
|
37
|
-
tableId: string;
|
|
38
|
-
id: string;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface CreateTableParams {
|
|
42
|
-
databaseId: string;
|
|
43
|
-
id: string;
|
|
44
|
-
name: string;
|
|
45
|
-
permissions?: string[];
|
|
46
|
-
documentSecurity?: boolean;
|
|
47
|
-
rowSecurity?: boolean;
|
|
48
|
-
enabled?: boolean;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export interface UpdateTableParams {
|
|
52
|
-
databaseId: string;
|
|
53
|
-
id: string;
|
|
54
|
-
name: string;
|
|
55
|
-
permissions?: string[];
|
|
56
|
-
documentSecurity?: boolean;
|
|
57
|
-
rowSecurity?: boolean;
|
|
58
|
-
enabled?: boolean;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export interface ListTablesParams {
|
|
62
|
-
databaseId: string;
|
|
63
|
-
queries?: any[];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export interface DeleteTableParams {
|
|
67
|
-
databaseId: string;
|
|
68
|
-
tableId: string;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export interface GetTableParams {
|
|
72
|
-
databaseId: string;
|
|
73
|
-
tableId: string;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Bulk operation parameters
|
|
77
|
-
export interface BulkCreateRowsParams {
|
|
78
|
-
databaseId: string;
|
|
79
|
-
tableId: string;
|
|
80
|
-
rows: any[];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface BulkUpsertRowsParams {
|
|
84
|
-
databaseId: string;
|
|
85
|
-
tableId: string;
|
|
86
|
-
rows: any[];
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export interface BulkDeleteRowsParams {
|
|
90
|
-
databaseId: string;
|
|
91
|
-
tableId: string;
|
|
92
|
-
rowIds: string[]; // Empty array = wipe mode (use Query.limit), otherwise specific IDs to delete
|
|
93
|
-
batchSize?: number; // Optional batch size for wipe mode (default 250)
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Index operation parameters
|
|
97
|
-
export interface CreateIndexParams {
|
|
98
|
-
databaseId: string;
|
|
99
|
-
tableId: string;
|
|
100
|
-
key: string;
|
|
101
|
-
type: string;
|
|
102
|
-
attributes: string[];
|
|
103
|
-
orders?: string[];
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export interface ListIndexesParams {
|
|
107
|
-
databaseId: string;
|
|
108
|
-
tableId: string;
|
|
109
|
-
queries?: any[];
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export interface DeleteIndexParams {
|
|
113
|
-
databaseId: string;
|
|
114
|
-
tableId: string;
|
|
115
|
-
key: string;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Attribute operation parameters
|
|
119
|
-
export interface CreateAttributeParams {
|
|
120
|
-
databaseId: string;
|
|
121
|
-
tableId: string;
|
|
122
|
-
key: string;
|
|
123
|
-
type: string;
|
|
124
|
-
size?: number;
|
|
125
|
-
required?: boolean;
|
|
126
|
-
default?: any;
|
|
127
|
-
array?: boolean;
|
|
128
|
-
encrypt?: boolean;
|
|
129
|
-
// Additional type-specific parameters
|
|
130
|
-
[key: string]: any;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export interface UpdateAttributeParams {
|
|
134
|
-
databaseId: string;
|
|
135
|
-
tableId: string;
|
|
136
|
-
key: string;
|
|
137
|
-
type?: string;
|
|
138
|
-
required?: boolean;
|
|
139
|
-
default?: any;
|
|
140
|
-
size?: number;
|
|
141
|
-
min?: number;
|
|
142
|
-
max?: number;
|
|
143
|
-
array?: boolean;
|
|
144
|
-
encrypt?: boolean;
|
|
145
|
-
elements?: string[];
|
|
146
|
-
relatedCollection?: string;
|
|
147
|
-
relationType?: string;
|
|
148
|
-
twoWay?: boolean;
|
|
149
|
-
twoWayKey?: string;
|
|
150
|
-
onDelete?: string;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export interface DeleteAttributeParams {
|
|
154
|
-
databaseId: string;
|
|
155
|
-
tableId: string;
|
|
156
|
-
key: string;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Response types with conditional typing
|
|
160
|
-
export interface ApiResponse<T = any> {
|
|
161
|
-
data?: T;
|
|
162
|
-
total?: number;
|
|
163
|
-
documents?: T[]; // Legacy compatibility
|
|
164
|
-
rows?: T[]; // TablesDB format
|
|
165
|
-
collections?: T[]; // Legacy format
|
|
166
|
-
tables?: T[]; // TablesDB format
|
|
167
|
-
errors?: any[]; // For bulk operation errors
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Metadata about the adapter
|
|
171
|
-
export interface AdapterMetadata {
|
|
172
|
-
apiMode: ApiMode;
|
|
173
|
-
terminology: {
|
|
174
|
-
container: 'collection' | 'table';
|
|
175
|
-
item: 'document' | 'row';
|
|
176
|
-
service: 'Databases' | 'TablesDB';
|
|
177
|
-
};
|
|
178
|
-
capabilities: {
|
|
179
|
-
bulkOperations: boolean;
|
|
180
|
-
advancedQueries: boolean;
|
|
181
|
-
realtime: boolean;
|
|
182
|
-
transactions?: boolean;
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Main DatabaseAdapter interface - all implementations must support these methods
|
|
188
|
-
*/
|
|
189
|
-
export interface DatabaseAdapter {
|
|
190
|
-
// Row (Document) operations - TablesDB-style signatures
|
|
191
|
-
listRows(params: ListRowsParams): Promise<ApiResponse>;
|
|
192
|
-
createRow(params: CreateRowParams): Promise<ApiResponse>;
|
|
193
|
-
updateRow(params: UpdateRowParams): Promise<ApiResponse>;
|
|
194
|
-
deleteRow(params: DeleteRowParams): Promise<ApiResponse>;
|
|
195
|
-
getRow(params: { databaseId: string; tableId: string; id: string }): Promise<ApiResponse>;
|
|
196
|
-
|
|
197
|
-
// Table (Collection) operations - TablesDB-style signatures
|
|
198
|
-
listTables(params: ListTablesParams): Promise<ApiResponse>;
|
|
199
|
-
createTable(params: CreateTableParams): Promise<ApiResponse>;
|
|
200
|
-
updateTable(params: UpdateTableParams): Promise<ApiResponse>;
|
|
201
|
-
deleteTable(params: DeleteTableParams): Promise<ApiResponse>;
|
|
202
|
-
getTable(params: GetTableParams): Promise<ApiResponse>;
|
|
203
|
-
|
|
204
|
-
// Index operations
|
|
205
|
-
listIndexes(params: ListIndexesParams): Promise<ApiResponse>;
|
|
206
|
-
createIndex(params: CreateIndexParams): Promise<ApiResponse>;
|
|
207
|
-
deleteIndex(params: DeleteIndexParams): Promise<ApiResponse>;
|
|
208
|
-
|
|
209
|
-
// Attribute operations
|
|
210
|
-
createAttribute(params: CreateAttributeParams): Promise<ApiResponse>;
|
|
211
|
-
updateAttribute(params: UpdateAttributeParams): Promise<ApiResponse>;
|
|
212
|
-
deleteAttribute(params: DeleteAttributeParams): Promise<ApiResponse>;
|
|
213
|
-
|
|
214
|
-
// Bulk operations (when supported)
|
|
215
|
-
bulkCreateRows?(params: BulkCreateRowsParams): Promise<ApiResponse>;
|
|
216
|
-
bulkUpsertRows?(params: BulkUpsertRowsParams): Promise<ApiResponse>;
|
|
217
|
-
bulkDeleteRows?(params: BulkDeleteRowsParams): Promise<ApiResponse>;
|
|
218
|
-
|
|
219
|
-
// Adapter metadata
|
|
220
|
-
getMetadata(): AdapterMetadata;
|
|
221
|
-
|
|
222
|
-
// Utility methods
|
|
223
|
-
supportsBulkOperations(): boolean;
|
|
224
|
-
getApiMode(): ApiMode;
|
|
225
|
-
getTerminology(): AdapterMetadata['terminology'];
|
|
226
|
-
|
|
227
|
-
// Raw client access for advanced operations
|
|
228
|
-
getRawClient(): any;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Base adapter class with common functionality
|
|
233
|
-
*/
|
|
234
|
-
export abstract class BaseAdapter implements DatabaseAdapter {
|
|
235
|
-
protected client: Client;
|
|
236
|
-
protected apiMode: ApiMode;
|
|
237
|
-
|
|
238
|
-
constructor(client: Client, apiMode: ApiMode) {
|
|
239
|
-
this.client = client;
|
|
240
|
-
this.apiMode = apiMode;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// Abstract methods that must be implemented by concrete adapters
|
|
244
|
-
abstract listRows(params: ListRowsParams): Promise<ApiResponse>;
|
|
245
|
-
abstract createRow(params: CreateRowParams): Promise<ApiResponse>;
|
|
246
|
-
abstract updateRow(params: UpdateRowParams): Promise<ApiResponse>;
|
|
247
|
-
abstract deleteRow(params: DeleteRowParams): Promise<ApiResponse>;
|
|
248
|
-
abstract getRow(params: { databaseId: string; tableId: string; id: string }): Promise<ApiResponse>;
|
|
249
|
-
|
|
250
|
-
abstract listTables(params: ListTablesParams): Promise<ApiResponse>;
|
|
251
|
-
abstract createTable(params: CreateTableParams): Promise<ApiResponse>;
|
|
252
|
-
abstract updateTable(params: UpdateTableParams): Promise<ApiResponse>;
|
|
253
|
-
abstract deleteTable(params: DeleteTableParams): Promise<ApiResponse>;
|
|
254
|
-
abstract getTable(params: GetTableParams): Promise<ApiResponse>;
|
|
255
|
-
|
|
256
|
-
abstract listIndexes(params: ListIndexesParams): Promise<ApiResponse>;
|
|
257
|
-
abstract createIndex(params: CreateIndexParams): Promise<ApiResponse>;
|
|
258
|
-
abstract deleteIndex(params: DeleteIndexParams): Promise<ApiResponse>;
|
|
259
|
-
|
|
260
|
-
abstract createAttribute(params: CreateAttributeParams): Promise<ApiResponse>;
|
|
261
|
-
abstract updateAttribute(params: UpdateAttributeParams): Promise<ApiResponse>;
|
|
262
|
-
abstract deleteAttribute(params: DeleteAttributeParams): Promise<ApiResponse>;
|
|
263
|
-
|
|
264
|
-
abstract getMetadata(): AdapterMetadata;
|
|
265
|
-
|
|
266
|
-
// Common implementations
|
|
267
|
-
getApiMode(): ApiMode {
|
|
268
|
-
return this.apiMode;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
getRawClient(): any {
|
|
272
|
-
return this.client;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
supportsBulkOperations(): boolean {
|
|
276
|
-
return this.getMetadata().capabilities.bulkOperations;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
getTerminology(): AdapterMetadata['terminology'] {
|
|
280
|
-
return this.getMetadata().terminology;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Error types for adapter operations
|
|
286
|
-
*/
|
|
287
|
-
export class AdapterError extends Error {
|
|
288
|
-
constructor(
|
|
289
|
-
message: string,
|
|
290
|
-
public readonly code: string,
|
|
291
|
-
public readonly originalError?: Error
|
|
292
|
-
) {
|
|
293
|
-
super(message);
|
|
294
|
-
this.name = 'AdapterError';
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
export class UnsupportedOperationError extends AdapterError {
|
|
299
|
-
constructor(operation: string, apiMode: ApiMode) {
|
|
300
|
-
super(
|
|
301
|
-
`Operation '${operation}' is not supported in ${apiMode} mode`,
|
|
302
|
-
'UNSUPPORTED_OPERATION'
|
|
303
|
-
);
|
|
304
|
-
this.name = 'UnsupportedOperationError';
|
|
305
|
-
}
|
|
306
|
-
}
|