MCPcopy Create free account
hub / github.com/parse-community/parse-dashboard / migrateToServer

Method migrateToServer

src/lib/ScriptManager.js:198–249  ·  view source on GitHub ↗

* Migrates scripts from local storage to server storage * @param {string} appId - The application ID * @param {boolean} overwriteConflicts - If true, overwrite server scripts with same ID * @returns {Promise<{success: boolean, scriptCount: number, conflicts?: Array}>}

(appId, overwriteConflicts = false)

Source from the content-addressed store, hash-verified

196 * @returns {Promise<{success: boolean, scriptCount: number, conflicts?: Array}>}
197 */
198 async migrateToServer(appId, overwriteConflicts = false) {
199 if (!this.serverStorage.isServerConfigEnabled()) {
200 throw new Error('Server configuration is not enabled for this app');
201 }
202
203 // Get scripts from local storage only (legacy scripts are handled by getScripts as unsaved tabs)
204 const localScripts = this._getScriptsFromLocal(appId);
205
206 if (!localScripts || localScripts.length === 0) {
207 return { success: true, scriptCount: 0 };
208 }
209
210 try {
211 // Get existing scripts from server to detect conflicts
212 const existingScriptConfigs = await this.serverStorage.getConfigsByPrefix('console.js.script.', appId);
213 const existingScriptIds = Object.keys(existingScriptConfigs).map(key =>
214 key.replace('console.js.script.', '')
215 );
216
217 // Check for conflicts
218 const localScriptIds = localScripts.map(script => script.id).filter(Boolean);
219 const conflictingIds = localScriptIds.filter(id => existingScriptIds.includes(id));
220
221 if (conflictingIds.length > 0 && !overwriteConflicts) {
222 // Return conflicts for user decision
223 const conflicts = conflictingIds.map(id => {
224 const localScript = localScripts.find(s => s.id === id);
225 const serverScriptKey = `console.js.script.${id}`;
226 const serverScript = existingScriptConfigs[serverScriptKey];
227 return {
228 id,
229 type: 'script',
230 local: localScript,
231 server: serverScript
232 };
233 });
234
235 return {
236 success: false,
237 scriptCount: 0,
238 conflicts
239 };
240 }
241
242 // Proceed with migration (merge mode)
243 await this._migrateScriptsToServer(appId, localScripts, overwriteConflicts);
244 return { success: true, scriptCount: localScripts.length };
245 } catch (error) {
246 console.error('Failed to migrate scripts to server:', error);
247 throw error;
248 }
249 }
250
251 /**
252 * Deletes scripts from local storage

Callers 2

migrateToServerFunction · 0.45
handleConflictOverwriteFunction · 0.45

Calls 4

_getScriptsFromLocalMethod · 0.95
getConfigsByPrefixMethod · 0.80
isServerConfigEnabledMethod · 0.45

Tested by

no test coverage detected