appwrite-utils-cli 0.10.73 → 0.10.75
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 +2 -0
- package/dist/migrations/schemaStrings.js +1 -1
- package/dist/migrations/transfer.js +6 -0
- package/dist/utils/schemaStrings.js +9 -7
- package/package.json +1 -1
- package/src/migrations/schemaStrings.ts +1 -1
- package/src/migrations/transfer.ts +10 -0
- package/src/utils/schemaStrings.ts +30 -24
package/README.md
CHANGED
@@ -148,6 +148,8 @@ This updated CLI ensures that developers have robust tools at their fingertips t
|
|
148
148
|
|
149
149
|
## Changelog
|
150
150
|
|
151
|
+
- 0.10.75: Fixed slight issue writing ZOD Schema for collection without any attributes
|
152
|
+
- 0.10.74: Fix moving users, should update Labels now
|
151
153
|
- 0.10.73: Fix moving users, passwords should work now (from Appwrite, Argon2)
|
152
154
|
- 0.10.71: Fix create template function `__dirname`
|
153
155
|
- 0.10.70: Fixed `--transfer-users` phones
|
@@ -244,7 +244,7 @@ export default appwriteConfig;
|
|
244
244
|
return;
|
245
245
|
}
|
246
246
|
this.config.collections.forEach((collection) => {
|
247
|
-
const schemaString = this.createSchemaString(collection.name, collection.attributes);
|
247
|
+
const schemaString = this.createSchemaString(collection.name, collection.attributes || []);
|
248
248
|
const camelCaseName = toCamelCase(collection.name);
|
249
249
|
const schemaPath = path.join(this.appwriteFolderPath, "schemas", `${camelCaseName}.ts`);
|
250
250
|
fs.writeFileSync(schemaPath, schemaString, { encoding: "utf-8" });
|
@@ -414,11 +414,17 @@ export const transferUsersLocalToRemote = async (localUsers, endpoint, projectId
|
|
414
414
|
if (phone) {
|
415
415
|
await tryAwaitWithRetry(async () => remoteUsers.updatePhone(user.$id, phone));
|
416
416
|
}
|
417
|
+
if (user.labels && user.labels.length > 0) {
|
418
|
+
await tryAwaitWithRetry(async () => remoteUsers.updateLabels(user.$id, user.labels));
|
419
|
+
}
|
417
420
|
}
|
418
421
|
else {
|
419
422
|
await tryAwaitWithRetry(async () => remoteUsers.create(user.$id, user.email, phone, // phone - optional
|
420
423
|
user.password, // password - cannot transfer hashed passwords
|
421
424
|
user.name));
|
425
|
+
if (user.labels && user.labels.length > 0) {
|
426
|
+
await tryAwaitWithRetry(async () => remoteUsers.updateLabels(user.$id, user.labels));
|
427
|
+
}
|
422
428
|
}
|
423
429
|
// Update user preferences and status
|
424
430
|
await tryAwaitWithRetry(async () => remoteUsers.updatePrefs(user.$id, user.prefs));
|
@@ -36,19 +36,19 @@ export class SchemaGenerator {
|
|
36
36
|
usersCollectionName: "${this.config.usersCollectionName}",
|
37
37
|
databases: ${JSON.stringify(this.config.databases)},
|
38
38
|
buckets: ${JSON.stringify(this.config.buckets)},
|
39
|
-
functions: ${JSON.stringify(functions.map(func => ({
|
39
|
+
functions: ${JSON.stringify(functions.map((func) => ({
|
40
40
|
functionId: func.$id || ulid(),
|
41
41
|
name: func.name,
|
42
42
|
runtime: func.runtime,
|
43
43
|
path: func.dirPath || `functions/${func.name}`,
|
44
|
-
entrypoint: func.entrypoint ||
|
44
|
+
entrypoint: func.entrypoint || "src/index.ts",
|
45
45
|
execute: func.execute,
|
46
46
|
events: func.events || [],
|
47
|
-
schedule: func.schedule ||
|
47
|
+
schedule: func.schedule || "",
|
48
48
|
timeout: func.timeout || 15,
|
49
49
|
enabled: func.enabled !== false,
|
50
50
|
logging: func.logging !== false,
|
51
|
-
commands: func.commands ||
|
51
|
+
commands: func.commands || "npm install",
|
52
52
|
scopes: func.scopes || [],
|
53
53
|
installationId: func.installationId,
|
54
54
|
providerRepositoryId: func.providerRepositoryId,
|
@@ -56,8 +56,10 @@ export class SchemaGenerator {
|
|
56
56
|
providerSilentMode: func.providerSilentMode,
|
57
57
|
providerRootDirectory: func.providerRootDirectory,
|
58
58
|
specification: func.specification,
|
59
|
-
...(func.predeployCommands
|
60
|
-
|
59
|
+
...(func.predeployCommands
|
60
|
+
? { predeployCommands: func.predeployCommands }
|
61
|
+
: {}),
|
62
|
+
...(func.deployDir ? { deployDir: func.deployDir } : {}),
|
61
63
|
})), null, 2)}
|
62
64
|
};
|
63
65
|
|
@@ -84,7 +86,7 @@ export class SchemaGenerator {
|
|
84
86
|
.join(",\n ")}
|
85
87
|
],
|
86
88
|
attributes: [
|
87
|
-
${collection.attributes
|
89
|
+
${(collection.attributes || [])
|
88
90
|
.map((attr) => {
|
89
91
|
return `{ ${Object.entries(attr)
|
90
92
|
.map(([key, value]) => {
|
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.10.
|
4
|
+
"version": "0.10.75",
|
5
5
|
"main": "src/main.ts",
|
6
6
|
"type": "module",
|
7
7
|
"repository": {
|
@@ -308,7 +308,7 @@ export default appwriteConfig;
|
|
308
308
|
this.config.collections.forEach((collection) => {
|
309
309
|
const schemaString = this.createSchemaString(
|
310
310
|
collection.name,
|
311
|
-
collection.attributes
|
311
|
+
collection.attributes || []
|
312
312
|
);
|
313
313
|
const camelCaseName = toCamelCase(collection.name);
|
314
314
|
const schemaPath = path.join(
|
@@ -829,6 +829,11 @@ export const transferUsersLocalToRemote = async (
|
|
829
829
|
remoteUsers.updatePhone(user.$id, phone)
|
830
830
|
);
|
831
831
|
}
|
832
|
+
if (user.labels && user.labels.length > 0) {
|
833
|
+
await tryAwaitWithRetry(async () =>
|
834
|
+
remoteUsers.updateLabels(user.$id, user.labels)
|
835
|
+
);
|
836
|
+
}
|
832
837
|
} else {
|
833
838
|
await tryAwaitWithRetry(async () =>
|
834
839
|
remoteUsers.create(
|
@@ -839,6 +844,11 @@ export const transferUsersLocalToRemote = async (
|
|
839
844
|
user.name
|
840
845
|
)
|
841
846
|
);
|
847
|
+
if (user.labels && user.labels.length > 0) {
|
848
|
+
await tryAwaitWithRetry(async () =>
|
849
|
+
remoteUsers.updateLabels(user.$id, user.labels)
|
850
|
+
);
|
851
|
+
}
|
842
852
|
}
|
843
853
|
|
844
854
|
// Update user preferences and status
|
@@ -55,29 +55,35 @@ export class SchemaGenerator {
|
|
55
55
|
usersCollectionName: "${this.config.usersCollectionName}",
|
56
56
|
databases: ${JSON.stringify(this.config.databases)},
|
57
57
|
buckets: ${JSON.stringify(this.config.buckets)},
|
58
|
-
functions: ${JSON.stringify(
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
58
|
+
functions: ${JSON.stringify(
|
59
|
+
functions.map((func) => ({
|
60
|
+
functionId: func.$id || ulid(),
|
61
|
+
name: func.name,
|
62
|
+
runtime: func.runtime,
|
63
|
+
path: func.dirPath || `functions/${func.name}`,
|
64
|
+
entrypoint: func.entrypoint || "src/index.ts",
|
65
|
+
execute: func.execute,
|
66
|
+
events: func.events || [],
|
67
|
+
schedule: func.schedule || "",
|
68
|
+
timeout: func.timeout || 15,
|
69
|
+
enabled: func.enabled !== false,
|
70
|
+
logging: func.logging !== false,
|
71
|
+
commands: func.commands || "npm install",
|
72
|
+
scopes: func.scopes || [],
|
73
|
+
installationId: func.installationId,
|
74
|
+
providerRepositoryId: func.providerRepositoryId,
|
75
|
+
providerBranch: func.providerBranch,
|
76
|
+
providerSilentMode: func.providerSilentMode,
|
77
|
+
providerRootDirectory: func.providerRootDirectory,
|
78
|
+
specification: func.specification,
|
79
|
+
...(func.predeployCommands
|
80
|
+
? { predeployCommands: func.predeployCommands }
|
81
|
+
: {}),
|
82
|
+
...(func.deployDir ? { deployDir: func.deployDir } : {}),
|
83
|
+
})),
|
84
|
+
null,
|
85
|
+
2
|
86
|
+
)}
|
81
87
|
};
|
82
88
|
|
83
89
|
export default appwriteConfig;
|
@@ -114,7 +120,7 @@ export class SchemaGenerator {
|
|
114
120
|
.join(",\n ")}
|
115
121
|
],
|
116
122
|
attributes: [
|
117
|
-
${collection.attributes
|
123
|
+
${(collection.attributes || [])
|
118
124
|
.map((attr) => {
|
119
125
|
return `{ ${Object.entries(attr)
|
120
126
|
.map(([key, value]) => {
|