rabobank-csv-converter

0.0.2 • Public • Published

CSV Transaction Converter for rabobank-csv-parser (Rabobank)

Standard - JavaScript Style Guide

After coding rabobank-csv-parser to parse my bank's CSV transaction files, I was left with a situation where the column named didn't match up with my Mongo database schema. So I built this module to convert a row from rabobank-csv-parser to a row which I can add to Mongo.

In addition to converting the row into another row structure it also add a _hash key which is the SHA256 hash for the row. I am using this hash to avoid inserting a mutation multiple times.

The module is designed to be piped to from rabobank-csv-parser.

Install

npm i rabobank-csv-converter

Usage

Example code

I am using csv-streamify to pre-parse the CSV file.

const fs = require('fs')
const CSVStreamify = require('csv-streamify')
const RaboCSVParser = require('rabobank-csv-parser')
const RaboConverter = require('rabobank-csv-converter')

const csvParser = CSVStreamify()
const raboParser = new RaboCSVParser()
const raboConverter = new RaboConverter({
  bank: 'rabobank', // corresponds to the _id of the Bank documents
  account: 'NL08RABO2952747327', // corresponds to the _id of the Account documents, used if the row doesn't specify one
  currency: 'EUR' // sets a default currency, used if the row doesn't specify one
})

// A `data` event is emitted for each row
raboConverter.on('data', function (row) {
  // `data` is a Buffer, so we first convert it to JSON
  row = JSON.parse(row.toString())

  // Do what you want with it - displaying it, for example
  console.log(row)
})

// Pipe a file stream through csv-streamify, rabobank-csv-parser and then this module
fs.createReadStream('transactions.txt').pipe(csvParser).pipe(raboParser).pipe(raboConverter)

Example output

The data in this example output has been faked (obviously). The ouput is a single row (or one data event).

Depending on the keys in the original row there may be more or fewer keys.

{
  "_hash": "3e012db6535b2826618b5715f693d057752aaeba923bb9a9a5d67b25d4af0412",
  "_bank": "rabobank",
  "_account": "NL08RABO2952747327",
  "type": "debit",
  "currency": "EUR",
  "amount": 2.6,
  "transaction_date": "2015-12-15T00:00:00.000Z",
  "description": "Afschrijving",
  "interest_date": "2015-12-15T00:00:00.000Z",
  "code": "ba"
}

Changelog

  • v0.0.2 (28-03-2017)
    • Trim individual description fields as well
  • v0.0.1 (20-03-2017)
    • First published

Standard - JavaScript Style Guide

License

Copyright 2017 Michiel van der Velde.

This software is licensed under the MIT License.

/rabobank-csv-converter/

    Package Sidebar

    Install

    npm i rabobank-csv-converter

    Weekly Downloads

    0

    Version

    0.0.2

    License

    MIT

    Last publish

    Collaborators

    • michielvdvelde