appwrite-utils-cli 1.9.7 → 1.12.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/README.md +1004 -1004
- 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.js +156 -104
- 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 → columns.d.ts} +1 -1
- package/dist/collections/{attributes.js → columns.js} +15 -9
- package/dist/collections/indexes.js +1 -3
- package/dist/collections/methods.d.ts +1 -1
- package/dist/collections/methods.js +38 -20
- package/dist/collections/tableOperations.d.ts +1 -0
- package/dist/collections/tableOperations.js +30 -11
- 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 +6 -6
- package/dist/functions/fnConfigDiscovery.js +2 -2
- package/dist/functions/methods.js +2 -2
- package/dist/functions/templates/count-docs-in-collection/README.md +53 -53
- package/dist/functions/templates/count-docs-in-collection/src/main.ts +159 -159
- package/dist/functions/templates/count-docs-in-collection/src/request.ts +8 -8
- package/dist/functions/templates/hono-typescript/README.md +285 -285
- package/dist/functions/templates/hono-typescript/src/adapters/request.ts +73 -73
- package/dist/functions/templates/hono-typescript/src/adapters/response.ts +105 -105
- package/dist/functions/templates/hono-typescript/src/app.ts +179 -179
- package/dist/functions/templates/hono-typescript/src/context.ts +102 -102
- package/{src/functions/templates/hono-typescript/src/index.ts → dist/functions/templates/hono-typescript/src/main.ts} +53 -53
- package/dist/functions/templates/hono-typescript/src/middleware/appwrite.ts +118 -118
- package/dist/functions/templates/typescript-node/README.md +31 -31
- package/dist/functions/templates/typescript-node/src/context.ts +102 -102
- package/dist/functions/templates/typescript-node/src/{index.ts → main.ts} +29 -29
- package/dist/functions/templates/uv/README.md +30 -30
- package/dist/functions/templates/uv/pyproject.toml +29 -29
- package/dist/functions/templates/uv/src/context.py +124 -124
- package/dist/functions/templates/uv/src/{index.py → main.py} +45 -45
- package/dist/init.js +1 -1
- package/dist/interactiveCLI.d.ts +6 -1
- package/dist/interactiveCLI.js +79 -25
- package/dist/main.js +125 -180
- package/dist/migrations/afterImportActions.js +2 -3
- package/dist/migrations/appwriteToX.d.ts +1 -1
- package/dist/migrations/appwriteToX.js +10 -8
- package/dist/migrations/comprehensiveTransfer.js +3 -5
- package/dist/migrations/dataLoader.d.ts +4 -2
- package/dist/migrations/dataLoader.js +42 -20
- package/dist/migrations/importController.d.ts +2 -0
- package/dist/migrations/importController.js +39 -24
- 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.d.ts +2 -0
- package/dist/migrations/services/ImportOrchestrator.js +15 -7
- 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 +108 -55
- package/dist/migrations/yaml/YamlImportConfigLoader.js +52 -52
- package/dist/migrations/yaml/YamlImportIntegration.js +2 -2
- package/dist/migrations/yaml/generateImportSchemas.js +174 -174
- 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 +4 -4
- package/dist/shared/operationQueue.d.ts +1 -1
- package/dist/shared/operationQueue.js +3 -4
- package/dist/shared/operationsTable.d.ts +1 -1
- package/dist/shared/operationsTable.js +35 -34
- package/dist/shared/operationsTableSchema.d.ts +3 -3
- package/dist/shared/operationsTableSchema.js +2 -2
- package/dist/shared/progressManager.js +1 -1
- package/dist/shared/selectionDialogs.d.ts +6 -0
- package/dist/shared/selectionDialogs.js +56 -12
- package/dist/storage/methods.d.ts +12 -0
- package/dist/storage/methods.js +92 -89
- package/dist/storage/schemas.d.ts +2 -2
- package/dist/tables/indexManager.d.ts +1 -1
- package/dist/tables/indexManager.js +2 -2
- 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 +139 -141
- package/dist/utilsController.d.ts +16 -9
- package/dist/utilsController.js +93 -68
- package/package.json +9 -3
- package/.appwrite/.yaml_schemas/appwrite-config.schema.json +0 -380
- package/.appwrite/.yaml_schemas/collection.schema.json +0 -255
- package/.appwrite/collections/Categories.yaml +0 -182
- package/.appwrite/collections/ExampleCollection.yaml +0 -36
- package/.appwrite/collections/Posts.yaml +0 -227
- package/.appwrite/collections/Users.yaml +0 -149
- package/.appwrite/config.yaml +0 -109
- package/.appwrite/import/README.md +0 -148
- package/.appwrite/import/categories-import.yaml +0 -129
- package/.appwrite/import/posts-import.yaml +0 -208
- package/.appwrite/import/users-import.yaml +0 -130
- package/.appwrite/importData/categories.json +0 -194
- package/.appwrite/importData/posts.json +0 -270
- package/.appwrite/importData/users.json +0 -220
- package/.appwrite/schemas/categories.json +0 -128
- package/.appwrite/schemas/exampleCollection.json +0 -52
- package/.appwrite/schemas/posts.json +0 -173
- package/.appwrite/schemas/users.json +0 -125
- package/CHANGELOG.md +0 -35
- package/CONFIG_TODO.md +0 -1189
- package/SELECTION_DIALOGS.md +0 -146
- package/SERVICE_IMPLEMENTATION_REPORT.md +0 -462
- package/dist/adapters/AdapterFactory.d.ts +0 -94
- package/dist/adapters/AdapterFactory.js +0 -420
- package/dist/adapters/DatabaseAdapter.d.ts +0 -243
- package/dist/adapters/DatabaseAdapter.js +0 -50
- package/dist/adapters/LegacyAdapter.d.ts +0 -50
- package/dist/adapters/LegacyAdapter.js +0 -615
- package/dist/adapters/TablesDBAdapter.d.ts +0 -45
- package/dist/adapters/TablesDBAdapter.js +0 -611
- package/dist/config/ConfigManager.d.ts +0 -450
- package/dist/config/ConfigManager.js +0 -650
- 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 -122
- package/dist/config/services/ConfigDiscoveryService.js +0 -322
- package/dist/config/services/ConfigLoaderService.d.ts +0 -129
- package/dist/config/services/ConfigLoaderService.js +0 -535
- 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/functions/templates/count-docs-in-collection/package.json +0 -25
- package/dist/functions/templates/count-docs-in-collection/tsconfig.json +0 -28
- package/dist/functions/templates/hono-typescript/package.json +0 -26
- package/dist/functions/templates/hono-typescript/src/index.ts +0 -54
- package/dist/functions/templates/hono-typescript/tsconfig.json +0 -20
- package/dist/functions/templates/typescript-node/package.json +0 -25
- package/dist/functions/templates/typescript-node/tsconfig.json +0 -28
- 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 -348
- 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 -122
- package/dist/utils/projectConfig.js +0 -206
- 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/scripts/copy-templates.ts +0 -23
- package/src/adapters/AdapterFactory.ts +0 -529
- package/src/adapters/DatabaseAdapter.ts +0 -319
- package/src/adapters/LegacyAdapter.ts +0 -844
- package/src/adapters/TablesDBAdapter.ts +0 -823
- package/src/adapters/index.ts +0 -37
- package/src/backups/operations/bucketBackup.ts +0 -277
- package/src/backups/operations/collectionBackup.ts +0 -310
- package/src/backups/operations/comprehensiveBackup.ts +0 -342
- package/src/backups/schemas/bucketManifest.ts +0 -78
- package/src/backups/schemas/comprehensiveManifest.ts +0 -76
- package/src/backups/tracking/centralizedTracking.ts +0 -352
- package/src/cli/commands/configCommands.ts +0 -201
- package/src/cli/commands/databaseCommands.ts +0 -879
- package/src/cli/commands/functionCommands.ts +0 -418
- package/src/cli/commands/schemaCommands.ts +0 -200
- package/src/cli/commands/storageCommands.ts +0 -152
- package/src/cli/commands/transferCommands.ts +0 -457
- package/src/collections/attributes.ts +0 -2020
- package/src/collections/attributes.ts.backup +0 -1555
- package/src/collections/indexes.ts +0 -352
- package/src/collections/methods.ts +0 -700
- package/src/collections/tableOperations.ts +0 -521
- package/src/collections/transferOperations.ts +0 -590
- package/src/collections/wipeOperations.ts +0 -346
- package/src/config/ConfigManager.ts +0 -849
- 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 -410
- package/src/config/services/ConfigLoaderService.ts +0 -732
- 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/databases/methods.ts +0 -49
- package/src/databases/setup.ts +0 -77
- package/src/examples/yamlTerminologyExample.ts +0 -346
- package/src/functions/deployments.ts +0 -220
- package/src/functions/fnConfigDiscovery.ts +0 -103
- package/src/functions/methods.ts +0 -284
- package/src/functions/pathResolution.ts +0 -227
- package/src/functions/templates/count-docs-in-collection/README.md +0 -54
- package/src/functions/templates/count-docs-in-collection/package.json +0 -25
- package/src/functions/templates/count-docs-in-collection/src/main.ts +0 -159
- package/src/functions/templates/count-docs-in-collection/src/request.ts +0 -9
- package/src/functions/templates/count-docs-in-collection/tsconfig.json +0 -28
- package/src/functions/templates/hono-typescript/README.md +0 -286
- package/src/functions/templates/hono-typescript/package.json +0 -26
- package/src/functions/templates/hono-typescript/src/adapters/request.ts +0 -74
- package/src/functions/templates/hono-typescript/src/adapters/response.ts +0 -106
- package/src/functions/templates/hono-typescript/src/app.ts +0 -180
- package/src/functions/templates/hono-typescript/src/context.ts +0 -103
- package/src/functions/templates/hono-typescript/src/middleware/appwrite.ts +0 -119
- package/src/functions/templates/hono-typescript/tsconfig.json +0 -20
- package/src/functions/templates/typescript-node/README.md +0 -32
- package/src/functions/templates/typescript-node/package.json +0 -25
- package/src/functions/templates/typescript-node/src/context.ts +0 -103
- package/src/functions/templates/typescript-node/src/index.ts +0 -29
- package/src/functions/templates/typescript-node/tsconfig.json +0 -28
- package/src/functions/templates/uv/README.md +0 -31
- package/src/functions/templates/uv/pyproject.toml +0 -30
- package/src/functions/templates/uv/src/__init__.py +0 -0
- package/src/functions/templates/uv/src/context.py +0 -125
- package/src/functions/templates/uv/src/index.py +0 -46
- package/src/init.ts +0 -62
- package/src/interactiveCLI.ts +0 -1136
- package/src/main.ts +0 -1670
- package/src/migrations/afterImportActions.ts +0 -580
- package/src/migrations/appwriteToX.ts +0 -664
- package/src/migrations/comprehensiveTransfer.ts +0 -2285
- package/src/migrations/dataLoader.ts +0 -1702
- package/src/migrations/importController.ts +0 -428
- package/src/migrations/importDataActions.ts +0 -315
- package/src/migrations/relationships.ts +0 -334
- package/src/migrations/services/DataTransformationService.ts +0 -196
- package/src/migrations/services/FileHandlerService.ts +0 -311
- package/src/migrations/services/ImportOrchestrator.ts +0 -666
- package/src/migrations/services/RateLimitManager.ts +0 -363
- package/src/migrations/services/RelationshipResolver.ts +0 -461
- package/src/migrations/services/UserMappingService.ts +0 -345
- package/src/migrations/services/ValidationService.ts +0 -349
- package/src/migrations/transfer.ts +0 -1068
- package/src/migrations/yaml/YamlImportConfigLoader.ts +0 -439
- package/src/migrations/yaml/YamlImportIntegration.ts +0 -446
- package/src/migrations/yaml/generateImportSchemas.ts +0 -1354
- package/src/schemas/authUser.ts +0 -23
- package/src/setup.ts +0 -8
- package/src/setupCommands.ts +0 -603
- package/src/setupController.ts +0 -43
- package/src/shared/attributeMapper.ts +0 -229
- package/src/shared/backupMetadataSchema.ts +0 -93
- package/src/shared/backupTracking.ts +0 -211
- package/src/shared/confirmationDialogs.ts +0 -327
- package/src/shared/errorUtils.ts +0 -110
- package/src/shared/functionManager.ts +0 -537
- package/src/shared/jsonSchemaGenerator.ts +0 -383
- package/src/shared/logging.ts +0 -149
- package/src/shared/messageFormatter.ts +0 -208
- package/src/shared/migrationHelpers.ts +0 -232
- package/src/shared/operationLogger.ts +0 -20
- package/src/shared/operationQueue.ts +0 -377
- package/src/shared/operationsTable.ts +0 -338
- package/src/shared/operationsTableSchema.ts +0 -60
- package/src/shared/progressManager.ts +0 -278
- package/src/shared/pydanticModelGenerator.ts +0 -618
- package/src/shared/relationshipExtractor.ts +0 -214
- package/src/shared/schemaGenerator.ts +0 -644
- package/src/shared/selectionDialogs.ts +0 -749
- package/src/storage/backupCompression.ts +0 -88
- package/src/storage/methods.ts +0 -698
- package/src/storage/schemas.ts +0 -205
- package/src/tables/indexManager.ts +0 -409
- package/src/types/node-appwrite-tablesdb.d.ts +0 -44
- package/src/types.ts +0 -9
- package/src/users/methods.ts +0 -359
- package/src/utils/ClientFactory.ts +0 -240
- package/src/utils/configDiscovery.ts +0 -557
- package/src/utils/configMigration.ts +0 -348
- 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/index.ts +0 -2
- package/src/utils/loadConfigs.ts +0 -449
- package/src/utils/pathResolvers.ts +0 -81
- package/src/utils/projectConfig.ts +0 -340
- package/src/utils/retryFailedPromises.ts +0 -29
- package/src/utils/sessionAuth.ts +0 -230
- package/src/utils/setupFiles.ts +0 -1238
- 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
- package/src/utilsController.ts +0 -1213
- package/tests/README.md +0 -497
- package/tests/adapters/AdapterFactory.test.ts +0 -277
- package/tests/integration/syncOperations.test.ts +0 -463
- package/tests/jest.config.js +0 -25
- package/tests/migration/configMigration.test.ts +0 -546
- package/tests/setup.ts +0 -62
- package/tests/testUtils.ts +0 -340
- package/tests/utils/loadConfigs.test.ts +0 -350
- package/tests/validation/configValidation.test.ts +0 -412
- package/tmp-sync-test/.appwrite/collections/TestCollection.yaml +0 -7
- package/tsconfig.json +0 -44
package/dist/interactiveCLI.js
CHANGED
|
@@ -12,9 +12,8 @@ import { join } from "node:path";
|
|
|
12
12
|
import path from "path";
|
|
13
13
|
import fs from "node:fs";
|
|
14
14
|
import os from "node:os";
|
|
15
|
-
import { MessageFormatter } from "
|
|
15
|
+
import { MessageFormatter, findYamlConfig } from "appwrite-utils-helpers";
|
|
16
16
|
import { findAppwriteConfig } from "./utils/loadConfigs.js";
|
|
17
|
-
import { findYamlConfig } from "./config/yamlConfig.js";
|
|
18
17
|
// Import command modules
|
|
19
18
|
import { configCommands } from "./cli/commands/configCommands.js";
|
|
20
19
|
import { databaseCommands } from "./cli/commands/databaseCommands.js";
|
|
@@ -22,6 +21,7 @@ import { functionCommands } from "./cli/commands/functionCommands.js";
|
|
|
22
21
|
import { storageCommands } from "./cli/commands/storageCommands.js";
|
|
23
22
|
import { transferCommands } from "./cli/commands/transferCommands.js";
|
|
24
23
|
import { schemaCommands } from "./cli/commands/schemaCommands.js";
|
|
24
|
+
import { importFileCommands } from "./cli/commands/importFileCommands.js";
|
|
25
25
|
var CHOICES;
|
|
26
26
|
(function (CHOICES) {
|
|
27
27
|
CHOICES["MIGRATE_CONFIG"] = "\uD83D\uDD04 Migrate TypeScript config to YAML (.appwrite structure)";
|
|
@@ -39,10 +39,11 @@ var CHOICES;
|
|
|
39
39
|
CHOICES["COMPREHENSIVE_TRANSFER"] = "\uD83D\uDE80 Comprehensive transfer (users \u2192 databases \u2192 buckets \u2192 functions)";
|
|
40
40
|
CHOICES["BACKUP_DATABASE"] = "\uD83D\uDCBE Backup database";
|
|
41
41
|
CHOICES["WIPE_DATABASE"] = "\uD83E\uDDF9 Wipe database";
|
|
42
|
-
CHOICES["WIPE_COLLECTIONS"] = "\uD83E\uDDF9 Wipe
|
|
42
|
+
CHOICES["WIPE_COLLECTIONS"] = "\uD83E\uDDF9 Wipe tables";
|
|
43
43
|
CHOICES["GENERATE_SCHEMAS"] = "\uD83C\uDFD7\uFE0F Generate schemas";
|
|
44
44
|
CHOICES["GENERATE_CONSTANTS"] = "\uD83D\uDCCB Generate cross-language constants (TypeScript, Python, PHP, Dart, etc.)";
|
|
45
45
|
CHOICES["IMPORT_DATA"] = "\uD83D\uDCE5 Import data";
|
|
46
|
+
CHOICES["IMPORT_FILE"] = "\uD83D\uDCC4 Import file (CSV/JSON) directly into a table";
|
|
46
47
|
CHOICES["RELOAD_CONFIG"] = "\uD83D\uDD04 Reload configuration files";
|
|
47
48
|
CHOICES["UPDATE_FUNCTION_SPEC"] = "\u2699\uFE0F Update function specifications";
|
|
48
49
|
CHOICES["MANAGE_BUCKETS"] = "\uD83E\uDEA3 Manage storage buckets";
|
|
@@ -53,8 +54,10 @@ export class InteractiveCLI {
|
|
|
53
54
|
controller;
|
|
54
55
|
isUsingTypeScriptConfig = false;
|
|
55
56
|
lastSelectedCollectionIds = [];
|
|
56
|
-
|
|
57
|
+
options;
|
|
58
|
+
constructor(currentDir, options = {}) {
|
|
57
59
|
this.currentDir = currentDir;
|
|
60
|
+
this.options = options;
|
|
58
61
|
}
|
|
59
62
|
async run() {
|
|
60
63
|
MessageFormatter.banner("Appwrite Utils CLI", "Welcome to Appwrite Utils CLI Tool by Zach Handley");
|
|
@@ -148,6 +151,10 @@ export class InteractiveCLI {
|
|
|
148
151
|
await this.initControllerIfNeeded();
|
|
149
152
|
await schemaCommands.importData(this);
|
|
150
153
|
break;
|
|
154
|
+
case CHOICES.IMPORT_FILE:
|
|
155
|
+
await this.initControllerIfNeeded();
|
|
156
|
+
await importFileCommands.importFile(this);
|
|
157
|
+
break;
|
|
151
158
|
case CHOICES.RELOAD_CONFIG:
|
|
152
159
|
await configCommands.reloadConfigWithSessionPreservation(this);
|
|
153
160
|
break;
|
|
@@ -167,7 +174,10 @@ export class InteractiveCLI {
|
|
|
167
174
|
async initControllerIfNeeded(directConfig) {
|
|
168
175
|
if (!this.controller) {
|
|
169
176
|
this.controller = UtilsController.getInstance(this.currentDir, directConfig);
|
|
170
|
-
await this.controller.init(
|
|
177
|
+
await this.controller.init({
|
|
178
|
+
useSession: this.options.useSession,
|
|
179
|
+
sessionCookie: this.options.sessionCookie
|
|
180
|
+
});
|
|
171
181
|
}
|
|
172
182
|
else {
|
|
173
183
|
// Extract session info from existing controller before reinitializing
|
|
@@ -182,13 +192,19 @@ export class InteractiveCLI {
|
|
|
182
192
|
// Reinitialize with session preservation
|
|
183
193
|
UtilsController.clearInstance();
|
|
184
194
|
this.controller = UtilsController.getInstance(this.currentDir, enhancedDirectConfig);
|
|
185
|
-
await this.controller.init(
|
|
195
|
+
await this.controller.init({
|
|
196
|
+
useSession: this.options.useSession,
|
|
197
|
+
sessionCookie: this.options.sessionCookie
|
|
198
|
+
});
|
|
186
199
|
}
|
|
187
200
|
else if (directConfig) {
|
|
188
201
|
// Standard reinitialize without session
|
|
189
202
|
UtilsController.clearInstance();
|
|
190
203
|
this.controller = UtilsController.getInstance(this.currentDir, directConfig);
|
|
191
|
-
await this.controller.init(
|
|
204
|
+
await this.controller.init({
|
|
205
|
+
useSession: this.options.useSession,
|
|
206
|
+
sessionCookie: this.options.sessionCookie
|
|
207
|
+
});
|
|
192
208
|
}
|
|
193
209
|
// If no directConfig provided, keep existing controller
|
|
194
210
|
}
|
|
@@ -258,7 +274,8 @@ export class InteractiveCLI {
|
|
|
258
274
|
pageSize: 10,
|
|
259
275
|
},
|
|
260
276
|
]);
|
|
261
|
-
|
|
277
|
+
// "list" type returns a single value, "checkbox" returns an array — normalize to array
|
|
278
|
+
return Array.isArray(selectedDatabases) ? selectedDatabases : [selectedDatabases];
|
|
262
279
|
}
|
|
263
280
|
async selectCollections(database, databasesClient, message, multiSelect = true, preferLocal = false, shouldFilterByDatabase = false) {
|
|
264
281
|
await this.initControllerIfNeeded();
|
|
@@ -299,6 +316,9 @@ export class InteractiveCLI {
|
|
|
299
316
|
allCollections = allCollections.filter((collection) => !collection.$id.startsWith('_'));
|
|
300
317
|
const hasLocalAndRemote = allCollections.some((coll) => configCollections.some((c) => c.name === coll.name || c.$id === coll.$id)) &&
|
|
301
318
|
allCollections.some((coll) => !configCollections.some((c) => c.name === coll.name || c.$id === coll.$id));
|
|
319
|
+
const getCollectionId = (collection) => collection.$id || collection.name;
|
|
320
|
+
const localCollectionIds = new Set(configCollections.map((c) => c.$id || c.name));
|
|
321
|
+
const localCollections = allCollections.filter((collection) => localCollectionIds.has(getCollectionId(collection)));
|
|
302
322
|
// Enhanced choice display with type indicators
|
|
303
323
|
const choices = allCollections
|
|
304
324
|
.sort((a, b) => {
|
|
@@ -349,6 +369,18 @@ export class InteractiveCLI {
|
|
|
349
369
|
value: collection,
|
|
350
370
|
};
|
|
351
371
|
});
|
|
372
|
+
if (multiSelect && localCollections.length > 1) {
|
|
373
|
+
choices.unshift({
|
|
374
|
+
name: chalk.green.bold(`📋 Select All Local Items (${localCollections.length})`),
|
|
375
|
+
value: "__SELECT_ALL_LOCAL__"
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
if (multiSelect && allCollections.length > 1) {
|
|
379
|
+
choices.unshift({
|
|
380
|
+
name: chalk.green.bold(`📋 Select All Shown (${allCollections.length})`),
|
|
381
|
+
value: "__SELECT_ALL__"
|
|
382
|
+
});
|
|
383
|
+
}
|
|
352
384
|
const { selectedCollections } = await inquirer.prompt([
|
|
353
385
|
{
|
|
354
386
|
type: multiSelect ? "checkbox" : "list",
|
|
@@ -357,8 +389,27 @@ export class InteractiveCLI {
|
|
|
357
389
|
choices,
|
|
358
390
|
loop: true,
|
|
359
391
|
pageSize: 15, // Increased page size to accommodate additional info
|
|
392
|
+
validate: (input) => {
|
|
393
|
+
if (!multiSelect)
|
|
394
|
+
return true;
|
|
395
|
+
if (input.includes("__SELECT_ALL__") && input.length > 1) {
|
|
396
|
+
return "Cannot select 'Select All' with individual items.";
|
|
397
|
+
}
|
|
398
|
+
if (input.includes("__SELECT_ALL_LOCAL__") && input.length > 1) {
|
|
399
|
+
return "Cannot select 'Select All Local' with individual items.";
|
|
400
|
+
}
|
|
401
|
+
return true;
|
|
402
|
+
}
|
|
360
403
|
},
|
|
361
404
|
]);
|
|
405
|
+
if (multiSelect && Array.isArray(selectedCollections)) {
|
|
406
|
+
if (selectedCollections.includes("__SELECT_ALL__")) {
|
|
407
|
+
return allCollections;
|
|
408
|
+
}
|
|
409
|
+
if (selectedCollections.includes("__SELECT_ALL_LOCAL__")) {
|
|
410
|
+
return localCollections;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
362
413
|
return selectedCollections;
|
|
363
414
|
}
|
|
364
415
|
/**
|
|
@@ -371,26 +422,26 @@ export class InteractiveCLI {
|
|
|
371
422
|
const totalCount = collectionsCount + tablesCount;
|
|
372
423
|
// Provide context about what's available
|
|
373
424
|
if (collectionsCount > 0 && tablesCount > 0) {
|
|
374
|
-
MessageFormatter.info(`\n
|
|
375
|
-
MessageFormatter.info(`
|
|
376
|
-
MessageFormatter.info(`
|
|
425
|
+
MessageFormatter.info(`\n${totalCount} total tables available:`, { prefix: "Tables" });
|
|
426
|
+
MessageFormatter.info(` From collections/ folder: ${collectionsCount}`, { prefix: "Tables" });
|
|
427
|
+
MessageFormatter.info(` From tables/ folder: ${tablesCount}`, { prefix: "Tables" });
|
|
377
428
|
}
|
|
378
429
|
else if (collectionsCount > 0) {
|
|
379
|
-
MessageFormatter.info(
|
|
430
|
+
MessageFormatter.info(`${collectionsCount} tables available from collections/ folder`, { prefix: "Tables" });
|
|
380
431
|
}
|
|
381
432
|
else if (tablesCount > 0) {
|
|
382
|
-
MessageFormatter.info(
|
|
433
|
+
MessageFormatter.info(`${tablesCount} tables available from tables/ folder`, { prefix: "Tables" });
|
|
383
434
|
}
|
|
384
435
|
// Show current database context clearly before view mode selection
|
|
385
|
-
MessageFormatter.info(`DB: ${database.name}`, { prefix: "
|
|
436
|
+
MessageFormatter.info(`DB: ${database.name}`, { prefix: "Tables" });
|
|
386
437
|
// Ask user if they want to filter by database, show all, or reuse previous selection
|
|
387
438
|
const choices = [
|
|
388
439
|
{
|
|
389
|
-
name: `Show all available
|
|
440
|
+
name: `Show all available tables (${totalCount} total) - You can push any table to any database`,
|
|
390
441
|
value: "all"
|
|
391
442
|
},
|
|
392
443
|
{
|
|
393
|
-
name: `Filter by database "${database.name}" - Show only related
|
|
444
|
+
name: `Filter by database "${database.name}" - Show only related tables`,
|
|
394
445
|
value: "filter"
|
|
395
446
|
}
|
|
396
447
|
];
|
|
@@ -404,7 +455,7 @@ export class InteractiveCLI {
|
|
|
404
455
|
{
|
|
405
456
|
type: "list",
|
|
406
457
|
name: "filterChoice",
|
|
407
|
-
message: chalk.blue("How would you like to view
|
|
458
|
+
message: chalk.blue("How would you like to view tables?"),
|
|
408
459
|
choices,
|
|
409
460
|
default: choices[0]?.value || "all"
|
|
410
461
|
}
|
|
@@ -422,16 +473,16 @@ export class InteractiveCLI {
|
|
|
422
473
|
const userWantsFiltering = filterChoice === "filter";
|
|
423
474
|
// Show appropriate informational message
|
|
424
475
|
if (userWantsFiltering) {
|
|
425
|
-
MessageFormatter.info(
|
|
476
|
+
MessageFormatter.info(`Showing tables related to database "${database.name}"`, { prefix: "Tables" });
|
|
426
477
|
if (tablesCount > 0) {
|
|
427
478
|
const filteredTables = configCollections.filter(c => c._isFromTablesDir && (!c.databaseId || c.databaseId === database.$id)).length;
|
|
428
479
|
if (filteredTables !== tablesCount) {
|
|
429
|
-
MessageFormatter.info(` ${filteredTables}/${tablesCount} tables match this database`, { prefix: "
|
|
480
|
+
MessageFormatter.info(` ${filteredTables}/${tablesCount} tables match this database`, { prefix: "Tables" });
|
|
430
481
|
}
|
|
431
482
|
}
|
|
432
483
|
}
|
|
433
484
|
else {
|
|
434
|
-
MessageFormatter.info(
|
|
485
|
+
MessageFormatter.info(`Showing all available tables - you can push any table to any database\n`, { prefix: "Tables" });
|
|
435
486
|
}
|
|
436
487
|
const result = await this.selectCollections(database, databasesClient, message, multiSelect, preferLocal, userWantsFiltering);
|
|
437
488
|
// Remember this selection for subsequent databases
|
|
@@ -442,19 +493,19 @@ export class InteractiveCLI {
|
|
|
442
493
|
const defaults = {
|
|
443
494
|
"typescript-node": {
|
|
444
495
|
runtime: "node-21.0",
|
|
445
|
-
entrypoint: "src/
|
|
496
|
+
entrypoint: "src/main.ts",
|
|
446
497
|
commands: "npm install && npm run build",
|
|
447
498
|
specification: "s-0.5vcpu-512mb",
|
|
448
499
|
},
|
|
449
500
|
"hono-typescript": {
|
|
450
501
|
runtime: "node-21.0",
|
|
451
|
-
entrypoint: "src/
|
|
502
|
+
entrypoint: "src/main.ts",
|
|
452
503
|
commands: "npm install && npm run build",
|
|
453
504
|
specification: "s-0.5vcpu-512mb",
|
|
454
505
|
},
|
|
455
506
|
"uv": {
|
|
456
507
|
runtime: "python-3.12",
|
|
457
|
-
entrypoint: "src/
|
|
508
|
+
entrypoint: "src/main.py",
|
|
458
509
|
commands: "uv sync && uv build",
|
|
459
510
|
specification: "s-0.5vcpu-512mb",
|
|
460
511
|
},
|
|
@@ -584,7 +635,7 @@ export class InteractiveCLI {
|
|
|
584
635
|
ignore: f.ignore,
|
|
585
636
|
enabled: f.enabled !== false,
|
|
586
637
|
logging: f.logging !== false,
|
|
587
|
-
entrypoint: f.entrypoint || "src/
|
|
638
|
+
entrypoint: f.entrypoint || "src/main.ts",
|
|
588
639
|
commands: f.commands || "npm install",
|
|
589
640
|
scopes: f.scopes || [], // Add scopes
|
|
590
641
|
path: f.dirPath || `functions/${f.name}`,
|
|
@@ -800,7 +851,10 @@ export class InteractiveCLI {
|
|
|
800
851
|
}, bucketId.length > 0 ? bucketId : ulid());
|
|
801
852
|
}
|
|
802
853
|
getLocalCollections() {
|
|
803
|
-
const configCollections =
|
|
854
|
+
const configCollections = [
|
|
855
|
+
...(this.controller.config?.collections || []),
|
|
856
|
+
...(this.controller.config?.tables || [])
|
|
857
|
+
];
|
|
804
858
|
// @ts-expect-error - appwrite invalid types
|
|
805
859
|
return configCollections.map((c) => ({
|
|
806
860
|
$id: c.$id || ulid(),
|