Yuken Tezuka 7a31c61dea refactor 3 năm trước cách đây
..
src 1447c5949e add migration type custom 3 năm trước cách đây
README.md 7a31c61dea refactor 3 năm trước cách đây

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