Hello from MCP server
import { CapacitorSQLite, SQLiteConnection } from "@capacitor-community/sqlite";
export async function deleteIndexedDatabase(dbName: string): Promise<void> {
return new Promise((resolve, reject) => {
const deleteRequest = indexedDB.deleteDatabase(dbName);
deleteRequest.onsuccess = () => {
resolve();
};
deleteRequest.onerror = () => {
console.error(
`❌ Failed to delete IndexedDB: ${dbName}`,
deleteRequest.error,
);
reject(deleteRequest.error);
};
deleteRequest.onblocked = () => {
console.warn(
`⚠️ Delete blocked for: ${dbName} (close all tabs using this database)`,
);
resolve();
};
});
}
export async function clearAllIndexedDB(): Promise<void> {
try {
if ("indexedDB" in window) {
// Get all database names
const databases = await indexedDB.databases();
// Delete each database
for (const db of databases) {
if (db.name) {
await deleteIndexedDatabase(db.name);
}
}
} else {
// IndexedDB not available
}
} catch (error) {
console.error("Error clearing IndexedDB:", error);
throw error;
}
}
export async function deleteDatabase(dbName: string): Promise<void> {
try {
// Close any existing connections first
const sqlite = new SQLiteConnection(CapacitorSQLite);
const isConnection = await sqlite.isConnection(dbName, false);
if (isConnection.result) {
await sqlite.closeConnection(dbName, false);
}
// Delete the database using the plugin directly
await CapacitorSQLite.deleteDatabase({ database: dbName });
} catch (error) {
console.error(`Error deleting database ${dbName}:`, error);
throw error;
}
}
/*
export async function forceDeleteDatabase(dbName: string): Promise<void> {
try {
const sqlite = new SQLiteConnection(CapacitorSQLite);
// Always create/open connection first
const db = await sqlite.createConnection(
dbName,
false, // not encrypted
"no-encryption",
1, // version
false, // not readonly
);
// Try to open (this ensures the database exists)
try {
await db.open();
} catch (openError) {
return;
}
// Close it
await db.close();
// Now delete
await CapacitorSQLite.deleteDatabase({ database: dbName });
} catch (error) {
console.error(`Error force deleting database ${dbName}:`, error);
throw error;
}
}
*/