INTEGRITY Dokumentace

Migrace tříd Durable Object (zastaralé)

Migrace je proces mapování názvu třídy na stav za běhu. Tento proces sdělí změny běhovému prostředí Workers a poskytne mu instrukce, jak s těmito změnami naložit.

Chcete-li použít migraci, je potřeba:

  1. Upravte konfigurační soubor Wrangler (viz Konfigurace migrace Wrangler).
  2. Worker opětovně nasaďte pomocí npx wrangler deploy.

Proces migrace musíte zahájit, pokud:

Vytvoření migrace

Nejběžnější je migrace typu nová třída, která runtime informuje, že se nahrává nová třída Durable Objects. Tuto migraci potřebujete i při vytváření vaší první třídy Durable Object.

Chcete-li použít migraci Create:

  1. Do konfiguračního souboru Wrangler přidejte následující řádky:

    {
      "migrations": [
        {
          "tag": "<v1>", // Migration identifier. This should be unique for each migration entry
          "new_sqlite_classes": [ // Array of new classes
            "<NewDurableObjectClass>"
          ]
        }
      ]
    }
    [[migrations]]
    tag = "<v1>"
    new_sqlite_classes = [ "<NewDurableObjectClass>" ]

    Migrace Create obsahuje:

    • A tag pro identifikaci migrace.
    • Pole new_sqlite_classes, který obsahuje novou třídu Durable Object.
  2. Ujistěte se, že v kódu Workeru odkazujete na správný název třídy Durable Object.

  3. Nasaďte Worker.

Příklad vytvoření migrace

Chcete-li vytvořit nový binding Durable Object DURABLE_OBJECT_A, by měl váš konfigurační soubor Wrangler vypadat takto:

{
	// Creating a new Durable Object class
	"durable_objects": {
		"bindings": [
			{
				"name": "DURABLE_OBJECT_A",
				"class_name": "DurableObjectAClass"
			}
		]
	},
	// Add the lines below for a Create migration.
	"migrations": [
		{
			"tag": "v1",
			"new_sqlite_classes": [
				"DurableObjectAClass"
			]
		}
	]
}
[[durable_objects.bindings]]
name = "DURABLE_OBJECT_A"
class_name = "DurableObjectAClass"

[[migrations]]
tag = "v1"
new_sqlite_classes = [ "DurableObjectAClass" ]

Vytvoření třídy Durable Object s úložištěm klíč-hodnota

Použijte new_classes u migrace v souboru Wrangler vašeho Workeru, čímž vytvoříte třídu Durable Object s úložištěm typu klíč-hodnota:

{
	"migrations": [
		{
			"tag": "v1", // Should be unique for each entry
			"new_classes": [
				// Array of new classes
				"MyDurableObject",
			],
		},
	],
}
[[migrations]]
tag = "v1"
new_classes = [ "MyDurableObject" ]

Odstranění migrace

Spuštění migrace Delete odstraní všechny objekty Durable Objects přiřazené k odstraněné třídě, včetně veškerých uložených dat.

Chcete-li použít migraci Delete:

  1. Z konfiguračního souboru Wrangler odstraňte binding pro třídu, kterou chcete smazat.

  2. Z kódu Workeru odstraňte odkazy na třídu, kterou chcete smazat.

  3. Do konfiguračního souboru Wrangler přidejte následující řádky.

    {
      "migrations": [
        {
          "tag": "<v2>", // Migration identifier. This should be unique for each migration entry
          "deleted_classes": [ // Array of deleted class names
            "<ClassToDelete>"
          ]
        }
      ]
    }
    [[migrations]]
    tag = "<v2>"
    deleted_classes = [ "<ClassToDelete>" ]

    Migrace Delete obsahuje:

    • A tag pro identifikaci migrace.
    • Pole deleted_classes, který obsahuje odstraněné třídy Durable Object.
  4. Nasaďte Worker.

Příklad odstranění migrace

Chcete-li smazat binding Durable Object DEPRECATED_OBJECT, by měl váš konfigurační soubor Wrangler vypadat takto:

{
	// Remove the binding for the DeprecatedObjectClass DO
	// {"durable_objects": {"bindings": [
	//   {
	//     "name": "DEPRECATED_OBJECT",
	//     "class_name": "DeprecatedObjectClass"
	//   }
	// ]}}
	"migrations": [
		{
			"tag": "v3", // Should be unique for each entry
			"deleted_classes": [ // Array of deleted classes
				"DeprecatedObjectClass"
			]
		}
	]
}
[[migrations]]
tag = "v3"
deleted_classes = [ "DeprecatedObjectClass" ]

Migrace přejmenování

Migrace přejmenování slouží k přesunu uložených Durable Objects mezi dvěma třídami Durable Object v rámci stejného souboru s kódem Workeru.

Chcete-li použít migraci Rename:

  1. Předchozí název třídy nahraďte novým názvem úpravou konfiguračního souboru Wrangler následujícím způsobem:

    {
      "durable_objects": {
        "bindings": [
          {
            "name": "<MY_DURABLE_OBJECT>",
            "class_name": "<UpdatedDurableObject>" // Update the class name to the new class name
          }
        ]
      },
      "migrations": [
        {
          "tag": "<v3>", // Migration identifier. This should be unique for each migration entry
          "renamed_classes": [ // Array of rename directives
            {
              "from": "<OldDurableObject>",
              "to": "<UpdatedDurableObject>"
            }
          ]
        }
      ]
    }
    [[durable_objects.bindings]]
    name = "<MY_DURABLE_OBJECT>"
    class_name = "<UpdatedDurableObject>"
    
    [[migrations]]
    tag = "<v3>"
    
      [[migrations.renamed_classes]]
      from = "<OldDurableObject>"
      to = "<UpdatedDurableObject>"

    Migrace Rename obsahuje:

    • A tag pro identifikaci migrace.
    • renamed_classes pole, které obsahuje objekty s from a to vlastnosti.
    • from vlastnost udává původní název třídy Durable Object.
    • to vlastnost udává nový název třídy Durable Object.
  2. V kódu Workeru uveďte odkaz na nový název třídy Durable Object.

  3. Nasaďte Worker.

Příklad migrace přejmenování

Chcete-li přejmenovat třídu Durable Object, z OldName na UpdatedName, by měl váš konfigurační soubor Wrangler vypadat takto:

{
	"durable_objects": {
		"bindings": [
			{
				"name": "MY_DURABLE_OBJECT",
				// Update the binding to the new class name.
				"class_name": "UpdatedName"
			}
		]
	},
	// Renaming classes
	"migrations": [
		{
			"tag": "v3",
			"renamed_classes": [ // Array of rename directives
				{
					"from": "OldName",
					"to": "UpdatedName"
				}
			]
		}
	]
}
[[durable_objects.bindings]]
name = "MY_DURABLE_OBJECT"
class_name = "UpdatedName"

[[migrations]]
tag = "v3"

  [[migrations.renamed_classes]]
  from = "OldName"
  to = "UpdatedName"

Migrace Transfer

Migrace Transfer slouží k přenosu uložených Durable Objects mezi dvěma třídami Durable Object v různých souborech kódu Workeru.

Pokud chcete přenést uložené Durable Objects mezi dvěma třídami Durable Object ve stejném souboru kódu Worker, použijte Migrace přejmenování místo toho.

Chcete-li použít migraci Transfer:

  1. Konfigurační soubor Wrangler upravte následujícím způsobem:

    {
      "durable_objects": {
        "bindings": [
          {
            "name": "<MY_DURABLE_OBJECT>",
            "class_name": "<DestinationDurableObjectClass>"
          }
        ]
      },
      "migrations": [
        {
          "tag": "<v4>", // Migration identifier. This should be unique for each migration entry
          "transferred_classes": [
            {
              "from": "<SourceDurableObjectClass>",
              "from_script": "<SourceWorkerScript>",
              "to": "<DestinationDurableObjectClass>"
            }
          ]
        }
      ]
    }
    [[durable_objects.bindings]]
    name = "<MY_DURABLE_OBJECT>"
    class_name = "<DestinationDurableObjectClass>"
    
    [[migrations]]
    tag = "<v4>"
    
      [[migrations.transferred_classes]]
      from = "<SourceDurableObjectClass>"
      from_script = "<SourceWorkerScript>"
      to = "<DestinationDurableObjectClass>"

    Migrace Transfer obsahuje:

    • A tag pro identifikaci migrace.
    • transferred_classes pole, které obsahuje objekty s from, from_script, a to vlastnosti.
      • from vlastnost udává název zdrojové třídy Durable Object.
      • from_script vlastnost udává název zdrojového skriptu Workeru.
      • to vlastnost udává název cílové třídy Durable Object.
  2. Ujistěte se, že v kódu Workeru odkazujete na název nové, cílové třídy Durable Object.

  3. Nasaďte Worker.

Příklad migrace Transfer

Uložené Durable Objects můžete přenést z DurableObjectExample na TransferredClass ze skriptu Workeru nazvaného OldWorkerScript. Obsah konfiguračního souboru Wrangler pro váš nový kód Workeru (cílový kód Workeru) by vypadal takto:

{
	// destination worker
	"durable_objects": {
		"bindings": [
			{
				"name": "MY_DURABLE_OBJECT",
				"class_name": "TransferredClass"
			}
		]
	},
	// Transferring class
	"migrations": [
		{
			"tag": "v4",
			"transferred_classes": [
				{
					"from": "DurableObjectExample",
					"from_script": "OldWorkerScript",
					"to": "TransferredClass"
				}
			]
		}
	]
}
[[durable_objects.bindings]]
name = "MY_DURABLE_OBJECT"
class_name = "TransferredClass"

[[migrations]]
tag = "v4"

  [[migrations.transferred_classes]]
  from = "DurableObjectExample"
  from_script = "OldWorkerScript"
  to = "TransferredClass"

Konfigurace migrace Wrangler

Úložiště typu SQLite nelze povolit u existující, již nasazené třídy Durable Object, proto nastavení new_sqlite_classes u pozdějších migrací selže s chybou. Automatická migrace nasazených tříd z úložiště typu klíč-hodnota na úložiště SQLite bude k dispozici později.