@njdamstra/appwrite-utils-cli 1.8.9 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CONFIG_TODO.md +1189 -0
  3. package/SELECTION_DIALOGS.md +146 -0
  4. package/SERVICE_IMPLEMENTATION_REPORT.md +462 -0
  5. package/dist/adapters/index.d.ts +7 -8
  6. package/dist/adapters/index.js +7 -9
  7. package/dist/backups/operations/bucketBackup.js +2 -2
  8. package/dist/backups/operations/collectionBackup.d.ts +1 -1
  9. package/dist/backups/operations/collectionBackup.js +3 -3
  10. package/dist/backups/operations/comprehensiveBackup.d.ts +1 -1
  11. package/dist/backups/operations/comprehensiveBackup.js +2 -2
  12. package/dist/backups/tracking/centralizedTracking.d.ts +1 -1
  13. package/dist/backups/tracking/centralizedTracking.js +2 -2
  14. package/dist/cli/commands/configCommands.js +51 -7
  15. package/dist/cli/commands/databaseCommands.d.ts +1 -0
  16. package/dist/cli/commands/databaseCommands.js +119 -9
  17. package/dist/cli/commands/functionCommands.js +3 -3
  18. package/dist/cli/commands/importFileCommands.d.ts +7 -0
  19. package/dist/cli/commands/importFileCommands.js +674 -0
  20. package/dist/cli/commands/schemaCommands.js +3 -3
  21. package/dist/cli/commands/storageCommands.js +2 -3
  22. package/dist/cli/commands/transferCommands.js +3 -5
  23. package/dist/collections/attributes.d.ts +1 -1
  24. package/dist/collections/attributes.js +85 -35
  25. package/dist/collections/indexes.js +2 -4
  26. package/dist/collections/methods.d.ts +1 -1
  27. package/dist/collections/methods.js +111 -192
  28. package/dist/collections/tableOperations.d.ts +1 -0
  29. package/dist/collections/tableOperations.js +90 -23
  30. package/dist/collections/transferOperations.d.ts +1 -1
  31. package/dist/collections/transferOperations.js +3 -4
  32. package/dist/collections/wipeOperations.d.ts +4 -3
  33. package/dist/collections/wipeOperations.js +112 -39
  34. package/dist/databases/methods.js +2 -2
  35. package/dist/databases/setup.js +2 -2
  36. package/dist/examples/yamlTerminologyExample.js +2 -2
  37. package/dist/functions/deployments.d.ts +1 -1
  38. package/dist/functions/deployments.js +5 -5
  39. package/dist/functions/fnConfigDiscovery.js +2 -2
  40. package/dist/functions/methods.js +16 -4
  41. package/dist/init.js +1 -1
  42. package/dist/interactiveCLI.d.ts +6 -1
  43. package/dist/interactiveCLI.js +64 -10
  44. package/dist/main.js +130 -177
  45. package/dist/migrations/afterImportActions.js +2 -3
  46. package/dist/migrations/appwriteToX.d.ts +97 -1
  47. package/dist/migrations/appwriteToX.js +9 -7
  48. package/dist/migrations/comprehensiveTransfer.js +3 -5
  49. package/dist/migrations/dataLoader.d.ts +194 -2
  50. package/dist/migrations/dataLoader.js +2 -5
  51. package/dist/migrations/importController.js +3 -4
  52. package/dist/migrations/importDataActions.js +3 -3
  53. package/dist/migrations/relationships.js +1 -2
  54. package/dist/migrations/services/DataTransformationService.js +2 -2
  55. package/dist/migrations/services/FileHandlerService.js +1 -1
  56. package/dist/migrations/services/ImportOrchestrator.js +4 -4
  57. package/dist/migrations/services/RateLimitManager.js +1 -1
  58. package/dist/migrations/services/RelationshipResolver.js +1 -1
  59. package/dist/migrations/services/UserMappingService.js +1 -1
  60. package/dist/migrations/services/ValidationService.js +1 -1
  61. package/dist/migrations/transfer.d.ts +8 -4
  62. package/dist/migrations/transfer.js +106 -55
  63. package/dist/migrations/yaml/YamlImportConfigLoader.js +1 -1
  64. package/dist/migrations/yaml/YamlImportIntegration.js +2 -2
  65. package/dist/migrations/yaml/generateImportSchemas.js +1 -1
  66. package/dist/setupCommands.d.ts +1 -1
  67. package/dist/setupCommands.js +5 -6
  68. package/dist/setupController.js +1 -1
  69. package/dist/shared/backupTracking.d.ts +1 -1
  70. package/dist/shared/backupTracking.js +2 -2
  71. package/dist/shared/confirmationDialogs.js +1 -1
  72. package/dist/shared/migrationHelpers.d.ts +1 -1
  73. package/dist/shared/migrationHelpers.js +3 -3
  74. package/dist/shared/operationQueue.d.ts +1 -1
  75. package/dist/shared/operationQueue.js +2 -3
  76. package/dist/shared/operationsTable.d.ts +1 -1
  77. package/dist/shared/operationsTable.js +2 -2
  78. package/dist/shared/progressManager.js +1 -1
  79. package/dist/shared/selectionDialogs.js +9 -8
  80. package/dist/storage/methods.js +4 -4
  81. package/dist/storage/schemas.d.ts +386 -2
  82. package/dist/tables/indexManager.d.ts +65 -0
  83. package/dist/tables/indexManager.js +294 -0
  84. package/dist/types.d.ts +2 -2
  85. package/dist/types.js +1 -1
  86. package/dist/users/methods.js +2 -3
  87. package/dist/utils/configMigration.js +1 -1
  88. package/dist/utils/index.d.ts +1 -1
  89. package/dist/utils/index.js +1 -1
  90. package/dist/utils/loadConfigs.d.ts +2 -2
  91. package/dist/utils/loadConfigs.js +6 -7
  92. package/dist/utils/setupFiles.js +5 -7
  93. package/dist/utilsController.d.ts +15 -8
  94. package/dist/utilsController.js +57 -28
  95. package/package.json +8 -4
  96. package/src/adapters/index.ts +8 -34
  97. package/src/backups/operations/bucketBackup.ts +2 -2
  98. package/src/backups/operations/collectionBackup.ts +4 -4
  99. package/src/backups/operations/comprehensiveBackup.ts +3 -3
  100. package/src/backups/tracking/centralizedTracking.ts +3 -3
  101. package/src/cli/commands/configCommands.ts +72 -8
  102. package/src/cli/commands/databaseCommands.ts +161 -9
  103. package/src/cli/commands/functionCommands.ts +4 -3
  104. package/src/cli/commands/importFileCommands.ts +815 -0
  105. package/src/cli/commands/schemaCommands.ts +3 -3
  106. package/src/cli/commands/storageCommands.ts +2 -3
  107. package/src/cli/commands/transferCommands.ts +3 -6
  108. package/src/collections/attributes.ts +155 -39
  109. package/src/collections/indexes.ts +5 -7
  110. package/src/collections/methods.ts +115 -150
  111. package/src/collections/tableOperations.ts +92 -21
  112. package/src/collections/transferOperations.ts +4 -5
  113. package/src/collections/wipeOperations.ts +154 -51
  114. package/src/databases/methods.ts +2 -2
  115. package/src/databases/setup.ts +2 -2
  116. package/src/examples/yamlTerminologyExample.ts +2 -2
  117. package/src/functions/deployments.ts +6 -5
  118. package/src/functions/fnConfigDiscovery.ts +2 -2
  119. package/src/functions/methods.ts +19 -6
  120. package/src/init.ts +1 -1
  121. package/src/interactiveCLI.ts +78 -13
  122. package/src/main.ts +143 -287
  123. package/src/migrations/afterImportActions.ts +2 -3
  124. package/src/migrations/appwriteToX.ts +12 -8
  125. package/src/migrations/comprehensiveTransfer.ts +6 -6
  126. package/src/migrations/dataLoader.ts +2 -5
  127. package/src/migrations/importController.ts +3 -4
  128. package/src/migrations/importDataActions.ts +3 -3
  129. package/src/migrations/relationships.ts +1 -2
  130. package/src/migrations/services/DataTransformationService.ts +2 -2
  131. package/src/migrations/services/FileHandlerService.ts +1 -1
  132. package/src/migrations/services/ImportOrchestrator.ts +4 -4
  133. package/src/migrations/services/RateLimitManager.ts +1 -1
  134. package/src/migrations/services/RelationshipResolver.ts +1 -1
  135. package/src/migrations/services/UserMappingService.ts +1 -1
  136. package/src/migrations/services/ValidationService.ts +1 -1
  137. package/src/migrations/transfer.ts +126 -83
  138. package/src/migrations/yaml/YamlImportConfigLoader.ts +1 -1
  139. package/src/migrations/yaml/YamlImportIntegration.ts +2 -2
  140. package/src/migrations/yaml/generateImportSchemas.ts +1 -1
  141. package/src/setupCommands.ts +5 -6
  142. package/src/setupController.ts +1 -1
  143. package/src/shared/backupTracking.ts +3 -3
  144. package/src/shared/confirmationDialogs.ts +1 -1
  145. package/src/shared/migrationHelpers.ts +4 -4
  146. package/src/shared/operationQueue.ts +3 -4
  147. package/src/shared/operationsTable.ts +3 -3
  148. package/src/shared/progressManager.ts +1 -1
  149. package/src/shared/selectionDialogs.ts +9 -8
  150. package/src/storage/methods.ts +4 -4
  151. package/src/tables/indexManager.ts +409 -0
  152. package/src/types.ts +2 -2
  153. package/src/users/methods.ts +2 -3
  154. package/src/utils/configMigration.ts +1 -1
  155. package/src/utils/index.ts +1 -1
  156. package/src/utils/loadConfigs.ts +15 -7
  157. package/src/utils/setupFiles.ts +5 -7
  158. package/src/utilsController.ts +86 -32
  159. package/dist/adapters/AdapterFactory.d.ts +0 -94
  160. package/dist/adapters/AdapterFactory.js +0 -405
  161. package/dist/adapters/DatabaseAdapter.d.ts +0 -233
  162. package/dist/adapters/DatabaseAdapter.js +0 -50
  163. package/dist/adapters/LegacyAdapter.d.ts +0 -50
  164. package/dist/adapters/LegacyAdapter.js +0 -612
  165. package/dist/adapters/TablesDBAdapter.d.ts +0 -45
  166. package/dist/adapters/TablesDBAdapter.js +0 -571
  167. package/dist/config/ConfigManager.d.ts +0 -445
  168. package/dist/config/ConfigManager.js +0 -625
  169. package/dist/config/configMigration.d.ts +0 -87
  170. package/dist/config/configMigration.js +0 -390
  171. package/dist/config/configValidation.d.ts +0 -66
  172. package/dist/config/configValidation.js +0 -358
  173. package/dist/config/index.d.ts +0 -8
  174. package/dist/config/index.js +0 -7
  175. package/dist/config/services/ConfigDiscoveryService.d.ts +0 -126
  176. package/dist/config/services/ConfigDiscoveryService.js +0 -374
  177. package/dist/config/services/ConfigLoaderService.d.ts +0 -129
  178. package/dist/config/services/ConfigLoaderService.js +0 -540
  179. package/dist/config/services/ConfigMergeService.d.ts +0 -208
  180. package/dist/config/services/ConfigMergeService.js +0 -308
  181. package/dist/config/services/ConfigValidationService.d.ts +0 -214
  182. package/dist/config/services/ConfigValidationService.js +0 -310
  183. package/dist/config/services/SessionAuthService.d.ts +0 -225
  184. package/dist/config/services/SessionAuthService.js +0 -456
  185. package/dist/config/services/__tests__/ConfigMergeService.test.d.ts +0 -1
  186. package/dist/config/services/__tests__/ConfigMergeService.test.js +0 -271
  187. package/dist/config/services/index.d.ts +0 -13
  188. package/dist/config/services/index.js +0 -10
  189. package/dist/config/yamlConfig.d.ts +0 -722
  190. package/dist/config/yamlConfig.js +0 -702
  191. package/dist/functions/pathResolution.d.ts +0 -37
  192. package/dist/functions/pathResolution.js +0 -185
  193. package/dist/shared/attributeMapper.d.ts +0 -20
  194. package/dist/shared/attributeMapper.js +0 -203
  195. package/dist/shared/errorUtils.d.ts +0 -54
  196. package/dist/shared/errorUtils.js +0 -95
  197. package/dist/shared/functionManager.d.ts +0 -48
  198. package/dist/shared/functionManager.js +0 -336
  199. package/dist/shared/indexManager.d.ts +0 -24
  200. package/dist/shared/indexManager.js +0 -151
  201. package/dist/shared/jsonSchemaGenerator.d.ts +0 -50
  202. package/dist/shared/jsonSchemaGenerator.js +0 -290
  203. package/dist/shared/logging.d.ts +0 -61
  204. package/dist/shared/logging.js +0 -116
  205. package/dist/shared/messageFormatter.d.ts +0 -39
  206. package/dist/shared/messageFormatter.js +0 -162
  207. package/dist/shared/pydanticModelGenerator.d.ts +0 -17
  208. package/dist/shared/pydanticModelGenerator.js +0 -615
  209. package/dist/shared/schemaGenerator.d.ts +0 -40
  210. package/dist/shared/schemaGenerator.js +0 -556
  211. package/dist/utils/ClientFactory.d.ts +0 -87
  212. package/dist/utils/ClientFactory.js +0 -212
  213. package/dist/utils/configDiscovery.d.ts +0 -78
  214. package/dist/utils/configDiscovery.js +0 -472
  215. package/dist/utils/constantsGenerator.d.ts +0 -31
  216. package/dist/utils/constantsGenerator.js +0 -321
  217. package/dist/utils/dataConverters.d.ts +0 -46
  218. package/dist/utils/dataConverters.js +0 -139
  219. package/dist/utils/directoryUtils.d.ts +0 -22
  220. package/dist/utils/directoryUtils.js +0 -59
  221. package/dist/utils/getClientFromConfig.d.ts +0 -39
  222. package/dist/utils/getClientFromConfig.js +0 -199
  223. package/dist/utils/helperFunctions.d.ts +0 -63
  224. package/dist/utils/helperFunctions.js +0 -156
  225. package/dist/utils/pathResolvers.d.ts +0 -53
  226. package/dist/utils/pathResolvers.js +0 -72
  227. package/dist/utils/projectConfig.d.ts +0 -119
  228. package/dist/utils/projectConfig.js +0 -171
  229. package/dist/utils/retryFailedPromises.d.ts +0 -2
  230. package/dist/utils/retryFailedPromises.js +0 -23
  231. package/dist/utils/sessionAuth.d.ts +0 -48
  232. package/dist/utils/sessionAuth.js +0 -164
  233. package/dist/utils/typeGuards.d.ts +0 -35
  234. package/dist/utils/typeGuards.js +0 -57
  235. package/dist/utils/validationRules.d.ts +0 -43
  236. package/dist/utils/validationRules.js +0 -42
  237. package/dist/utils/versionDetection.d.ts +0 -58
  238. package/dist/utils/versionDetection.js +0 -251
  239. package/dist/utils/yamlConverter.d.ts +0 -100
  240. package/dist/utils/yamlConverter.js +0 -428
  241. package/dist/utils/yamlLoader.d.ts +0 -70
  242. package/dist/utils/yamlLoader.js +0 -267
  243. package/src/adapters/AdapterFactory.ts +0 -510
  244. package/src/adapters/DatabaseAdapter.ts +0 -306
  245. package/src/adapters/LegacyAdapter.ts +0 -841
  246. package/src/adapters/TablesDBAdapter.ts +0 -773
  247. package/src/config/ConfigManager.ts +0 -808
  248. package/src/config/README.md +0 -274
  249. package/src/config/configMigration.ts +0 -575
  250. package/src/config/configValidation.ts +0 -445
  251. package/src/config/index.ts +0 -10
  252. package/src/config/services/ConfigDiscoveryService.ts +0 -463
  253. package/src/config/services/ConfigLoaderService.ts +0 -740
  254. package/src/config/services/ConfigMergeService.ts +0 -388
  255. package/src/config/services/ConfigValidationService.ts +0 -394
  256. package/src/config/services/SessionAuthService.ts +0 -565
  257. package/src/config/services/__tests__/ConfigMergeService.test.ts +0 -351
  258. package/src/config/services/index.ts +0 -29
  259. package/src/config/yamlConfig.ts +0 -761
  260. package/src/functions/pathResolution.ts +0 -227
  261. package/src/shared/attributeMapper.ts +0 -229
  262. package/src/shared/errorUtils.ts +0 -110
  263. package/src/shared/functionManager.ts +0 -525
  264. package/src/shared/indexManager.ts +0 -254
  265. package/src/shared/jsonSchemaGenerator.ts +0 -383
  266. package/src/shared/logging.ts +0 -149
  267. package/src/shared/messageFormatter.ts +0 -208
  268. package/src/shared/pydanticModelGenerator.ts +0 -618
  269. package/src/shared/schemaGenerator.ts +0 -644
  270. package/src/utils/ClientFactory.ts +0 -240
  271. package/src/utils/configDiscovery.ts +0 -557
  272. package/src/utils/constantsGenerator.ts +0 -369
  273. package/src/utils/dataConverters.ts +0 -159
  274. package/src/utils/directoryUtils.ts +0 -61
  275. package/src/utils/getClientFromConfig.ts +0 -257
  276. package/src/utils/helperFunctions.ts +0 -228
  277. package/src/utils/pathResolvers.ts +0 -81
  278. package/src/utils/projectConfig.ts +0 -299
  279. package/src/utils/retryFailedPromises.ts +0 -29
  280. package/src/utils/sessionAuth.ts +0 -230
  281. package/src/utils/typeGuards.ts +0 -65
  282. package/src/utils/validationRules.ts +0 -88
  283. package/src/utils/versionDetection.ts +0 -292
  284. package/src/utils/yamlConverter.ts +0 -542
  285. package/src/utils/yamlLoader.ts +0 -371
@@ -1,274 +0,0 @@
1
- # Configuration Validation & Migration Utilities
2
-
3
- This module provides comprehensive validation and migration utilities for the enhanced collections/tables dual config schema in appwrite-utils-cli.
4
-
5
- ## Features
6
-
7
- ### Configuration Validation
8
- - **Naming Conflict Detection**: Detects conflicts between collections and tables
9
- - **Database Reference Validation**: Validates database ID references
10
- - **Schema Consistency Checks**: Ensures internal consistency and best practices
11
- - **Strict Mode**: Option to treat warnings as errors for CI/CD pipelines
12
-
13
- ### Migration Utilities
14
- - **Collections to Tables Migration**: Convert collections to tables format for TablesDB API compatibility
15
- - **Multiple Migration Strategies**: Full migration, dual format, incremental, and tables-only
16
- - **Migration Planning**: Analyze changes before execution
17
- - **Backup Support**: Automatic backup creation during migration
18
- - **Validation Integration**: Validate results after migration
19
-
20
- ## Usage
21
-
22
- ### CLI Commands
23
-
24
- #### Validate Configuration
25
- ```bash
26
- # Basic validation
27
- npx appwrite-migrate --validate
28
-
29
- # Strict validation (warnings become errors)
30
- npx appwrite-migrate --validate-strict
31
-
32
- # Migrate collections to tables
33
- npx appwrite-migrate --migrate-collections-to-tables
34
- ```
35
-
36
- #### Interactive CLI
37
- ```bash
38
- # Launch interactive mode
39
- npx appwrite-migrate --it
40
-
41
- # Select from menu:
42
- # ✅ Validate configuration (collections/tables conflicts)
43
- # 🔀 Migrate collections to tables format
44
- ```
45
-
46
- ### Programmatic Usage
47
-
48
- #### Configuration Validation
49
-
50
- ```typescript
51
- import { validateCollectionsTablesConfig, reportValidationResults } from "./configValidation.js";
52
- import { loadConfig } from "../utils/loadConfigs.js";
53
-
54
- // Load and validate configuration
55
- const config = await loadConfig(".", { validate: true, reportValidation: true });
56
-
57
- // Manual validation
58
- const validation = validateCollectionsTablesConfig(config);
59
- reportValidationResults(validation, { verbose: true });
60
-
61
- if (!validation.isValid) {
62
- console.error(`Found ${validation.errors.length} validation errors`);
63
- process.exit(1);
64
- }
65
- ```
66
-
67
- #### Collections to Tables Migration
68
-
69
- ```typescript
70
- import {
71
- createMigrationPlan,
72
- executeMigrationPlan,
73
- migrateCollectionsToTables
74
- } from "./configMigration.js";
75
-
76
- // Simple migration
77
- const result = migrateCollectionsToTables(config, {
78
- strategy: "full_migration",
79
- validateResult: true,
80
- dryRun: false
81
- });
82
-
83
- // Advanced migration with planning
84
- const plan = createMigrationPlan(config, "dual_format");
85
- console.log(`Will migrate ${plan.collectionsToMigrate.length} collections`);
86
-
87
- const result = executeMigrationPlan(config, plan, {
88
- validateResult: true,
89
- backupConfig: true
90
- });
91
- ```
92
-
93
- ## Validation Rules
94
-
95
- ### Naming Conflicts
96
- - **Collection/Table Names**: Same names cannot exist in both arrays
97
- - **Collection/Table IDs**: Same IDs cannot exist in both arrays
98
- - **Within Arrays**: No duplicate names or IDs within the same array
99
-
100
- ### Database References
101
- - **Valid Database IDs**: All referenced database IDs must exist in databases array
102
- - **Optional References**: Missing databaseId is allowed for backward compatibility
103
-
104
- ### Schema Consistency
105
- - **Mixed Usage Warning**: Using both collections and tables with auto API mode
106
- - **Migration Suggestions**: Recommends migrating to tables for newer Appwrite versions
107
- - **Relationship Validation**: Checks relationship attributes for potential issues
108
-
109
- ## Migration Strategies
110
-
111
- ### Full Migration
112
- - Converts all collections to tables
113
- - Removes collections array
114
- - Best for new projects moving to TablesDB API
115
-
116
- ### Dual Format
117
- - Keeps both collections and tables
118
- - Useful for gradual transition
119
- - Higher maintenance overhead
120
-
121
- ### Incremental
122
- - Migrates specific collections only
123
- - Good for large projects
124
- - Allows staged migration
125
-
126
- ### Tables Only
127
- - Creates tables-only configuration
128
- - Removes collections array entirely
129
- - Clean slate approach
130
-
131
- ## Error Types
132
-
133
- ### Validation Errors
134
- - `naming_conflict`: Same names/IDs in collections and tables
135
- - `invalid_database_reference`: References to non-existent databases
136
- - `missing_required_field`: Missing required fields in definitions
137
- - `schema_inconsistency`: Configuration inconsistencies
138
- - `duplicate_definition`: Duplicates within same array
139
-
140
- ### Migration Warnings
141
- - Complex relationships requiring manual review
142
- - Large migrations requiring careful testing
143
- - API mode configuration recommendations
144
-
145
- ## Configuration Examples
146
-
147
- ### Valid Dual Configuration
148
- ```typescript
149
- const config: AppwriteConfig = {
150
- // ... other config
151
- collections: [
152
- {
153
- name: "Users",
154
- $id: "users",
155
- // ... collection definition
156
- }
157
- ],
158
- tables: [
159
- {
160
- name: "Products", // Different name - no conflict
161
- tableId: "products",
162
- // ... table definition
163
- }
164
- ],
165
- apiMode: "auto" // Will handle both APIs
166
- };
167
- ```
168
-
169
- ### Configuration with Conflicts (Invalid)
170
- ```typescript
171
- const config: AppwriteConfig = {
172
- // ... other config
173
- collections: [
174
- {
175
- name: "Users",
176
- $id: "users",
177
- // ... collection definition
178
- }
179
- ],
180
- tables: [
181
- {
182
- name: "Users", // ❌ Conflict: same name as collection
183
- tableId: "users", // ❌ Conflict: same ID as collection
184
- // ... table definition
185
- }
186
- ]
187
- };
188
- ```
189
-
190
- ## Integration with Existing Workflows
191
-
192
- ### Config Loading
193
- ```typescript
194
- // Automatic validation during config loading
195
- const config = await loadConfig(".", {
196
- validate: true,
197
- strictMode: false,
198
- reportValidation: true
199
- });
200
- ```
201
-
202
- ### UtilsController Integration
203
- ```typescript
204
- const controller = new UtilsController(process.cwd());
205
-
206
- // Initialize with validation
207
- await controller.init({ validate: true, strictMode: false });
208
-
209
- // Manual validation
210
- const validation = await controller.validateConfiguration();
211
- ```
212
-
213
- ### CLI Integration
214
- ```typescript
215
- // Interactive CLI includes validation and migration options
216
- const cli = new InteractiveCLI(process.cwd());
217
- await cli.run();
218
-
219
- // Options:
220
- // ✅ Validate configuration (collections/tables conflicts)
221
- // 🔀 Migrate collections to tables format
222
- ```
223
-
224
- ## Best Practices
225
-
226
- 1. **Always Validate**: Run validation before deploying configurations
227
- 2. **Use Strict Mode in CI**: Catch warnings early in automated pipelines
228
- 3. **Plan Migrations**: Use migration planning to understand changes
229
- 4. **Backup First**: Create backups before major migrations
230
- 5. **Test Incrementally**: Use incremental migration for large projects
231
- 6. **Monitor API Mode**: Set explicit apiMode after migration
232
-
233
- ## Troubleshooting
234
-
235
- ### Common Issues
236
-
237
- #### Naming Conflicts
238
- ```bash
239
- Error: Naming conflict detected: 'Users'
240
- Details: Table 'Users' has the same name as a collection
241
- Suggestion: Rename one of the conflicting items to avoid confusion
242
- ```
243
- **Solution**: Rename either the collection or table to have unique names.
244
-
245
- #### Invalid Database References
246
- ```bash
247
- Error: Collection 'Posts' references invalid database 'blog'
248
- Details: Database 'blog' is not defined in the databases array
249
- Suggestion: Add database with $id 'blog' to the databases array
250
- ```
251
- **Solution**: Add the referenced database to the databases array.
252
-
253
- #### Migration Complexity Warnings
254
- ```bash
255
- Warning: Large migration may require careful testing and staged deployment
256
- Recommendation: Consider incremental migration for large projects
257
- ```
258
- **Solution**: Use incremental migration strategy or break into smaller batches.
259
-
260
- ### Debug Mode
261
- Enable verbose logging to see detailed validation and migration information:
262
-
263
- ```typescript
264
- // Enable verbose validation reporting
265
- reportValidationResults(validation, { verbose: true });
266
-
267
- // Enable detailed migration logging
268
- const result = executeMigrationPlan(config, plan, {
269
- validateResult: true,
270
- dryRun: true // Test first
271
- });
272
- ```
273
-
274
- This comprehensive validation and migration system ensures smooth transitions between collections and tables while maintaining data integrity and configuration consistency.