public load()

in server/src/blobStore.ts [136:183]


	public load(file: string, transformerFactory: (workspaceRoot: string) => UriTransformer): Promise<void> {
		this.db = new Sqlite(file, { readonly: true });
		this.readMetaData();
		/* eslint-disable indent */
		this.allDocumentsStmt = this.db.prepare([
			'Select d.documentHash, d.uri From documents d',
				'Inner Join versions v On v.hash = d.documentHash',
				'Where v.version = ?'
		].join(' '));
		this.findDocumentStmt = this.db.prepare([
			'Select d.documentHash From documents d',
				'Inner Join versions v On v.hash = d.documentHash',
				'Where v.version = $version and d.uri = $uri'
		].join(' '));
		this.findBlobStmt = this.db.prepare('Select content From blobs Where hash = ?');
		this.findDeclsStmt = this.db.prepare([
			'Select doc.uri, d.startLine, d.startCharacter, d.endLine, d.endCharacter From decls d',
				'Inner Join versions v On d.documentHash = v.hash',
				'Inner Join documents doc On d.documentHash = doc.documentHash',
				'Where v.version = $version and d.scheme = $scheme and d.identifier = $identifier'
		].join(' '));
		this.findDefsStmt = this.db.prepare([
			'Select doc.uri, d.startLine, d.startCharacter, d.endLine, d.endCharacter From defs d',
				'Inner Join versions v On d.documentHash = v.hash',
				'Inner Join documents doc On d.documentHash = doc.documentHash',
				'Where v.version = $version and d.scheme = $scheme and d.identifier = $identifier'
		].join(' '));
		this.findRefsStmt = this.db.prepare([
			'Select doc.uri, r.kind, r.startLine, r.startCharacter, r.endLine, r.endCharacter From refs r',
				'Inner Join versions v On r.documentHash = v.hash',
				'Inner Join documents doc On r.documentHash = doc.documentHash',
				'Where v.version = $version and r.scheme = $scheme and r.identifier = $identifier'
		].join(' '));
		this.findHoverStmt = this.db.prepare([
			'Select b.content From blobs b',
				'Inner Join versions v On b.hash = v.hash',
				'Inner Join hovers h On h.hoverHash = b.hash',
				'Where v.version = $version and h.scheme = $scheme and h.identifier = $identifier'

		].join(' '));
		/* eslint-enable indent */
		this.version = this.db.prepare('Select * from versionTags Order by dateTime desc').get().tag;
		if (typeof this.version !== 'string') {
			throw new Error('Version tag must be a string');
		}
		this.initialize(transformerFactory);
		return Promise.resolve();
	}