Created
October 16, 2018 06:11
-
-
Save tarasowski/b98309d00622afacb8581a260cf16b90 to your computer and use it in GitHub Desktop.
Example for refactoring
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('') | |
| const generateLetterSequence = (start, end, alphabet) => { | |
| const positionStart = alphabet.indexOf(start) | |
| const positionEnd = alphabet.indexOf(end) + 1 | |
| return alphabet.slice(positionStart, positionEnd) | |
| } | |
| const generateNumberSequence = (start, end) => { | |
| const numberArray = [] | |
| for (let i = start; i < end + 1; ++i) { | |
| numberArray.push(i) | |
| } | |
| return numberArray | |
| } | |
| const generateSequenceOfLettersAndNumbers = (positions, numbers) => { | |
| return positions.map(letter => { | |
| const newArray = [] | |
| numbers.forEach(number => { | |
| newArray.push(`${letter}-${number}`) | |
| }) | |
| return newArray | |
| }) | |
| } | |
| const flat = (arr) => { | |
| const newArray = [] | |
| arr.forEach(element => { | |
| element.forEach(el => { | |
| newArray.push(el) | |
| }) | |
| }) | |
| return newArray | |
| } | |
| const joinWarehouseAndShelfs = (warehouse, shelfs) => { | |
| return warehouse.map(element => { | |
| const newArray = [] | |
| shelfs.forEach(el => { | |
| newArray.push(`${element}-${el}`) | |
| }) | |
| return newArray | |
| }) | |
| } | |
| const addSortNumberToArray = (positions, sortNumber, sortNumberIncrement) => { | |
| const arrayWithSortNumber = positions.map((element, index, array) => { | |
| return { [element]: sortNumber + (index * sortNumberIncrement) } | |
| }) | |
| return arrayWithSortNumber | |
| } | |
| module.exports = async (id, params, putItem) => { | |
| const { locationId, sortNumber, sortNumberIncrement, warehouseStart, warehouseEnd, shelfNumberStart, shelfNumberEnd, shelfRowStart, shelfRowEnd, shelfPartStart, shelfPartEnd } = params | |
| const warehousePosition = generateLetterSequence(warehouseStart, warehouseEnd, alphabetArray) | |
| const shelfRows = generateLetterSequence(shelfRowStart, shelfRowEnd, alphabetArray) | |
| const shelfNumbers = generateNumberSequence(shelfNumberStart, shelfNumberEnd) | |
| const shelfParts = generateNumberSequence(shelfPartStart, shelfPartEnd) | |
| const warehouseAndShelfs = generateSequenceOfLettersAndNumbers(warehousePosition, shelfNumbers) | |
| const shelfRowsAndParts = generateSequenceOfLettersAndNumbers(shelfRows, shelfParts) | |
| const warehouseAndShelfsFlat = flat(warehouseAndShelfs) | |
| const shelfRowsAndPartsFlat = flat(shelfRowsAndParts) | |
| const warehouseAndShelfPositions = joinWarehouseAndShelfs(warehouseAndShelfsFlat, shelfRowsAndPartsFlat) | |
| const warehouseAndShelfPositionsFlat = flat(warehouseAndShelfPositions) | |
| const warehousePlan = addSortNumberToArray(warehouseAndShelfPositionsFlat, sortNumber, sortNumberIncrement) | |
| const response = await putItem(id, locationId, warehousePlan) | |
| return { | |
| id, | |
| locationId, | |
| storageBins: warehousePlan | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment