Skip to content

Mutating commits in the store

Trym Skaar edited this page Feb 24, 2018 · 1 revision
import ddbes from 'ddbes'

async function* transformCartItemNames() {
  const commitsToChange = ddbes.dynamodb.getAggregateCommits({
    aggregateType: 'Cart'
  })

  for await (const commit of commitsToChange) {
    const events = commit.events.map(event => {
      switch (event.type) {
        case 'ItemAdded': {
          return {...event, name: `${event.name} updated!`}
        }
        default:
          return event
      }
    })
    yield {...commit, events}
  }
}

async function migrateSomeData() {
  const mutator = new ddbes.dynamodb.BatchMutator()
  const legacyUsers = ddbes.dynamodb.getAggregateCommits({aggregateType: 'LegacyUser'})
  await mutator.delete(legacyUsers)
  await mutator.put(transformCartItemNames())
  await mutator.drained
}