UNPKG

appwrite-utils-cli

Version:

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.

35 lines (34 loc) 1.56 kB
import { Databases, Query } from "node-appwrite"; import { delay, tryAwaitWithRetry } from "../utils/helperFunctions.js"; import { fetchAllCollections } from "../collections/methods.js"; export const fetchAllDatabases = async (database) => { const databases = await tryAwaitWithRetry(async () => await database.list([Query.limit(25)])); const allDatabases = databases.databases; if (allDatabases.length === 0) return []; let lastDatabaseId = allDatabases[allDatabases.length - 1].$id; while (databases.databases.length === 25) { const moreDatabases = await database.list([ Query.limit(25), Query.cursorAfter(lastDatabaseId), ]); allDatabases.push(...moreDatabases.databases); if (moreDatabases.databases.length < 25) break; lastDatabaseId = moreDatabases.databases[moreDatabases.databases.length - 1].$id; } return allDatabases; }; export const wipeDatabase = async (database, databaseId) => { console.log(`Wiping database: ${databaseId}`); const existingCollections = await fetchAllCollections(databaseId, database); let collectionsDeleted = []; for (const { $id: collectionId, name } of existingCollections) { console.log(`Deleting collection: ${collectionId}`); collectionsDeleted.push({ collectionId, collectionName: name }); await tryAwaitWithRetry(async () => await database.deleteCollection(databaseId, collectionId)); await delay(100); } return collectionsDeleted; };