62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import emptyProtector from './empty-protector';
 | |
| 
 | |
| export function checkMapData({
 | |
|   entities: { challenge, block, superBlock },
 | |
|   result: { superBlocks }
 | |
| }) {
 | |
|   if (
 | |
|     !challenge ||
 | |
|     !block ||
 | |
|     !superBlock ||
 | |
|     !superBlocks ||
 | |
|     !superBlocks.length
 | |
|   ) {
 | |
|     throw new Error('entities not found, db may not be properly seeded');
 | |
|   }
 | |
| }
 | |
| // getFirstChallenge(
 | |
| //   map: {
 | |
| //     entities: { challenge: Object, block: Object, superBlock: Object },
 | |
| //     result: [...superBlockDashedName: String]
 | |
| //   }
 | |
| // ) => Challenge|Void
 | |
| export function getFirstChallenge({
 | |
|   entities: { superBlock, block, challenge },
 | |
|   result: { superBlocks }
 | |
| }) {
 | |
|   return challenge[
 | |
|     emptyProtector(block[emptyProtector(superBlock[superBlocks[0]]).blocks[0]])
 | |
|       .challenges[0]
 | |
|   ];
 | |
| }
 | |
| 
 | |
| // let challengeDashedName: String;
 | |
| // createNameIdMap({
 | |
| //  challenge: {
 | |
| //    [...challengeDashedName ]: Challenge
 | |
| // }) => {
 | |
| //   challengeIdToName: {
 | |
| //     [ ...challengeId ]: challengeDashedName
 | |
| //   }
 | |
| //  };
 | |
| export function createNameIdMap({ challenge }) {
 | |
|   return {
 | |
|     challengeIdToName: Object.keys(challenge).reduce((map, challengeName) => {
 | |
|       map[challenge[challengeName].id] = challenge[challengeName].dashedName;
 | |
|       return map;
 | |
|     }, {})
 | |
|   };
 | |
| }
 | |
| // addNameIdMap(
 | |
| //  map: { entities; Object, ...rest }
 | |
| // ) => { ...rest, entities: Object };
 | |
| export function addNameIdMap({ entities, ...rest }) {
 | |
|   return {
 | |
|     ...rest,
 | |
|     entities: {
 | |
|       ...entities,
 | |
|       ...createNameIdMap(entities)
 | |
|     }
 | |
|   };
 | |
| }
 |