Skip to content

Instantly share code, notes, and snippets.

@yoagauthier
yoagauthier / models.js
Last active June 28, 2019 09:12 — forked from jordanell/models.js
Sequelize paranoid delete cascade
const paranoidDeleteCascade = require('../config/paranoidDeleteCascade');
const paranoidBulkDeleteCascade = require('../config/paranoidBulkDeleteCascade');
// Patch the paranoid delete functionality of Sequelize
sequelize.addHook('afterBulkDestroy', paranoidBulkDeleteCascade(db));
sequelize.addHook('afterDestroy', paranoidDeleteCascade(db));
@yoagauthier
yoagauthier / SpreadsheetClient.js
Created May 3, 2019 09:52
Util class to manipulate data from a Google Spreadsheet
const { google } = require('googleapis');
const { NODE_ENV } = require('../params');
class SpreadsheetClient {
constructor(spreadsheetId, keyfile) {
this._spreadsheetId = spreadsheetId;
this._keyfile = keyfile;
this._sheets = google.sheets({ version: 'v4' });
this._jwtClient = new google.auth.JWT(keyfile.client_email, null, keyfile.private_key, [
@yoagauthier
yoagauthier / IfCounts.js
Created January 30, 2019 17:12
Equivalent to IfCounts function in Excel / Spreadsheet
function countIfs(array1, condition1, array2, condition2) {
// const intArray = array1.filter(x => condition1(x));
let inArr1;
let inArr2;
if (array1.length > array2.length) {
inArr1 = array1.slice(0, array2.length);
inArr2 = array2;
} else if (array2.length > array1.length) {
inArr1 = array1;
inArr2 = array2.slice(0, array1.length);