Yuki Takei 96e1b97a81 refactor 1 year ago
..
src 96e1b97a81 refactor 1 year ago
README.md 4626e8b99f update README 1 year ago
tsconfig.json 3f423a6c79 add tsconfig.json 1 year ago

README.md

Migration of page body

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

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_MODULE=v60x \
  mongo:6.0 \
  /bin/mongosh $MONGO_URI index.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_MODULE Specify migration module -

The value of MIGRATION_MODULE is one of the following.

  • v60x/drawio: Migration for Draw.io notation only( reference)
  • v60x/plantuml: Migration for PlantUML notation only( reference)
  • v60x/tsv: Migration for table notation by TSV only( reference)
  • v60x/csv: Migration for table notation by CSV only( reference)
  • v60x/bracketlink: Migration for only page links within GROWI( reference)
  • v60x or v60x/index: Migration for all notations in v6.0.x series
  • v61x/mdcont: Migration for mdcont notation only(reference)
  • v61x or v61x/index: Migration for all notations in v6.1.x series
  • v70x/bootstrap5: Migration for Bootstrap4 to Bootstrap5
  • v70x or v70x/index: Migration for all notations in v7.0.x series
  • 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/src/migrations/custom.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.

module.exports = [
  (body) => {
  var fooRegExp = /foo/g; // foo regex
  return body.replace(fooRegExp, 'bar'); // replace to bar
  },
];

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

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

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_MODULE=custom \
  mongo:6.0 \
  /bin/mongosh $MONGO_URI index.js