Gatsby Plugin Revision

Let’s say you have a big site, or a very sensative site. You deployed your content and then a week or two passes and you need to add content. There’s might be a case where you deleted very important content or changed something very sensitive.

One way to solve this is before working on the content you’ll make a revision. The revision is kind of snapshot that will insure that in case you made a mistake you can bring back the site as it was, deploy it in less then a minute and you’ll be able to work on the content and deliver the new content with the fixes.

Installation

Install the package from:

npm i gatsby-plugin-revisions

In the gatsby-config.js add the plugin to the list of plugins:

module.exports = {
  plugins: [`gatsby-plugin-revisions`]
}

Use the plugin with settings:

module.exports = {
  /* Your site config here */
  plugins: [
    {
      resolve: `gatsby-plugin-revisions`,
      options: {
        eventsAddressBroadcast: 'http://localhost/drupal/gatsby-revisions/event-listener'
      }
    },
  ]
}

eventsAddressBroadcast: When there’s an event which can take a lot of time the plugin will send payload for notifying the client which trigger the event which it can handle it later on:

Example 1:

{
    "event": "revision_creation",
    "status": "failed",
    "revisionId": 133465345,
    "data": "Not enough space"
}

Example 2:

{
  "event": "revision_creation",
  "status": "succeeded",
  "revisionId": 233243123
}

Endpoints

There are a couple of interactions:

Creating a revision

POST http://localhost:8000/revision

Which will return

json { "message": "Revision has created", "revisionId": 1592051189330 }

Get a list of revisions

GET http://localhost:8000/revisions

Which will return

json [ "1592042752916", "1592051189330" ]

Revert to a revision

POST http://localhost:8000/revision-revert/:revision-id

    * :revision-id: The number of the revision.

Which will return

json { "message": "The revision 1592051189330 has been reverted." }