private readMetaData()

in server/src/graphStore.ts [491:544]


	private readMetaData(): void {
		let result: MetaDataResult[] = this.db.prepare('Select * from meta').all();
		if (result === undefined || result.length !== 1) {
			throw new Error('Failed to read meta data record.');
		}
		let metaData: MetaData = JSON.parse(result[0].value);
		if (metaData.compressors !== undefined) {
			this.vertexLabels = new Map();
			this.edgeLabels = new Map();
			this.itemEdgeProperties = new Map();
			for (let decription of metaData.compressors.all) {
				new Decompressor(decription);
			}
			for (let element of Decompressor.all.values()) {
				element.link();
			}
			// Vertex Compressor
			let decompressor = Decompressor.get(metaData.compressors.vertexCompressor);
			if (decompressor === undefined) {
				throw new Error('No vertex decompressor found.');
			}
			let description = decompressor.getPropertyDescription('label');
			if (description === undefined || description.longForm === undefined) {
				throw new Error('No vertex label property description found.');
			}
			for (let item of description.longForm) {
				this.vertexLabels.set(item[1], item[0] as number);
			}
			// Edge Compressor
			decompressor = Decompressor.get(metaData.compressors.edgeCompressor);
			if (decompressor === undefined) {
				throw new Error('No edge decompressor found.');
			}
			description = decompressor.getPropertyDescription('label');
			if (description === undefined || description.longForm === undefined) {
				throw new Error('No edge label property description found.');
			}
			for (let item of description.longForm) {
				this.edgeLabels.set(item[1], item[0] as number);
			}
			// Item edge Compressor
			decompressor = Decompressor.get(metaData.compressors.itemEdgeCompressor);
			if (decompressor === undefined) {
				throw new Error('No item edge decompressor found.');
			}
			description = decompressor.getPropertyDescription('property');
			if (description === undefined || description.longForm === undefined) {
				throw new Error('No item property description found.');
			}
			for (let item of description.longForm) {
				this.itemEdgeProperties.set(item[1], item[0] as number);
			}
		}
	}