Storage modules
This commit is contained in:
parent
dfc7d48fd4
commit
349835bdb7
@ -12,7 +12,7 @@ import Vue from 'vue';
|
||||
import Vuex from 'vuex';
|
||||
import DashboardApp from './DashboardView/Dashboard.vue';
|
||||
import { ConsoleLogger, Logger } from './Logger';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { DataStorage } from './Storage/DataStorage';
|
||||
import { getBuildingPageAttributes, isBuildingPage } from './Page/PageDetector';
|
||||
import { ExecutionStorage } from './Storage/ExecutionStorage';
|
||||
import { VillageState } from './VillageState';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { ConsoleLogger, Logger } from '../Logger';
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from '../Storage/DataStorage';
|
||||
import { Args } from './Args';
|
||||
|
||||
const NAMESPACE = 'actions.v1';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from '../Storage/DataStorage';
|
||||
import { Task, TaskList, TaskProvider, uniqTaskId } from './TaskProvider';
|
||||
|
||||
const QUEUE_NAME = 'queue';
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Logger, NullLogger } from './Logger';
|
||||
import { Logger, NullLogger } from '../Logger';
|
||||
import { createMapper, ObjectMapperOptions } from './Mapper';
|
||||
|
||||
const NAMESPACE = 'travian:v1';
|
||||
|
||||
@ -8,40 +9,6 @@ function join(...parts: Array<string>) {
|
||||
return parts.map(p => p.replace(/[:]+$/g, '').replace(/^[:]+/g, '')).join(':');
|
||||
}
|
||||
|
||||
interface EmptyObjectFactory<T> {
|
||||
(): T;
|
||||
}
|
||||
|
||||
interface ObjectMapper<T> {
|
||||
(item: any): T;
|
||||
}
|
||||
|
||||
interface ObjectMapperOptions<T> {
|
||||
factory?: EmptyObjectFactory<T>;
|
||||
mapper?: ObjectMapper<T>;
|
||||
}
|
||||
|
||||
function createMapper<T>(options: ObjectMapperOptions<T>): ObjectMapper<T> {
|
||||
const { mapper, factory } = options;
|
||||
|
||||
if (mapper) {
|
||||
return mapper;
|
||||
}
|
||||
|
||||
if (factory) {
|
||||
return plain => {
|
||||
let item = factory();
|
||||
if (typeof plain === 'object' && typeof item === 'object') {
|
||||
return Object.assign(item, plain) as T;
|
||||
} else {
|
||||
return item;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error('Factory or mapper must be specified');
|
||||
}
|
||||
|
||||
export class DataStorage {
|
||||
private readonly logger: Logger;
|
||||
private readonly name: string;
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { ExecutionSettings } from '../Executor';
|
||||
|
||||
const NAMESPACE = 'execution.v1';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { HeroAttributes } from '../Core/Hero';
|
||||
|
||||
const VILLAGE_ID_KEY = 'village_id';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { LogStorageInterface, StorageLogRecord } from '../Logger';
|
||||
|
||||
const RECORD_LIST_KEY = 'records';
|
||||
|
33
src/Storage/Mapper.ts
Normal file
33
src/Storage/Mapper.ts
Normal file
@ -0,0 +1,33 @@
|
||||
interface EmptyObjectFactory<T> {
|
||||
(): T;
|
||||
}
|
||||
|
||||
interface ObjectMapper<T> {
|
||||
(item: any): T;
|
||||
}
|
||||
|
||||
export interface ObjectMapperOptions<T> {
|
||||
factory?: EmptyObjectFactory<T>;
|
||||
mapper?: ObjectMapper<T>;
|
||||
}
|
||||
|
||||
export function createMapper<T>(options: ObjectMapperOptions<T>): ObjectMapper<T> {
|
||||
const { mapper, factory } = options;
|
||||
|
||||
if (mapper) {
|
||||
return mapper;
|
||||
}
|
||||
|
||||
if (factory) {
|
||||
return plain => {
|
||||
let item = factory();
|
||||
if (typeof plain === 'object' && typeof item === 'object') {
|
||||
return Object.assign(item, plain) as T;
|
||||
} else {
|
||||
return item;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error('Factory or mapper must be specified');
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { ResourceTransferReport } from '../ResourceTransfer';
|
||||
|
||||
const NAMESPACE = 'resource_transfer.v1';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { ActionStatistics, StatisticsStorageInterface } from '../Statistics';
|
||||
|
||||
const ACTION_STATISTICS_KEY = 'actions';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { LogStorage } from './LogStorage';
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { StatisticsStorage } from './StatisticsStorage';
|
||||
|
||||
export class StorageContainer {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DataStorage } from '../DataStorage';
|
||||
import { DataStorage } from './DataStorage';
|
||||
import { Resources, ResourcesInterface } from '../Core/Resources';
|
||||
import { ResourceStorage } from '../Core/ResourceStorage';
|
||||
import { IncomingMerchant, MerchantsInfo } from '../Core/Market';
|
||||
|
Loading…
Reference in New Issue
Block a user