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();
}