跳到主要內容

資料與操作

本節詳細介紹了 Blocklet Server 中用於資料管理和操作任務的 mutation,主要側重於建立和管理備份,以及遷移資料結構。這些操作對於資料完整性、更新和災難復原至關重要。

有關備份和日誌的查詢,請參閱 資料與操作查詢 文件。

backupBlocklet

為指定的 blocklet 啟動備份程序。備份可以儲存到本地磁碟或已設定的 DID Space。這是一個非同步操作,會在背景啟動一個備份工作。

參數

  • input RequestBackupBlockletInput (required) — backupBlocklet mutation 的輸入物件。
    • appDid string (required) — 要備份的 blocklet 的 DID。
    • to BackupTo (required) — 備份的目的地。必須是 spacesdisk 其中之一。

返回值

返回一個 GeneralResponse 物件,表示請求的狀態。

  • backupBlocklet GeneralResponse — mutation 的回應物件。
    • code StatusCode — 如果備份工作成功啟動,則返回 ok

範例

將 Blocklet 備份至磁碟

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function createBackup() {
  try {
    const response = await client.backupBlocklet({
      input: {
        appDid: 'z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G',
        to: 'disk',
      },
    });
    console.log('Backup initiated:', response.code);
  } catch (error) {
    console.error('Error initiating backup:', error);
  }
}

createBackup();

範例回應

json
{
  "backupBlocklet": {
    "code": "ok"
  }
}

此範例展示了如何為特定 blocklet 啟動備份程序,並將備份儲存到本地磁碟。

abortBlockletBackup

中止特定 blocklet 正在進行的備份操作。這對於取消長時間執行的備份很有用。

參數

  • input RequestAbortBlockletBackupInput (required) — abortBlockletBackup mutation 的輸入物件。
    • appPid string (required) — 應中止備份的 blocklet 的進程 ID(即 blocklet DID)。

返回值

返回一個 GeneralResponse 物件,表示請求的狀態。

  • abortBlockletBackup GeneralResponse — mutation 的回應物件。
    • code StatusCode — 如果成功請求中止備份,則返回 ok

範例

中止備份

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function cancelBackup(blockletDid) {
  try {
    const response = await client.abortBlockletBackup({
      input: {
        appPid: blockletDid,
      },
    });
    console.log('Backup cancellation requested:', response.code);
  } catch (error) {
    console.error('Error aborting backup:', error);
  }
}

cancelBackup('z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G');

範例回應

json
{
  "abortBlockletBackup": {
    "code": "ok"
  }
}

此範例展示了如何取消指定 blocklet 的正在執行的備份。

restoreBlocklet

從備份中還原 blocklet。備份來源可以是本地磁碟或 DID Space。如果現有的 blocklet 資料存在,此操作將會覆寫它。

參數

  • input RequestRestoreBlockletInput (required) — restoreBlocklet mutation 的輸入物件。
    • appDid string (required) — 要還原的 blocklet 的 DID。
    • appPid string (required) — 正在還原的 blocklet 的進程 ID (DID)。
    • from BackupTo (required) — 備份的來源。必須是 spacesdisk 其中之一。
    • endpoint string — 備份端點 URL。從 spaces 還原時為必填項。
    • delegation string — 可選。用於存取備份的委託資訊。
    • password Bytes — 可選。如果備份已加密,則用於解密的密碼。
    • wallet any — 可選。如果需要,用於身份驗證的錢包物件。

返回值

返回一個 GeneralResponse 物件,表示請求的狀態。

  • restoreBlocklet GeneralResponse — mutation 的回應物件。
    • code StatusCode — 如果還原工作成功啟動,則返回 ok

範例

從磁碟還原

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function restoreFromBackup() {
  try {
    const response = await client.restoreBlocklet({
      input: {
        appDid: 'z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G',
        appPid: 'z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G',
        from: 'disk',
      },
    });
    console.log('Restore initiated:', response.code);
  } catch (error) {
    console.error('Error initiating restore:', error);
  }
}

restoreFromBackup();

範例回應

json
{
  "restoreBlocklet": {
    "code": "ok"
  }
}

此範例展示了如何從本地磁碟備份啟動 blocklet 的還原程序。

migrateApplicationToStructV2

將應用程式從舊的資料結構遷移到 V2 結構。這是一次性操作,通常是為了讓舊的 blocklet 支援新功能,如元件化和增強的備份/還原功能。

參數

  • input RequestMigrateApplicationToStructV2Input (required) — 遷移 mutation 的輸入物件。
    • did string (required) — 要遷移的應用程式的 DID。
    • appSk string (required) — 應用程式的私鑰。

返回值

返回一個 GeneralResponse 物件,表示請求的狀態。

  • migrateApplicationToStructV2 GeneralResponse — mutation 的回應物件。
    • code StatusCode — 如果遷移成功,則返回 ok

範例

遷移應用程式

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function migrateApp(appDid, appSecretKey) {
  try {
    const response = await client.migrateApplicationToStructV2({
      input: {
        did: appDid,
        appSk: appSecretKey,
      },
    });
    console.log('Migration successful:', response.code);
  } catch (error) {
    console.error('Error migrating application:', error);
  }
}

migrateApp('z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G', 'your_app_secret_key');

範例回應

json
{
  "migrateApplicationToStructV2": {
    "code": "ok"
  }
}

此範例展示了如何為舊版應用程式觸發資料結構遷移。