appwrite-utils-cli 0.9.981 → 0.9.982

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.
@@ -8,8 +8,8 @@ export declare class UsersController {
8
8
  constructor(config: AppwriteConfig, db: Databases);
9
9
  wipeUsers(): Promise<void>;
10
10
  getAllUsers(): Promise<Models.User<Models.Preferences>[]>;
11
- createUsersAndReturn(items: AuthUserCreate[]): Promise<Models.User<Models.Preferences>[]>;
12
- createUserAndReturn(item: AuthUserCreate, numAttempts?: number): Promise<Models.User<Models.Preferences>>;
11
+ createUsersAndReturn(items: AuthUserCreate[]): Promise<(Models.User<Models.Preferences> | undefined)[]>;
12
+ createUserAndReturn(item: AuthUserCreate): Promise<Models.User<Models.Preferences> | undefined>;
13
13
  createAndCheckForUserAndReturn(item: AuthUserCreate): Promise<Models.User<Models.Preferences> | undefined>;
14
14
  getUserIdByEmailOrPhone(email?: string, phone?: string): Promise<string | undefined>;
15
15
  transferUsersBetweenDbsLocalToRemote: (endpoint: string, projectId: string, apiKey: string) => Promise<void>;
@@ -78,36 +78,26 @@ export class UsersController {
78
78
  const users = await Promise.all(items.map((item) => this.createUserAndReturn(item)));
79
79
  return users;
80
80
  }
81
- async createUserAndReturn(item, numAttempts) {
81
+ async createUserAndReturn(item) {
82
82
  try {
83
- const user = await this.users.create(item.userId || ID.unique(), item.email || undefined, item.phone && item.phone.length < 15 && item.phone.startsWith("+")
84
- ? item.phone
85
- : undefined, `changeMe${item.email?.toLowerCase()}` || `changeMePlease`, item.name || undefined);
86
- if (item.labels) {
87
- await this.users.updateLabels(user.$id, item.labels);
88
- }
89
- if (item.prefs) {
90
- await this.users.updatePrefs(user.$id, item.prefs);
91
- }
83
+ const user = await tryAwaitWithRetry(async () => {
84
+ const createdUser = await this.users.create(item.userId || ID.unique(), item.email || undefined, item.phone && item.phone.length < 15 && item.phone.startsWith("+")
85
+ ? item.phone
86
+ : undefined, `changeMe${item.email?.toLowerCase()}` || `changeMePlease`, item.name || undefined);
87
+ if (item.labels) {
88
+ await this.users.updateLabels(createdUser.$id, item.labels);
89
+ }
90
+ if (item.prefs) {
91
+ await this.users.updatePrefs(createdUser.$id, item.prefs);
92
+ }
93
+ return createdUser;
94
+ }); // Set throwError to true since we want to handle errors
92
95
  return user;
93
96
  }
94
97
  catch (e) {
95
- if (e instanceof AppwriteException) {
96
- if (e.message.toLowerCase().includes("fetch failed") ||
97
- e.message.toLowerCase().includes("server error")) {
98
- const numberOfAttempts = numAttempts || 0;
99
- if (numberOfAttempts > 5) {
100
- throw e;
101
- }
102
- const user = await this.createUserAndReturn(item, numberOfAttempts + 1);
103
- return user;
104
- }
105
- }
106
98
  if (e instanceof Error) {
107
99
  logger.error("FAILED CREATING USER: ", e.message, item);
108
100
  }
109
- console.log("FAILED CREATING USER: ", e, item);
110
- throw e;
111
101
  }
112
102
  }
113
103
  async createAndCheckForUserAndReturn(item) {
@@ -106,7 +106,7 @@ export const tryAwaitWithRetry = async (createFunction, attemptNum = 0, throwErr
106
106
  if (attemptNum > 5) {
107
107
  throw error;
108
108
  }
109
- await delay(1000);
109
+ await delay(2500);
110
110
  return tryAwaitWithRetry(createFunction, attemptNum + 1);
111
111
  }
112
112
  if (throwError) {
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.9.981",
4
+ "version": "0.9.982",
5
5
  "main": "src/main.ts",
6
6
  "type": "module",
7
7
  "repository": {
@@ -111,44 +111,34 @@ export class UsersController {
111
111
  return users;
112
112
  }
113
113
 
114
- async createUserAndReturn(item: AuthUserCreate, numAttempts?: number) {
114
+ async createUserAndReturn(item: AuthUserCreate) {
115
115
  try {
116
- const user = await this.users.create(
117
- item.userId || ID.unique(),
118
- item.email || undefined,
119
- item.phone && item.phone.length < 15 && item.phone.startsWith("+")
120
- ? item.phone
121
- : undefined,
122
- `changeMe${item.email?.toLowerCase()}` || `changeMePlease`,
123
- item.name || undefined
124
- );
125
- if (item.labels) {
126
- await this.users.updateLabels(user.$id, item.labels);
127
- }
128
- if (item.prefs) {
129
- await this.users.updatePrefs(user.$id, item.prefs);
130
- }
116
+ const user = await tryAwaitWithRetry(async () => {
117
+ const createdUser = await this.users.create(
118
+ item.userId || ID.unique(),
119
+ item.email || undefined,
120
+ item.phone && item.phone.length < 15 && item.phone.startsWith("+")
121
+ ? item.phone
122
+ : undefined,
123
+ `changeMe${item.email?.toLowerCase()}` || `changeMePlease`,
124
+ item.name || undefined
125
+ );
126
+
127
+ if (item.labels) {
128
+ await this.users.updateLabels(createdUser.$id, item.labels);
129
+ }
130
+ if (item.prefs) {
131
+ await this.users.updatePrefs(createdUser.$id, item.prefs);
132
+ }
133
+
134
+ return createdUser;
135
+ }); // Set throwError to true since we want to handle errors
136
+
131
137
  return user;
132
138
  } catch (e) {
133
- if (e instanceof AppwriteException) {
134
- if (
135
- e.message.toLowerCase().includes("fetch failed") ||
136
- e.message.toLowerCase().includes("server error")
137
- ) {
138
- const numberOfAttempts = numAttempts || 0;
139
- if (numberOfAttempts > 5) {
140
- throw e;
141
- }
142
- const user: Models.User<Models.Preferences> =
143
- await this.createUserAndReturn(item, numberOfAttempts + 1);
144
- return user;
145
- }
146
- }
147
139
  if (e instanceof Error) {
148
140
  logger.error("FAILED CREATING USER: ", e.message, item);
149
141
  }
150
- console.log("FAILED CREATING USER: ", e, item);
151
- throw e;
152
142
  }
153
143
  }
154
144
 
@@ -163,7 +163,7 @@ export const tryAwaitWithRetry = async <T>(
163
163
  if (attemptNum > 5) {
164
164
  throw error;
165
165
  }
166
- await delay(1000);
166
+ await delay(2500);
167
167
  return tryAwaitWithRetry(createFunction, attemptNum + 1);
168
168
  }
169
169
  if (throwError) {