Skip to main content

Poll Delete Status

Poll the status of a database deletion job using the job ID returned by the delete() method. Database deletion is asynchronous, so use this method to check when the deletion is complete or if it has failed.

Method Signature

client.databases.pollDeleteStatus(jobId: string): Promise<BolticSuccessResponse<DatabaseDeletionStatusResponse> | BolticErrorResponse>

Parameters

ParameterTypeRequiredDescription
jobIdstringJob ID returned from the delete() operation

Return Value

BolticSuccessResponse<DatabaseDeletionStatusResponse>

interface BolticSuccessResponse<DatabaseDeletionStatusResponse> {
data: DatabaseDeletionStatusResponse;
error: null;
}

DatabaseDeletionStatusResponse

The data property contains a DatabaseDeletionStatusResponse with the following structure:

interface DatabaseDeletionStatusResponse {
jobId: string; // Job identifier (UUID)
status: "pending" | "in_progress" | "success" | "failed"; // Job status
message: string; // Status message describing the current state
}

Job Status Values

StatusDescription
pendingJob is queued and waiting to start
in_progressJob is currently being processed
successJob completed successfully
failedJob failed during execution

Examples

Basic Status Polling

import { createClient } from "@boltic/sdk";

const client = createClient("your-api-key");

const { data: status, error } = await client.databases.pollDeleteStatus("job-id-here");

if (error) {
console.error("Failed to poll status:", error.message);
} else {
console.log(`Job Status: ${status.status}`);
console.log(`Message: ${status.message}`);
}

Poll with Retry Logic

async function waitForDeletion(jobId: string, maxAttempts = 30, pollInterval = 2000) {
for (let attempt = 0; attempt < maxAttempts; attempt++) {
const { data: status, error } = await client.databases.pollDeleteStatus(jobId);

if (error) {
throw new Error(`Failed to poll status: ${error.message}`);
}

console.log(`Attempt ${attempt + 1}/${maxAttempts}: ${status.status} - ${status.message}`);

if (status.status === "success") {
console.log("✅ Database deletion completed");
return true;
} else if (status.status === "failed") {
throw new Error(`Deletion failed: ${status.message}`);
}

// Wait before next poll
if (attempt < maxAttempts - 1) {
await new Promise((resolve) => setTimeout(resolve, pollInterval));
}
}

throw new Error("Deletion timeout: job did not complete in time");
}

// Usage
try {
const jobId = "your-job-id";
await waitForDeletion(jobId);
console.log("Database successfully deleted");
} catch (error) {
console.error("Error:", error.message);
}