public load()

in server/src/graphStore.ts [394:489]


	public load(file: string, transformerFactory: (workspaceRoot: string) => UriTransformer): Promise<void> {
		this.db = new Sqlite(file, { readonly: true });
		this.readMetaData();
		this.readSource();
		this.allDocumentsStmt = this.db.prepare('Select id, uri, documentHash From documents');
		this.getDocumentContentStmt = this.db.prepare('Select content From contents Where documentHash = ?');
		this.findDocumentStmt = this.db.prepare('Select id From documents Where uri = ?');
		/* eslint-disable indent */
		this.findRangeStmt = this.db.prepare([
			'Select r.id, r.belongsTo, r.startLine, r.startCharacter, r.endline, r.endCharacter From ranges r',
			'Inner Join documents d On r.belongsTo = d.id',
			'where',
				'd.uri = $uri and (',
					'(r.startLine < $line and $line < r.endline) or',
					'(r.startLine = $line and r.startCharacter <= $character and $line < r.endline) or',
					'(r.startLine < $line and r.endLine = $line and $character <= r.endCharacter) or',
					'(r.startLine = $line and r.endLine = $line and r.startCharacter <= $character and $character <= r.endCharacter)',
			  	')'
		].join(' '));
		/* eslint-enable indent */
		const nextLabel = this.edgeLabels !== undefined ? this.edgeLabels.get(EdgeLabels.next)! : EdgeLabels.next;
		const monikerEdgeLabel = this.edgeLabels !== undefined ? this.edgeLabels.get(EdgeLabels.moniker)! : EdgeLabels.moniker;
		const monikerAttachLabel = this.edgeLabels !== undefined ? this.edgeLabels.get(EdgeLabels.attach)! : EdgeLabels.attach;

		this.findResultStmt = this.db.prepare([
			'Select v.id, v.label, v.value From vertices v',
			'Inner Join edges e On e.inV = v.id',
			'Where e.outV = $source and e.label = $label'
		].join(' '));

		this.findMonikerStmt = this.db.prepare([
			'Select v.id, v.label, v.value From vertices v',
			'Inner Join edges e On e.inV = v.id',
			`Where e.outV = $source and e.label = ${monikerEdgeLabel}`
		].join(' '));
		this.findMatchingMonikersStmt = this.db.prepare([
			'Select v.id, v.label, v.value From vertices v',
			'Inner Join monikers m on v.id = m.id',
			'Where m.identifier = $identifier and m.scheme = $scheme and m.id != $exclude'
		].join(' '));
		this.findAttachedMonikersStmt = this.db.prepare([
			'Select v.id, v.label, v.value from vertices v',
			'Inner Join edges e On e.outV = v.id',
			`Where e.inV = $source and e.label = ${monikerAttachLabel}`
		].join(' '));
		this.findNextMonikerStmt = this.db.prepare([
			'Select e.inV From edges e',
			`Where e.outV = $source and e.label = ${monikerAttachLabel}`
		].join(' '));
		this.findVertexIdForMonikerStmt = this.db.prepare([
			'Select v.id from vertices v',
			'INNER Join edges e On v.id = e.outV',
			`Where e.label = ${monikerEdgeLabel} and e.inV = $id`
		].join(' '));

		this.findNextVertexStmt = this.db.prepare([
			'Select e.inV From edges e',
			`Where e.outV = $source and e.label = ${nextLabel}`
		].join(' '));
		this.findPreviousVertexStmt = this.db.prepare([
			'Select e.outV From edges e',
			`Where e.inV = $source and e.label = ${nextLabel}`
		].join(' '));

		this.findResultForDocumentStmt = this.db.prepare([
			'Select v.id, v.label, v.value from vertices v',
			'Inner Join edges e On e.inV = v.id',
			'Inner Join documents d On d.id = e.outV',
			'Where d.uri = $uri and e.label = $label'
		].join(' '));

		this.findRangeFromResult = this.db.prepare([
			'Select r.id, r.startLine, r.startCharacter, r.endLine, r.endCharacter, d.uri from ranges r',
			'Inner Join items i On i.inV = r.id',
			'Inner Join documents d On r.belongsTo = d.id',
			'Where i.outV = $id'
		].join(' '));
		this.findRangeFromReferenceResult = this.db.prepare([
			'Select r.id, r.startLine, r.startCharacter, r.endLine, r.endCharacter, i.property, d.uri from ranges r',
			'Inner Join items i On i.inV = r.id',
			'Inner Join documents d On r.belongsTo = d.id',
			'Where i.outV = $id and (i.property in (1, 2, 3))'
		].join(' '));
		this.findResultFromReferenceResult = this.db.prepare([
			'Select v.id, v.label, v.value from vertices v',
			'Inner Join items i On i.inV = v.id',
			'Where i.outV = $id and i.property = 4'
		].join(' '));
		this.findCascadesFromReferenceResult = this.db.prepare([
			'Select v.id, v.label, v.value from vertices v',
			'Inner Join items i On i.inV = v.id',
			'Where i.outV = $id and i.property = 5'
		].join(' '));
		this.initialize(transformerFactory);
		return Promise.resolve();
	}