@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,10 +1,9 @@
|
|
|
1
1
|
import { converterFunctions, tryAwaitWithRetry, parseAttribute, objectNeedsUpdate, } from "@njdamstra/appwrite-utils";
|
|
2
2
|
import { Client, Databases, Storage, Users, Functions, Teams, Query, AppwriteException, } from "node-appwrite";
|
|
3
3
|
import { InputFile } from "node-appwrite/file";
|
|
4
|
-
import { MessageFormatter } from "
|
|
4
|
+
import { MessageFormatter, getClient } from "@njdamstra/appwrite-utils-helpers";
|
|
5
5
|
import { processQueue, queuedOperations } from "../shared/operationQueue.js";
|
|
6
6
|
import { ProgressManager } from "../shared/progressManager.js";
|
|
7
|
-
import { getClient } from "../utils/getClientFromConfig.js";
|
|
8
7
|
import { transferDatabaseLocalToLocal, transferDatabaseLocalToRemote, transferStorageLocalToLocal, transferStorageLocalToRemote, transferUsersLocalToRemote, } from "./transfer.js";
|
|
9
8
|
import { deployLocalFunction } from "../functions/deployments.js";
|
|
10
9
|
import { listFunctions, downloadLatestFunctionDeployment, } from "../functions/methods.js";
|
|
@@ -12,8 +11,7 @@ import pLimit from "p-limit";
|
|
|
12
11
|
import chalk from "chalk";
|
|
13
12
|
import { join } from "node:path";
|
|
14
13
|
import fs from "node:fs";
|
|
15
|
-
import { getAdapter } from "
|
|
16
|
-
import { mapToCreateAttributeParams } from "../shared/attributeMapper.js";
|
|
14
|
+
import { getAdapter, mapToCreateAttributeParams } from "@njdamstra/appwrite-utils-helpers";
|
|
17
15
|
export class ComprehensiveTransfer {
|
|
18
16
|
options;
|
|
19
17
|
sourceClient;
|
|
@@ -714,7 +712,7 @@ export class ComprehensiveTransfer {
|
|
|
714
712
|
specification: func.specification,
|
|
715
713
|
dirPath: functionPath,
|
|
716
714
|
};
|
|
717
|
-
await deployLocalFunction(this.targetClient, func.name, functionConfig);
|
|
715
|
+
await deployLocalFunction(this.targetClient, func.name, functionConfig, undefined, this.tempDir);
|
|
718
716
|
this.results.functions.transferred++;
|
|
719
717
|
MessageFormatter.success(`Function ${func.name} transferred successfully`, { prefix: "Transfer" });
|
|
720
718
|
}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { AttributeMappingsSchema, CollectionCreateSchema, importDefSchema, } from "@njdamstra/appwrite-utils";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
|
-
import { convertObjectByAttributeMappings } from "
|
|
4
|
+
import { convertObjectByAttributeMappings } from "@njdamstra/appwrite-utils-helpers";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { checkForCollection } from "../collections/methods.js";
|
|
7
7
|
import { ID, Users } from "node-appwrite";
|
|
8
|
-
import { logger } from "
|
|
8
|
+
import { logger, LegacyAdapter, MessageFormatter } from "@njdamstra/appwrite-utils-helpers";
|
|
9
9
|
import { findOrCreateOperation, updateOperation } from "../shared/migrationHelpers.js";
|
|
10
10
|
import { AuthUserCreateSchema } from "../schemas/authUser.js";
|
|
11
|
-
import { LegacyAdapter } from "../adapters/LegacyAdapter.js";
|
|
12
11
|
import { UsersController } from "../users/methods.js";
|
|
13
|
-
import { finalizeByAttributeMap } from "../utils/helperFunctions.js";
|
|
14
12
|
import { isEmpty } from "es-toolkit/compat";
|
|
15
|
-
import { MessageFormatter } from "../shared/messageFormatter.js";
|
|
16
13
|
// Define a schema for the structure of collection import data using Zod for validation
|
|
17
14
|
export const CollectionImportDataSchema = z.object({
|
|
18
15
|
// Optional collection creation schema
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { AppwriteException, ID, Query, } from "node-appwrite";
|
|
2
|
-
import { areCollectionNamesSame, tryAwaitWithRetry } from "
|
|
2
|
+
import { areCollectionNamesSame, tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
3
3
|
import { resolveAndUpdateRelationships } from "./relationships.js";
|
|
4
4
|
import { UsersController } from "../users/methods.js";
|
|
5
|
-
import { logger } from "
|
|
5
|
+
import { logger, LegacyAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
6
6
|
import { updateOperation } from "../shared/migrationHelpers.js";
|
|
7
|
-
import { LegacyAdapter } from "../adapters/LegacyAdapter.js";
|
|
8
7
|
import { BatchSchema, OperationCreateSchema, OperationSchema, } from "../storage/schemas.js";
|
|
9
8
|
import { DataLoader } from "./dataLoader.js";
|
|
10
9
|
import { transferDatabaseLocalToLocal, transferStorageLocalToLocal, } from "./transfer.js";
|
|
11
|
-
import { MessageFormatter } from "
|
|
10
|
+
import { MessageFormatter } from "@njdamstra/appwrite-utils-helpers";
|
|
12
11
|
import { ProgressManager } from "../shared/progressManager.js";
|
|
13
12
|
export class ImportController {
|
|
14
13
|
config;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {} from "node-appwrite";
|
|
2
2
|
import { validationRules, } from "@njdamstra/appwrite-utils";
|
|
3
3
|
import { converterFunctions } from "@njdamstra/appwrite-utils";
|
|
4
|
-
import { convertObjectBySchema } from "
|
|
4
|
+
import { convertObjectBySchema } from "@njdamstra/appwrite-utils-helpers";
|
|
5
5
|
import {} from "@njdamstra/appwrite-utils";
|
|
6
6
|
import { afterImportActions } from "./afterImportActions.js";
|
|
7
|
-
import { logger } from "
|
|
8
|
-
import { tryAwaitWithRetry } from "
|
|
7
|
+
import { logger } from "@njdamstra/appwrite-utils-helpers";
|
|
8
|
+
import { tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
9
9
|
export class ImportDataActions {
|
|
10
10
|
db;
|
|
11
11
|
storage;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Databases, Query } from "node-appwrite";
|
|
2
2
|
import { fetchAllCollections } from "../collections/methods.js";
|
|
3
|
-
import { logger } from "
|
|
4
|
-
import { MessageFormatter } from "../shared/messageFormatter.js";
|
|
3
|
+
import { logger, MessageFormatter } from "@njdamstra/appwrite-utils-helpers";
|
|
5
4
|
/**
|
|
6
5
|
* Finds collections that have defined relationship attributes.
|
|
7
6
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { convertObjectByAttributeMappings } from "
|
|
2
|
-
import { logger } from
|
|
1
|
+
import { convertObjectByAttributeMappings } from "@njdamstra/appwrite-utils-helpers";
|
|
2
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
3
3
|
/**
|
|
4
4
|
* Service responsible for data transformation during import.
|
|
5
5
|
* Extracted from DataLoader to provide focused, testable transformation logic.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
|
-
import { logger } from
|
|
3
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
4
4
|
import { RateLimitManager } from "./RateLimitManager.js";
|
|
5
5
|
/**
|
|
6
6
|
* Service responsible for file handling during import.
|
|
@@ -8,12 +8,12 @@ import { UserMappingService } from "./UserMappingService.js";
|
|
|
8
8
|
import { ValidationService } from "./ValidationService.js";
|
|
9
9
|
import { RelationshipResolver } from "./RelationshipResolver.js";
|
|
10
10
|
import { UsersController } from "../../users/methods.js";
|
|
11
|
-
import { logger } from
|
|
12
|
-
import { MessageFormatter } from
|
|
11
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
12
|
+
import { MessageFormatter } from '@njdamstra/appwrite-utils-helpers';
|
|
13
13
|
import { ProgressManager } from "../../shared/progressManager.js";
|
|
14
|
-
import { tryAwaitWithRetry } from "
|
|
14
|
+
import { tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
15
15
|
import { updateOperation, findOrCreateOperation } from "../../shared/migrationHelpers.js";
|
|
16
|
-
import { LegacyAdapter } from
|
|
16
|
+
import { LegacyAdapter } from '@njdamstra/appwrite-utils-helpers';
|
|
17
17
|
import { resolveAndUpdateRelationships } from "../relationships.js";
|
|
18
18
|
// Enhanced rate limiting configuration - now managed by RateLimitManager
|
|
19
19
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import pLimit from "p-limit";
|
|
2
|
-
import { logger } from
|
|
2
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
3
3
|
/**
|
|
4
4
|
* Manages rate limiting across the import system.
|
|
5
5
|
* Provides configurable p-limit instances for different operation types.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { ID } from "node-appwrite";
|
|
3
3
|
import { AuthUserCreateSchema } from "../../schemas/authUser.js";
|
|
4
|
-
import { logger } from
|
|
4
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
5
5
|
/**
|
|
6
6
|
* Service responsible for user mapping and deduplication during import.
|
|
7
7
|
* Preserves all existing sophisticated user handling logic from DataLoader.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Databases, Storage, Users, type Models } from "node-appwrite";
|
|
2
|
+
import { type DatabaseAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
2
3
|
export interface TransferOptions {
|
|
3
4
|
fromDb: Models.Database | undefined;
|
|
4
5
|
targetDb: Models.Database | undefined;
|
|
@@ -14,13 +15,16 @@ export interface TransferOptions {
|
|
|
14
15
|
export declare const transferStorageLocalToLocal: (storage: Storage, fromBucketId: string, toBucketId: string) => Promise<void>;
|
|
15
16
|
export declare const transferStorageLocalToRemote: (localStorage: Storage, endpoint: string, projectId: string, apiKey: string, fromBucketId: string, toBucketId: string) => Promise<void>;
|
|
16
17
|
/**
|
|
17
|
-
* Transfers all collections and documents from one local database to another local database.
|
|
18
|
+
* Transfers all tables/collections and documents from one local database to another local database.
|
|
19
|
+
* Uses the DatabaseAdapter for unified TablesDB / legacy support.
|
|
18
20
|
*
|
|
19
|
-
* @param {Databases} localDb - The local database instance.
|
|
21
|
+
* @param {Databases} localDb - The local database instance (kept for signature compat).
|
|
20
22
|
* @param {string} fromDbId - The ID of the source database.
|
|
21
23
|
* @param {string} targetDbId - The ID of the target database.
|
|
24
|
+
* @param {string[]} collectionIds - Optional filter: specific table/collection IDs to transfer. undefined = all, empty array = none.
|
|
25
|
+
* @param {DatabaseAdapter} adapter - The database adapter (TablesDB or Legacy).
|
|
22
26
|
* @return {Promise<void>} A promise that resolves when the transfer is complete.
|
|
23
27
|
*/
|
|
24
|
-
export declare const transferDatabaseLocalToLocal: (localDb: Databases, fromDbId: string, targetDbId: string) => Promise<void>;
|
|
25
|
-
export declare const transferDatabaseLocalToRemote: (localDb: Databases, endpoint: string, projectId: string, apiKey: string, fromDbId: string, toDbId: string) => Promise<void>;
|
|
28
|
+
export declare const transferDatabaseLocalToLocal: (localDb: Databases, fromDbId: string, targetDbId: string, collectionIds?: string[], adapter?: DatabaseAdapter) => Promise<void>;
|
|
29
|
+
export declare const transferDatabaseLocalToRemote: (localDb: Databases, endpoint: string, projectId: string, apiKey: string, fromDbId: string, toDbId: string, collectionIds?: string[]) => Promise<void>;
|
|
26
30
|
export declare const transferUsersLocalToRemote: (localUsers: Users, endpoint: string, projectId: string, apiKey: string) => Promise<void>;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { converterFunctions, tryAwaitWithRetry } from "@njdamstra/appwrite-utils";
|
|
2
2
|
import { Client, Databases, IndexType, Query, Storage, Users, } from "node-appwrite";
|
|
3
3
|
import { InputFile } from "node-appwrite/file";
|
|
4
|
-
import { getAppwriteClient } from "
|
|
4
|
+
import { getAppwriteClient } from "@njdamstra/appwrite-utils-helpers";
|
|
5
5
|
// Legacy attribute helpers retained only for local-to-local flows if needed
|
|
6
6
|
import { parseAttribute } from "@njdamstra/appwrite-utils";
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import { fetchAllCollections } from "../collections/methods.js";
|
|
9
|
-
import { MessageFormatter } from "
|
|
10
|
-
import { LegacyAdapter } from "../adapters/LegacyAdapter.js";
|
|
9
|
+
import { MessageFormatter, mapToCreateAttributeParams } from "@njdamstra/appwrite-utils-helpers";
|
|
11
10
|
import { ProgressManager } from "../shared/progressManager.js";
|
|
12
|
-
import { getClient, getAdapter } from "
|
|
11
|
+
import { getClient, getAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
13
12
|
import { diffTableColumns } from "../collections/tableOperations.js";
|
|
14
|
-
import {
|
|
13
|
+
import { LegacyAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
15
14
|
export const transferStorageLocalToLocal = async (storage, fromBucketId, toBucketId) => {
|
|
16
15
|
MessageFormatter.info(`Transferring files from ${fromBucketId} to ${toBucketId}`, { prefix: "Transfer" });
|
|
17
16
|
let lastFileId;
|
|
@@ -130,51 +129,96 @@ export const transferStorageLocalToRemote = async (localStorage, endpoint, proje
|
|
|
130
129
|
// Document transfer functions moved to collections/methods.ts with enhanced UX
|
|
131
130
|
// Remote document transfer functions moved to collections/methods.ts with enhanced UX
|
|
132
131
|
/**
|
|
133
|
-
* Transfers all collections and documents from one local database to another local database.
|
|
132
|
+
* Transfers all tables/collections and documents from one local database to another local database.
|
|
133
|
+
* Uses the DatabaseAdapter for unified TablesDB / legacy support.
|
|
134
134
|
*
|
|
135
|
-
* @param {Databases} localDb - The local database instance.
|
|
135
|
+
* @param {Databases} localDb - The local database instance (kept for signature compat).
|
|
136
136
|
* @param {string} fromDbId - The ID of the source database.
|
|
137
137
|
* @param {string} targetDbId - The ID of the target database.
|
|
138
|
+
* @param {string[]} collectionIds - Optional filter: specific table/collection IDs to transfer. undefined = all, empty array = none.
|
|
139
|
+
* @param {DatabaseAdapter} adapter - The database adapter (TablesDB or Legacy).
|
|
138
140
|
* @return {Promise<void>} A promise that resolves when the transfer is complete.
|
|
139
141
|
*/
|
|
140
|
-
export const transferDatabaseLocalToLocal = async (localDb, fromDbId, targetDbId) => {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
142
|
+
export const transferDatabaseLocalToLocal = async (localDb, fromDbId, targetDbId, collectionIds, adapter) => {
|
|
143
|
+
// If no adapter provided, fall back to creating a LegacyAdapter from the Databases client
|
|
144
|
+
const dbAdapter = adapter || new LegacyAdapter(localDb.client);
|
|
145
|
+
MessageFormatter.info(`Starting database transfer from ${fromDbId} to ${targetDbId} (mode: ${dbAdapter.getApiMode()})`, { prefix: "Transfer" });
|
|
146
|
+
// Get all tables/collections from source database via adapter
|
|
147
|
+
const sourceListRes = await dbAdapter.listTables({ databaseId: fromDbId, queries: [Query.limit(500)] });
|
|
148
|
+
let sourceTables = sourceListRes.tables || sourceListRes.collections || sourceListRes.data || [];
|
|
149
|
+
// Filter by collectionIds if provided (match by $id or by name)
|
|
150
|
+
if (collectionIds !== undefined) {
|
|
151
|
+
if (collectionIds.length === 0) {
|
|
152
|
+
MessageFormatter.info("No tables/collections selected for transfer, skipping.", { prefix: "Transfer" });
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const idSet = new Set(collectionIds);
|
|
156
|
+
sourceTables = sourceTables.filter((c) => idSet.has(c.$id) || idSet.has(c.name));
|
|
157
|
+
}
|
|
158
|
+
MessageFormatter.info(`Found ${sourceTables.length} tables/collections in source database`, { prefix: "Transfer" });
|
|
159
|
+
// Process each table/collection
|
|
160
|
+
for (const table of sourceTables) {
|
|
161
|
+
MessageFormatter.processing(`Processing table: ${table.name} (${table.$id})`, { prefix: "Transfer" });
|
|
148
162
|
try {
|
|
149
|
-
//
|
|
150
|
-
let
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
// Check if table exists in target via adapter
|
|
164
|
+
let targetTableId = table.$id;
|
|
165
|
+
let targetTableData;
|
|
166
|
+
try {
|
|
167
|
+
const existingRes = await dbAdapter.getTable({ databaseId: targetDbId, tableId: table.$id });
|
|
168
|
+
targetTableData = existingRes.data || (existingRes.tables && existingRes.tables[0]);
|
|
169
|
+
if (targetTableData) {
|
|
170
|
+
MessageFormatter.info(`Table ${table.name} exists in target database`, { prefix: "Transfer" });
|
|
171
|
+
// Update table if needed
|
|
172
|
+
const securityField = table.rowSecurity ?? table.documentSecurity ?? false;
|
|
173
|
+
const targetSecurity = targetTableData.rowSecurity ?? targetTableData.documentSecurity ?? false;
|
|
174
|
+
if (targetTableData.name !== table.name ||
|
|
175
|
+
JSON.stringify(targetTableData.$permissions) !== JSON.stringify(table.$permissions) ||
|
|
176
|
+
targetSecurity !== securityField ||
|
|
177
|
+
targetTableData.enabled !== table.enabled) {
|
|
178
|
+
await tryAwaitWithRetry(async () => dbAdapter.updateTable({
|
|
179
|
+
databaseId: targetDbId,
|
|
180
|
+
id: table.$id,
|
|
181
|
+
name: table.name,
|
|
182
|
+
permissions: table.$permissions,
|
|
183
|
+
documentSecurity: table.documentSecurity,
|
|
184
|
+
rowSecurity: table.rowSecurity,
|
|
185
|
+
enabled: table.enabled,
|
|
186
|
+
}));
|
|
187
|
+
MessageFormatter.success(`Table ${table.name} updated`, { prefix: "Transfer" });
|
|
188
|
+
}
|
|
164
189
|
}
|
|
165
190
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
191
|
+
catch {
|
|
192
|
+
// Table does not exist in target, create it
|
|
193
|
+
targetTableData = null;
|
|
169
194
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
195
|
+
if (!targetTableData) {
|
|
196
|
+
MessageFormatter.progress(`Creating table ${table.name} in target database...`, { prefix: "Transfer" });
|
|
197
|
+
const createRes = await tryAwaitWithRetry(async () => dbAdapter.createTable({
|
|
198
|
+
databaseId: targetDbId,
|
|
199
|
+
id: table.$id,
|
|
200
|
+
name: table.name,
|
|
201
|
+
permissions: table.$permissions,
|
|
202
|
+
documentSecurity: table.documentSecurity,
|
|
203
|
+
rowSecurity: table.rowSecurity,
|
|
204
|
+
enabled: table.enabled,
|
|
205
|
+
}));
|
|
206
|
+
targetTableData = createRes.data || (createRes.tables && createRes.tables[0]);
|
|
207
|
+
}
|
|
208
|
+
// Create attributes via adapter
|
|
209
|
+
MessageFormatter.info(`Creating attributes for ${table.name} via adapter...`, { prefix: 'Transfer' });
|
|
210
|
+
// Fetch existing attributes in target to skip already-created ones
|
|
211
|
+
const targetTableRes = await dbAdapter.getTable({ databaseId: targetDbId, tableId: targetTableId });
|
|
212
|
+
const targetInfo = targetTableRes.data || (targetTableRes.tables && targetTableRes.tables[0]);
|
|
213
|
+
const existingAttrs = targetInfo?.attributes || targetInfo?.columns || [];
|
|
214
|
+
const existingKeys = new Set(existingAttrs.map((a) => a.key || a.$id));
|
|
215
|
+
const uniformAttrs = (table.attributes || []).map((attr) => parseAttribute(attr));
|
|
174
216
|
const nonRel = uniformAttrs.filter((a) => a.type !== 'relationship');
|
|
175
217
|
for (const attr of nonRel) {
|
|
176
|
-
|
|
177
|
-
|
|
218
|
+
if (existingKeys.has(attr.key))
|
|
219
|
+
continue;
|
|
220
|
+
const params = mapToCreateAttributeParams(attr, { databaseId: targetDbId, tableId: targetTableId });
|
|
221
|
+
await dbAdapter.createAttribute(params);
|
|
178
222
|
await new Promise((r) => setTimeout(r, 150));
|
|
179
223
|
}
|
|
180
224
|
// Wait for attributes to become available
|
|
@@ -184,8 +228,9 @@ export const transferDatabaseLocalToLocal = async (localDb, fromDbId, targetDbId
|
|
|
184
228
|
let lastStatus = '';
|
|
185
229
|
while (Date.now() - start < maxWait) {
|
|
186
230
|
try {
|
|
187
|
-
const tableRes = await
|
|
188
|
-
const
|
|
231
|
+
const tableRes = await dbAdapter.getTable({ databaseId: targetDbId, tableId: targetTableId });
|
|
232
|
+
const tInfo = tableRes.data || (tableRes.tables && tableRes.tables[0]);
|
|
233
|
+
const attrs = tInfo?.attributes || tInfo?.columns || [];
|
|
189
234
|
const found = attrs.find((a) => a.key === attr.key);
|
|
190
235
|
if (found) {
|
|
191
236
|
if (found.status === 'available')
|
|
@@ -208,16 +253,18 @@ export const transferDatabaseLocalToLocal = async (localDb, fromDbId, targetDbId
|
|
|
208
253
|
// Relationship attributes
|
|
209
254
|
const rels = uniformAttrs.filter((a) => a.type === 'relationship');
|
|
210
255
|
for (const attr of rels) {
|
|
211
|
-
|
|
212
|
-
|
|
256
|
+
if (existingKeys.has(attr.key))
|
|
257
|
+
continue;
|
|
258
|
+
const params = mapToCreateAttributeParams(attr, { databaseId: targetDbId, tableId: targetTableId });
|
|
259
|
+
await dbAdapter.createAttribute(params);
|
|
213
260
|
await new Promise((r) => setTimeout(r, 150));
|
|
214
261
|
}
|
|
215
262
|
// Handle indexes via adapter (create or update)
|
|
216
|
-
for (const idx of
|
|
263
|
+
for (const idx of (table.indexes || [])) {
|
|
217
264
|
try {
|
|
218
|
-
await
|
|
265
|
+
await dbAdapter.createIndex({
|
|
219
266
|
databaseId: targetDbId,
|
|
220
|
-
tableId:
|
|
267
|
+
tableId: targetTableId,
|
|
221
268
|
key: idx.key,
|
|
222
269
|
type: idx.type,
|
|
223
270
|
attributes: idx.attributes,
|
|
@@ -229,10 +276,10 @@ export const transferDatabaseLocalToLocal = async (localDb, fromDbId, targetDbId
|
|
|
229
276
|
catch (e) {
|
|
230
277
|
// Try update path by deleting and recreating if necessary
|
|
231
278
|
try {
|
|
232
|
-
await
|
|
233
|
-
await
|
|
279
|
+
await dbAdapter.deleteIndex({ databaseId: targetDbId, tableId: targetTableId, key: idx.key });
|
|
280
|
+
await dbAdapter.createIndex({
|
|
234
281
|
databaseId: targetDbId,
|
|
235
|
-
tableId:
|
|
282
|
+
tableId: targetTableId,
|
|
236
283
|
key: idx.key,
|
|
237
284
|
type: idx.type,
|
|
238
285
|
attributes: idx.attributes,
|
|
@@ -246,20 +293,24 @@ export const transferDatabaseLocalToLocal = async (localDb, fromDbId, targetDbId
|
|
|
246
293
|
}
|
|
247
294
|
}
|
|
248
295
|
}
|
|
249
|
-
// Transfer documents
|
|
250
|
-
const { transferDocumentsBetweenDbsLocalToLocal } = await import("../collections/
|
|
251
|
-
await transferDocumentsBetweenDbsLocalToLocal(
|
|
296
|
+
// Transfer documents/rows via adapter
|
|
297
|
+
const { transferDocumentsBetweenDbsLocalToLocal } = await import("../collections/transferOperations.js");
|
|
298
|
+
await transferDocumentsBetweenDbsLocalToLocal(dbAdapter, fromDbId, targetDbId, table.$id, targetTableId);
|
|
252
299
|
}
|
|
253
300
|
catch (error) {
|
|
254
|
-
MessageFormatter.error(`Error processing
|
|
301
|
+
MessageFormatter.error(`Error processing table ${table.name}`, error instanceof Error ? error : new Error(String(error)), { prefix: "Transfer" });
|
|
255
302
|
}
|
|
256
303
|
}
|
|
257
304
|
};
|
|
258
|
-
export const transferDatabaseLocalToRemote = async (localDb, endpoint, projectId, apiKey, fromDbId, toDbId) => {
|
|
305
|
+
export const transferDatabaseLocalToRemote = async (localDb, endpoint, projectId, apiKey, fromDbId, toDbId, collectionIds) => {
|
|
259
306
|
const client = getAppwriteClient(endpoint, projectId, apiKey);
|
|
260
307
|
const remoteDb = new Databases(client);
|
|
261
308
|
// Get all collections from source database
|
|
262
|
-
|
|
309
|
+
let sourceCollections = await fetchAllCollections(fromDbId, localDb);
|
|
310
|
+
if (collectionIds && collectionIds.length > 0) {
|
|
311
|
+
const idSet = new Set(collectionIds);
|
|
312
|
+
sourceCollections = sourceCollections.filter((c) => idSet.has(c.$id));
|
|
313
|
+
}
|
|
263
314
|
MessageFormatter.info(`Found ${sourceCollections.length} collections in source database`, { prefix: "Transfer" });
|
|
264
315
|
// Process each collection
|
|
265
316
|
for (const collection of sourceCollections) {
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
import yaml from "js-yaml";
|
|
5
|
-
import { logger } from
|
|
5
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
6
6
|
// YAML Import Configuration Schema
|
|
7
7
|
export const YamlImportConfigSchema = z.object({
|
|
8
8
|
source: z.object({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { YamlImportConfigLoader } from "./YamlImportConfigLoader.js";
|
|
2
2
|
import { createImportSchemas, createImportExamples } from "./generateImportSchemas.js";
|
|
3
|
-
import { logger } from
|
|
4
|
-
import { normalizeYamlData, usesTableTerminology, convertTerminology } from "
|
|
3
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
4
|
+
import { normalizeYamlData, usesTableTerminology, convertTerminology } from "@njdamstra/appwrite-utils-helpers";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import yaml from "js-yaml";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import { logger } from
|
|
3
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
4
4
|
/**
|
|
5
5
|
* Generates JSON Schema for YAML import configurations.
|
|
6
6
|
* Provides IntelliSense support for YAML files in IDEs.
|
package/dist/setupCommands.d.ts
CHANGED
package/dist/setupCommands.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { mkdirSync, writeFileSync, existsSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { ulid } from "ulidx";
|
|
4
|
-
import { MessageFormatter } from "
|
|
5
|
-
import { detectAppwriteVersionCached, fetchServerVersion, isVersionAtLeast } from "
|
|
6
|
-
import { loadAppwriteProjectConfig, findAppwriteProjectConfig, isTablesDBProject } from "
|
|
7
|
-
import { findYamlConfig, generateYamlConfigTemplate } from "
|
|
8
|
-
import {
|
|
9
|
-
import { hasSessionAuth } from "./utils/sessionAuth.js";
|
|
4
|
+
import { MessageFormatter } from "@njdamstra/appwrite-utils-helpers";
|
|
5
|
+
import { detectAppwriteVersionCached, fetchServerVersion, isVersionAtLeast } from "@njdamstra/appwrite-utils-helpers";
|
|
6
|
+
import { loadAppwriteProjectConfig, findAppwriteProjectConfig, isTablesDBProject } from "@njdamstra/appwrite-utils-helpers";
|
|
7
|
+
import { findYamlConfig, generateYamlConfigTemplate, loadYamlConfig } from "@njdamstra/appwrite-utils-helpers";
|
|
8
|
+
import { hasSessionAuth } from "@njdamstra/appwrite-utils-helpers";
|
|
10
9
|
/**
|
|
11
10
|
* Get terminology configuration based on API mode
|
|
12
11
|
*/
|
package/dist/setupController.js
CHANGED
|
@@ -2,7 +2,7 @@ import { setupDirsFiles } from "./utils/setupFiles.js";
|
|
|
2
2
|
import { loadConfig } from "./utils/loadConfigs.js";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import fs from "fs";
|
|
5
|
-
import { MessageFormatter } from "
|
|
5
|
+
import { MessageFormatter } from "@njdamstra/appwrite-utils-helpers";
|
|
6
6
|
export class SetupController {
|
|
7
7
|
currentDir;
|
|
8
8
|
config = null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatabaseAdapter } from "
|
|
1
|
+
import type { DatabaseAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
2
2
|
import { type BackupMetadata } from "./backupMetadataSchema.js";
|
|
3
3
|
/**
|
|
4
4
|
* Creates the backup tracking table in the specified database
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { logger } from
|
|
2
|
-
import { tryAwaitWithRetry } from "
|
|
1
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
2
|
+
import { tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
3
3
|
import { Query, ID } from "node-appwrite";
|
|
4
4
|
import { BACKUP_TABLE_ID, BACKUP_TABLE_NAME, BackupMetadataSchema } from "./backupMetadataSchema.js";
|
|
5
5
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import inquirer from "inquirer";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { MessageFormatter } from
|
|
3
|
+
import { MessageFormatter } from '@njdamstra/appwrite-utils-helpers';
|
|
4
4
|
export class ConfirmationDialogs {
|
|
5
5
|
/**
|
|
6
6
|
* Shows a confirmation dialog for destructive operations
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Databases } from "node-appwrite";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import type { DatabaseAdapter } from "
|
|
3
|
+
import type { DatabaseAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
4
4
|
/**
|
|
5
5
|
* Object that contains the context for an action that needs to be executed after import
|
|
6
6
|
* Used in the afterImportActionsDefinitions
|
|
@@ -2,10 +2,10 @@ import { ID, Query } from "node-appwrite";
|
|
|
2
2
|
import { BatchSchema, OperationSchema } from "../storage/schemas.js";
|
|
3
3
|
import { AttributeMappingsSchema } from "@njdamstra/appwrite-utils";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
import { logger } from
|
|
6
|
-
import { tryAwaitWithRetry } from "
|
|
5
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
6
|
+
import { tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
7
7
|
import { findOrCreateOperation as findOrCreateOp, updateOperation as updateOp, getOperation as getOp } from "./operationsTable.js";
|
|
8
|
-
import { MessageFormatter } from
|
|
8
|
+
import { MessageFormatter } from '@njdamstra/appwrite-utils-helpers';
|
|
9
9
|
/**
|
|
10
10
|
* Object that contains the context for an action that needs to be executed after import
|
|
11
11
|
* Used in the afterImportActionsDefinitions
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Databases, type Models } from "node-appwrite";
|
|
2
2
|
import type { Attribute } from "@njdamstra/appwrite-utils";
|
|
3
|
-
import type { DatabaseAdapter } from "
|
|
3
|
+
import type { DatabaseAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
4
4
|
export interface QueuedOperation {
|
|
5
5
|
type: "attribute";
|
|
6
6
|
collectionId?: string;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Query } from "node-appwrite";
|
|
2
2
|
import { createOrUpdateAttributeWithStatusCheck } from "../collections/attributes.js";
|
|
3
3
|
import { fetchAndCacheCollectionByName } from "../collections/methods.js";
|
|
4
|
-
import { tryAwaitWithRetry } from "
|
|
5
|
-
import { logger } from "
|
|
6
|
-
import { MessageFormatter } from "../shared/messageFormatter.js";
|
|
4
|
+
import { tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
5
|
+
import { logger, MessageFormatter } from "@njdamstra/appwrite-utils-helpers";
|
|
7
6
|
// Global state management
|
|
8
7
|
export const queuedOperations = [];
|
|
9
8
|
export const nameToIdMapping = new Map();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatabaseAdapter } from "
|
|
1
|
+
import type { DatabaseAdapter } from "@njdamstra/appwrite-utils-helpers";
|
|
2
2
|
import { type OperationRecord } from "./operationsTableSchema.js";
|
|
3
3
|
/**
|
|
4
4
|
* Creates the operations tracking table in the specified database
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { logger } from
|
|
2
|
-
import { tryAwaitWithRetry } from "
|
|
1
|
+
import { logger } from '@njdamstra/appwrite-utils-helpers';
|
|
2
|
+
import { tryAwaitWithRetry } from "@njdamstra/appwrite-utils-helpers";
|
|
3
3
|
import { Query, ID } from "node-appwrite";
|
|
4
4
|
import { OPERATIONS_TABLE_ID, OPERATIONS_TABLE_NAME, OperationRecordSchema, } from "./operationsTableSchema.js";
|
|
5
5
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import cliProgress from "cli-progress";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { MessageFormatter } from
|
|
3
|
+
import { MessageFormatter } from '@njdamstra/appwrite-utils-helpers';
|
|
4
4
|
export class ProgressManager {
|
|
5
5
|
static instances = new Map();
|
|
6
6
|
bar;
|