Yuken Tezuka 7a31c61dea refactor 3 years ago
..
src 1447c5949e add migration type custom 3 years ago
README.md 7a31c61dea refactor 3 years ago

README.md

Migration to v6 from v5

Warning Migration in this way is applied only to the latest revision. Past revisions are not applied.

Usage

git clone https://github.com/weseek/growi
cd growi/bin/data-migrations/v6

NETWORK=growi_devcontainer_default \
MONGO_URI=mongodb://growi_devcontainer_mongo_1/growi \
docker run --rm \
  --network $NETWORK \
  -v "$(pwd)"/src:/opt \
  -w /opt \
  -e MIGRATION_TYPE=v6 \
  mongo:6.0 \
  /bin/mongosh $MONGO_URI migration.js

Variables

Variable Description Default
NETWORK Network in docker compose of MongoDB server -
MONGO_URI URI that can connect to MongoDB -

Environment variables

Required

Variable Description Default
MIGRATION_TYPE Migrated notation -

The value of MIGRATION_TYPE is one of the following.

  • v6-drawio: Migration for Draw.io notation only( reference)
  • v6-plantuml: Migration for PlantUML notation only( reference)
  • v6-tsv: Migration for table notation by TSV only( reference)
  • v6-csv: Migration for table notation by CSV only( reference)
  • v6-bracketlink: Migration for only page links within GROWI( reference)
  • v6: Migration for all the above notations
  • custom: You can define your own processors and apply them to revision (see "Advanced" below for details)

Optional

Variable Description Default
BATCH_SIZE Number of revisions to be processed at one time(revision) 100
BATCH_INTERVAL Interval after batch processing(ms) 3000

※The BATCH_INTERVAL is for server load control. If you don't mind the load of the MongoDB, there is no problem to reduce it.

Advanced

By creating a function in growi/bin/data-migrations/v6/src/processor.js that replaces a specific regular expression, you can replace all specific strings in the latest revisions for all pages.

The following function replaces the string foo with the string bar.

function customProcessor(body) {
  var fooRegExp = /foo/g; // foo regex
  return body.replace(fooRegExp, 'bar'); // replace to bar
}

By passing custom in the environment variable MIGRATION_TYPE and executing it, you can apply the customProcessor to all the latest revisions.

git clone https://github.com/weseek/growi
cd growi/bin/data-migrations/v6

NETWORK=growi_devcontainer_default \
MONGO_URI=mongodb://growi_devcontainer_mongo_1/growi \
docker run --rm \
  --network $NETWORK \
  -v "$(pwd)"/src:/opt \
  -w /opt \
  -e MIGRATION_TYPE=custom \
  mongo:6.0 \
  /bin/mongosh $MONGO_URI migration.js