Skip to content

Instantly share code, notes, and snippets.

View Avi-E-Koenig's full-sized avatar
🎯
Focusing

Avi E. Koenig Avi-E-Koenig

🎯
Focusing
View GitHub Profile
@Avi-E-Koenig
Avi-E-Koenig / durrp.js
Created November 1, 2021 20:32
Add or create document in nested array mongoose
const Cart = require('../models/cart.model')
// returns ObjectId or null
const { parseObjectId } = require('../utils/validateObjectId')
async function addOrCreateNestedItem(newItem) {
try {
const cart = await Cart.findOne(
{
_id: '618018504bb0eb2bdf6f2955',
})
@Avi-E-Koenig
Avi-E-Koenig / snippet.mysqljs.js
Last active November 14, 2021 14:59
sample sql js snippet
// server.js
process
.on('unhandledRejection', (reason, p) => {
Logger.error('Unhandled Rejection at Promise', { reason, p });
})
.on('uncaughtException', (err) => {
Logger.error('Uncaught Exception thrown', err);
process.exit(1);
});
@Avi-E-Koenig
Avi-E-Koenig / dynamicPoolCreator.js
Created November 22, 2021 14:16
used in a project where every user had a seperate DB....
const mysql = require('mysql2/promise');
const Logger = require('./SqlLogger.service');
const dbPool = require('./authDb.service')
const _DB_POOL_LIST = {}
async function _createPool({ db_id, db_host, db_name, db_user, db_password }) {
try {
let pool = _DB_POOL_LIST[db_id]
@Avi-E-Koenig
Avi-E-Koenig / sqlLogger.js
Created November 22, 2021 14:18
log to mysql
// the logger to sql class....based on winston-mysql
/**
* This is a MySQL transport module for winston.
* https://github.com/winstonjs/winston
* I made some customizations
*/
const Transport = require('winston-transport');
const MySql = require('mysql2');
@Avi-E-Koenig
Avi-E-Koenig / Joidemo.js
Created November 30, 2021 23:35
Joi demo
const Joi = require('joi');
const Logger = require('../services/logger.service');
const mysqlEscapeStrings = (value, helper) => {
const validMysqlChars = /[0-9,a-z,A-Z$_]/
if (value.match(validMysqlChars)) {
return value;
}
return helper.message(`${value} contains illegal characters`)
@Avi-E-Koenig
Avi-E-Koenig / mappedUserGen.js
Created December 9, 2021 11:41
quick user db as mapped key->val collection
const arrayMapper = (array, uniqueID) => array.reduce((acc, obj, index) => {
if (!obj?.[uniqueID]) {
console.error("🚀 ~ file: doodle.js ~ line 6 ~ arrayMapper ~ ", { obj, uniqueID, index })
throw new Error('uniqueId no found')
}
acc[obj[uniqueID]] = obj
return acc;
}, {})
function uuidv4() {
@Avi-E-Koenig
Avi-E-Koenig / concept.js
Created January 7, 2022 09:16
basic all purpose error handling wrapper
const express = require('express')
const app = express()
const port = 3000
const catchErrors = (requestHandler) => {
return async (req, res, next) => {
try {
throw 'oops'
return await requestHandler(req, res, next);
} catch (error) {
@Avi-E-Koenig
Avi-E-Koenig / getHebrewEventList.js
Created January 15, 2022 14:15
Get hebrew holidays list from API www.hebcal.com
const main = async () => {
try {
const resultSet = fetchYearRange(2022, 2052)
console.log("🚀 ~ file: main.js ~ line 24 ~ merged ~ resultSet", JSON.stringify(resultSet))
// copy and do stuff.
console.log("🚀 ~ file: main.js ~ line 7 ~ main ~ resultSet", resultSet)
// save this to file if you're less lazy then me :)
/**
* Takes a string input
* @param {String} str
* @returns {String} The first not repeated character or empty string
*/
const firstNonRepeatingLetter = (str) => {
function isUnique(char) {
let charCount = 0;
for (let i = 0; i < str.length; i++) {
@Avi-E-Koenig
Avi-E-Koenig / doodle4231.js
Created March 17, 2022 10:54
a basic reducer doodle
const baseArr = [[1, 2], [{ foo: 'bar' }]]
const reducer1 = (keepRefs) => (acc, val, i) => {
if (keepRefs) {
acc[i] = val
return acc
}
try {
acc[i] = JSON.parse(JSON.stringify(val))