Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 4x 4x 4x 4x 4x 4x 4x 4x 1x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 2x 4x 2x | /**
* @module Engine.Commands.Tasks
* Load a database file
*/
import { DatabaseSchema } from '@models';
import * as fs from 'fs';
import { List, Map } from 'immutable';
import * as path from 'path';
declare var __basedir;
const loadDatabase = <V>(databaseName: string, modelHydrater: (item: any, additionnalData?: any) => any, additionnalData?: any): Map<string, V> | List<V> => {
const database = path.resolve(__basedir, process.env.SERVER_DATA, `${databaseName}.json`);
console.log(`loading database ${database}`);
const databaseExist = fs.existsSync(database);
if (!databaseExist) {
return List([]);
}
const data: DatabaseSchema = JSON.parse(fs.readFileSync(database, { encoding: 'utf8' }));
let percentOld = -1;
if (data.format === 'array') {
const dataArray = (data.data as any[]).map((item, index, array) => {
const percent = Math.floor(((index + 1) / array.length) * 100);
Eif (percent !== percentOld) {
console.log(`loading... ${percent}%`);
percentOld = percent;
}
return modelHydrater(item, additionnalData);
});
return List(dataArray);
}
if (data.format === 'mapOfArray') {
const mapOfArray = {};
Object.keys(data.data).forEach((key: string) => {
const current = data.data[key];
mapOfArray[key] = List((current as any[]).map((item, index, array) => {
const percent = Math.floor(((index + 1) / array.length) * 100);
Eif (percent !== percentOld) {
console.log(`loading... ${percent}%`);
percentOld = percent;
}
return modelHydrater(item, additionnalData);
}));
});
return Map(mapOfArray);
}
const map = {};
Object.keys(data.data).forEach((key: string, index, array) => {
const percent = Math.floor(((index + 1) / array.length) * 100);
Eif (percent !== percentOld) {
percentOld = percent;
}
map[key] = modelHydrater(data.data[key], additionnalData);
});
return Map(map);
};
export const loadDatabaseMap = <V>(databaseName: string, modelHydrater: (item: any, additionnalData?: any) => any, additionnalData?: any): Map<string, V> =>
loadDatabase(databaseName, modelHydrater, additionnalData) as Map<string, V>;
export const loadDatabaseList = <V>(databaseName: string, modelHydrater: (item: any, additionnalData?: any) => any, additionnalData?: any): List<V> =>
loadDatabase(databaseName, modelHydrater, additionnalData) as List<V>;
|