appwrite-utils-cli 0.0.13 → 0.0.14
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/dist/migrations/afterImportActions.js +2 -0
- package/dist/migrations/importController.js +2 -1
- package/dist/migrations/importDataActions.js +1 -3
- package/dist/migrations/users.js +0 -3
- package/package.json +1 -1
- package/src/migrations/afterImportActions.ts +4 -0
- package/src/migrations/importController.ts +2 -1
- package/src/migrations/importDataActions.ts +5 -5
- package/src/migrations/users.ts +0 -4
|
@@ -2,6 +2,7 @@ import { Databases, Storage, InputFile, Query, ID, Client, } from "node-appwrite
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
import os from "os";
|
|
5
|
+
import { logger } from "./logging.js";
|
|
5
6
|
const getDatabaseFromConfig = (config) => {
|
|
6
7
|
if (!config.appwriteClient) {
|
|
7
8
|
config.appwriteClient = new Client()
|
|
@@ -307,6 +308,7 @@ export const afterImportActions = {
|
|
|
307
308
|
}
|
|
308
309
|
}
|
|
309
310
|
catch (error) {
|
|
311
|
+
logger.error(`Error creating file and updating field, params were:\ndbId: ${dbId}, collId: ${collId}, docId: ${docId}, fieldName: ${fieldName}, filePath: ${filePath}, fileName: ${fileName}\n\nError: ${error}`);
|
|
310
312
|
console.error("Error creating file and updating field: ", error);
|
|
311
313
|
console.log(`Params were: dbId: ${dbId}, collId: ${collId}, docId: ${docId}, fieldName: ${fieldName}, filePath: ${filePath}, fileName: ${fileName}`);
|
|
312
314
|
}
|
|
@@ -346,7 +346,8 @@ export class ImportController {
|
|
|
346
346
|
const actionOperation = ContextObject.parse(JSON.parse(batch.data));
|
|
347
347
|
const { context, finalItem, attributeMappings } = actionOperation;
|
|
348
348
|
if (finalItem.$id && !context.docId) {
|
|
349
|
-
context.docId =
|
|
349
|
+
context.docId =
|
|
350
|
+
finalItem.$id || context.createdDoc.$id || context.$id || undefined;
|
|
350
351
|
logger.info(`Setting docId to ${finalItem.$id} because docId not found in context, batch ${batch.$id}, context is ${JSON.stringify(context)}`);
|
|
351
352
|
}
|
|
352
353
|
try {
|
|
@@ -58,7 +58,6 @@ export class ImportDataActions {
|
|
|
58
58
|
const convertedItem = convertObjectBySchema(item, conversionSchema);
|
|
59
59
|
// Merge the converted item back into the original item object
|
|
60
60
|
Object.assign(item, convertedItem);
|
|
61
|
-
console.log("Converted item:", item);
|
|
62
61
|
return item;
|
|
63
62
|
}
|
|
64
63
|
/**
|
|
@@ -73,7 +72,6 @@ export class ImportDataActions {
|
|
|
73
72
|
if (!validationActions ||
|
|
74
73
|
!Array.isArray(validationActions) ||
|
|
75
74
|
!validationActions.length) {
|
|
76
|
-
console.warn("No validation actions defined for the item, assuming true");
|
|
77
75
|
return true; // Assume items without validation actions as valid.
|
|
78
76
|
}
|
|
79
77
|
for (const ruleDef of validationActions) {
|
|
@@ -137,7 +135,7 @@ export class ImportDataActions {
|
|
|
137
135
|
await actionMethod(this.config, ...resolvedParams);
|
|
138
136
|
}
|
|
139
137
|
catch (error) {
|
|
140
|
-
logger.error(`Error executing action '${actionName}':`, error);
|
|
138
|
+
logger.error(`Error executing action '${actionName}' with context:`, context, error);
|
|
141
139
|
throw new Error(`Execution failed for action '${actionName}': ${error.message}`);
|
|
142
140
|
}
|
|
143
141
|
}
|
package/dist/migrations/users.js
CHANGED
|
@@ -40,7 +40,6 @@ export class UsersController {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
async createUserAndReturn(item) {
|
|
43
|
-
console.log("Creating user with item", item);
|
|
44
43
|
// Attempt to find an existing user by email or phone.
|
|
45
44
|
let foundUsers = [];
|
|
46
45
|
if (item.email) {
|
|
@@ -59,13 +58,11 @@ export class UsersController {
|
|
|
59
58
|
}
|
|
60
59
|
let userToReturn = foundUsers[0] || undefined;
|
|
61
60
|
if (!userToReturn) {
|
|
62
|
-
console.log("Creating user cause not found");
|
|
63
61
|
userToReturn = await this.users.create(item.userId || ID.unique(), item.email || undefined, item.phone && item.phone.length < 15 && item.phone.startsWith("+")
|
|
64
62
|
? item.phone
|
|
65
63
|
: undefined, item.password?.toLowerCase() || `changeMe${item.email}`.toLowerCase(), item.name || undefined);
|
|
66
64
|
}
|
|
67
65
|
else {
|
|
68
|
-
console.log("Updating user cause found");
|
|
69
66
|
// Update user details as necessary, ensuring email uniqueness if attempting an update.
|
|
70
67
|
if (item.email &&
|
|
71
68
|
item.email !== userToReturn.email &&
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appwrite-utils-cli",
|
|
3
3
|
"description": "Appwrite Utility Functions to help with database management, data conversion, data import, migrations, and much more. Meant to be used as a CLI tool, I do not recommend installing this in frontend environments.",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.14",
|
|
5
5
|
"main": "src/main.ts",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -11,6 +11,7 @@ import type { AppwriteConfig } from "./schema.js";
|
|
|
11
11
|
import path from "path";
|
|
12
12
|
import fs from "fs";
|
|
13
13
|
import os from "os";
|
|
14
|
+
import { logger } from "./logging.js";
|
|
14
15
|
|
|
15
16
|
const getDatabaseFromConfig = (config: AppwriteConfig) => {
|
|
16
17
|
if (!config.appwriteClient) {
|
|
@@ -481,6 +482,9 @@ export const afterImportActions = {
|
|
|
481
482
|
console.log("Created file from path: ", file.$id);
|
|
482
483
|
}
|
|
483
484
|
} catch (error) {
|
|
485
|
+
logger.error(
|
|
486
|
+
`Error creating file and updating field, params were:\ndbId: ${dbId}, collId: ${collId}, docId: ${docId}, fieldName: ${fieldName}, filePath: ${filePath}, fileName: ${fileName}\n\nError: ${error}`
|
|
487
|
+
);
|
|
484
488
|
console.error("Error creating file and updating field: ", error);
|
|
485
489
|
console.log(
|
|
486
490
|
`Params were: dbId: ${dbId}, collId: ${collId}, docId: ${docId}, fieldName: ${fieldName}, filePath: ${filePath}, fileName: ${fileName}`
|
|
@@ -548,7 +548,8 @@ export class ImportController {
|
|
|
548
548
|
const actionOperation = ContextObject.parse(JSON.parse(batch.data));
|
|
549
549
|
const { context, finalItem, attributeMappings } = actionOperation;
|
|
550
550
|
if (finalItem.$id && !context.docId) {
|
|
551
|
-
context.docId =
|
|
551
|
+
context.docId =
|
|
552
|
+
finalItem.$id || context.createdDoc.$id || context.$id || undefined;
|
|
552
553
|
logger.info(
|
|
553
554
|
`Setting docId to ${
|
|
554
555
|
finalItem.$id
|
|
@@ -92,7 +92,6 @@ export class ImportDataActions {
|
|
|
92
92
|
const convertedItem = convertObjectBySchema(item, conversionSchema);
|
|
93
93
|
// Merge the converted item back into the original item object
|
|
94
94
|
Object.assign(item, convertedItem);
|
|
95
|
-
console.log("Converted item:", item);
|
|
96
95
|
return item;
|
|
97
96
|
}
|
|
98
97
|
|
|
@@ -114,9 +113,6 @@ export class ImportDataActions {
|
|
|
114
113
|
!Array.isArray(validationActions) ||
|
|
115
114
|
!validationActions.length
|
|
116
115
|
) {
|
|
117
|
-
console.warn(
|
|
118
|
-
"No validation actions defined for the item, assuming true"
|
|
119
|
-
);
|
|
120
116
|
return true; // Assume items without validation actions as valid.
|
|
121
117
|
}
|
|
122
118
|
for (const ruleDef of validationActions) {
|
|
@@ -223,7 +219,11 @@ export class ImportDataActions {
|
|
|
223
219
|
);
|
|
224
220
|
await (actionMethod as any)(this.config, ...resolvedParams);
|
|
225
221
|
} catch (error: any) {
|
|
226
|
-
logger.error(
|
|
222
|
+
logger.error(
|
|
223
|
+
`Error executing action '${actionName}' with context:`,
|
|
224
|
+
context,
|
|
225
|
+
error
|
|
226
|
+
);
|
|
227
227
|
throw new Error(
|
|
228
228
|
`Execution failed for action '${actionName}': ${error.message}`
|
|
229
229
|
);
|
package/src/migrations/users.ts
CHANGED
|
@@ -49,8 +49,6 @@ export class UsersController {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
async createUserAndReturn(item: AuthUserCreate) {
|
|
52
|
-
console.log("Creating user with item", item);
|
|
53
|
-
|
|
54
52
|
// Attempt to find an existing user by email or phone.
|
|
55
53
|
let foundUsers: Models.User<Models.Preferences>[] = [];
|
|
56
54
|
if (item.email) {
|
|
@@ -71,7 +69,6 @@ export class UsersController {
|
|
|
71
69
|
let userToReturn = foundUsers[0] || undefined;
|
|
72
70
|
|
|
73
71
|
if (!userToReturn) {
|
|
74
|
-
console.log("Creating user cause not found");
|
|
75
72
|
userToReturn = await this.users.create(
|
|
76
73
|
item.userId || ID.unique(),
|
|
77
74
|
item.email || undefined,
|
|
@@ -82,7 +79,6 @@ export class UsersController {
|
|
|
82
79
|
item.name || undefined
|
|
83
80
|
);
|
|
84
81
|
} else {
|
|
85
|
-
console.log("Updating user cause found");
|
|
86
82
|
// Update user details as necessary, ensuring email uniqueness if attempting an update.
|
|
87
83
|
if (
|
|
88
84
|
item.email &&
|