datamodel
Version:
Relational algebra compliant in-memory tabular data store
49 lines (39 loc) • 1.27 kB
JavaScript
import Categorical from './categorical';
import Temporal from './temporal';
import Binned from './binned';
import Continuous from './continuous';
import { DimensionSubtype, MeasureSubtype } from '../enums';
import ID from './id';
class FieldTypeRegistry {
constructor() {
this._fieldType = new Map();
}
registerFieldType(subtype, dimension) {
this._fieldType.set(subtype, dimension);
return this;
}
has(type) {
return this._fieldType.has(type);
}
get(type) {
return this._fieldType.get(type);
}
}
const registerDefaultFields = (store) => {
store
.registerFieldType(DimensionSubtype.CATEGORICAL, Categorical)
.registerFieldType(DimensionSubtype.ID, ID)
.registerFieldType(DimensionSubtype.TEMPORAL, Temporal)
.registerFieldType(DimensionSubtype.BINNED, Binned)
.registerFieldType(MeasureSubtype.CONTINUOUS, Continuous);
};
const fieldRegistry = (function () {
let store = null;
function getStore () {
store = new FieldTypeRegistry();
registerDefaultFields(store);
return store;
}
return store || getStore();
}());
export default fieldRegistry;