private handleDocumentEnd()

in sqlite/src/blobStore.ts [930:981]


	private handleDocumentEnd(event: DocumentEvent) {
		const documentData = this.getEnsureDocumentData(event.data);
		const contains = this.containsDatas.get(event.data);
		if (contains !== undefined) {
			for (let id of contains) {
				const range = assertDefined(this.rangeDatas.get(id));
				documentData.addRangeData(id, range);
			}
		}
		let data = documentData.finalize();
		if (this.knownHashes.has(data.hash)) {
			this.versionInserter.do(this.version, data.hash);
		} else {
			this.blobInserter.do(data.hash, BlobFormat.utf8Json,  Buffer.from(data.blob, 'utf8'));
			this.documentInserter.do(data.hash, documentData.uri);
			this.versionInserter.do(this.version, data.hash);
			if (data.declarations) {
				for (let declaration of data.declarations) {
					for (let range in declaration.ranges) {
						this.declarationInserter.do(declaration.scheme, declaration.indentifier, data.hash, range[0], range[1], range[2], range[3]);
					}
				}
			}
			if (data.definitions) {
				for (let definition of data.definitions) {
					for (let range of definition.ranges) {
						this.definitionInserter.do(definition.scheme, definition.indentifier, data.hash, range[0], range[1], range[2], range[3]);
					}
				}
			}
			if (data.references) {
				for (let reference of data.references) {
					if (reference.declarations) {
						for (let range of reference.declarations) {
							this.referneceInserter.do(reference.scheme, reference.indentifier, data.hash, 0, range[0], range[1], range[2], range[3]);
						}
					}
					if (reference.definitions) {
						for (let range of reference.definitions) {
							this.referneceInserter.do(reference.scheme, reference.indentifier, data.hash, 1, range[0], range[1], range[2], range[3]);
						}
					}
					if (reference.references) {
						for (let range of reference.references) {
							this.referneceInserter.do(reference.scheme, reference.indentifier, data.hash, 2, range[0], range[1], range[2], range[3]);
						}
					}
				}
			}
		}
		this.documentDatas.set(event.id, null);
	}