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.
46 lines (44 loc) • 1.26 kB
text/typescript
import type { Databases, Models } from "node-appwrite";
import type { OperationCreate } from "../storage/schemas.js";
import { tryAwaitWithRetry } from "appwrite-utils";
import { ulid } from "ulidx";
export const logOperation = async (
db: Databases,
dbId: string,
operationDetails: OperationCreate,
operationId?: string,
useMigrations: boolean = true
): Promise<Models.Document | null> => {
if (!useMigrations) {
console.log("Migrations disabled, skipping operation logging");
return null;
}
try {
let operation;
if (operationId) {
// Update existing operation log
operation = await tryAwaitWithRetry(
async () =>
await db.updateDocument(
"migrations",
"currentOperations",
operationId,
operationDetails
)
);
} else {
// Create new operation log
operation = await db.createDocument(
"migrations",
"currentOperations",
ulid(),
operationDetails
);
}
console.log(`Operation logged: ${operation.$id}`);
return operation;
} catch (error) {
console.error(`Error logging operation: ${error}`);
throw error;
}
};