Page tree
Skip to end of metadata
Go to start of metadata

Při migraci webů (resp. migraci repository) z verze 1.2.3 na 2.* se typicky setkáváme se dvěma úkony, které bylo dosud nutné řešit manuálním zásahem do repository (ručně upravovat soubory Entity.object):

  1. Přetypování entit obsahů z výchozích (např. Vivo\CMS\UI\Content\File) na custom aplikační třídy (např. Espe\CMS\UI\Content\File)
  2. Mazaní/přejmenování přebytečných properties z entit obsahů, které nejsou ve zmigrovaných modelových třídách definovány a brání (nejen) úspěšné reindexaci

K tomuto účelu vznikl speciální (servisní) vivo modul, který poskytuje 2 skriptlety, které řeší uvedené dva problémy pohodlně z prostředí administrace Viva bez nutnosti upravovat Entity.objecty.

Instalace

Instalace vivo migration packu probíhá přes composer. Soubor composer.json je potřeba rozšířit o záznam v sekci repositories:

Registrace repository pro migration pack
"type": "vcs",
"url": "git@bitbucket.org:lundegaard/migration-pack.git"

a přidat závislost na knihovně lundegaard/migration-pack:

Deklarace závislosti
"lundegaard/migration-pack": "dev-develop"

A pak už stačí modul jen zaregistrovat. Do konfiguračního souboru aplikace je nutné vložit:

Registrace modulu
modules:
    migration-pack:
        namespace: MigrationPack

Po úspěšném nainstalování a registraci modulu by měly ve výběru scriptletů přibýt dva další:

  1. migration/typecast-entity
  2. migration/remove-property

Přetypování entit

Syntaxe scriptletu je následující:

migration/typecast-entity [dry-run] /path/to/root/node <SourceClass>:<TargetClass> [<SourceClass>:<TargetClass> ...]

Argumentem scripletu je:

  • nepovinný parametr, který způsobí, že skript poběží nanečisto (bez commitů do repository)
  • cesta k dokumentu, od kterého bude skript postupovat rekurzivně
  • následuje libovolné množství dvojic názvů tříd, přičemž první z dvojice (zdrojová třída) nemusí v aplikaci vůbec existovat
Příklad použití scriptletu pro přetypování entit
migration/typecast-entity /3m-espe-events/ROOT/events/event Vivo\CMS\Model\Content\File:Espe\CMS\Model\Content\File Vivo\CMS\Model\Content\Fileboard:Espe\CMS\Model\Content\Fileboard

Výše uvedený příklad přetypuje

  • entitu Vivo\CMS\Model\Content\File na Espe\CMS\Model\Content\File
  • entitu Vivo\CMS\Model\Content\Fileboard na Espe\CMS\Model\Content\Fileboard
  • ale jen ty entity, které jsou ve stromě pod dokumentem na cestě /3m-espe-events/ROOT/events/event

 

Mazání/přejmenování properties

Syntaxe scriptletu je následující:

migration/remove-property [dry-run] /path/to/root/node <Class>:<SourcePropertyName>:<TargetPropertyName> <Class>:<PropertyNameToDelete>

Argumentem scripletu je:

  • nepovinný parametr, který způsobí, že skript poběží nanečisto (bez commitů do repository)
  • cesta k dokumentu, od kterého bude skript postupovat rekurzivně
  • následuje libovolné množství dvojic či trojic parametrů
    • pokud jsou parametry 2, jedná se o mázání property
      1. název třídy
      2. název property, která se má smazat
    • pokus jsou parametry 3, jedná se o přejmenování property
      1. název třídy
      2. název property, která se má přejmenovat
      3. nový názv property (po přejmenování)
Příklad použití scriptletu pro mazání/přejmenování entit
migration/remove-property /3m-espe-events/ROOT Espe\CMS\Model\Content\File:tab_name:tabName Vivo\CMS\Model\Content\Fileboard\Media:published

Výše uvedený příklad:

  • přejmenuje property Espe\CMS\Model\Content\File::$tab_name na Espe\CMS\Model\Content\File::$tabName
  • smaže property Vivo\CMS\Model\Content\Fileboard\Media:published
  • ale jen ty entity, které jsou ve stromě pod dokumentem na cestě /3m-espe-events/ROOT


 

 

2 Comments

  1. Já bych teda doporučil  přemístění dokumentu do Space Vivo...