Skip to content

Commit 302091f

Browse files
authored
Added version to db config (#2029)
1 parent 9f240c8 commit 302091f

File tree

8 files changed

+26
-3
lines changed

8 files changed

+26
-3
lines changed

extensions/ql-vscode/databases-schema.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
"$schema": {
55
"type": "string"
66
},
7+
"version": {
8+
"type": "integer"
9+
},
710
"databases": {
811
"type": "object",
912
"properties": {
@@ -119,6 +122,6 @@
119122
]
120123
}
121124
},
122-
"required": ["databases"],
125+
"required": ["databases", "version"],
123126
"additionalProperties": false
124127
}

extensions/ql-vscode/src/databases/config/db-config-store.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
renameLocalList,
1515
renameRemoteList,
1616
SelectedDbItem,
17+
DB_CONFIG_VERSION,
1718
} from "./db-config";
1819
import * as chokidar from "chokidar";
1920
import { DisposableObject, DisposeHandler } from "../../pure/disposable-object";
@@ -459,6 +460,7 @@ export class DbConfigStore extends DisposableObject {
459460

460461
private createEmptyConfig(): DbConfig {
461462
return {
463+
version: DB_CONFIG_VERSION,
462464
databases: {
463465
variantAnalysis: {
464466
repositoryLists: [],

extensions/ql-vscode/src/databases/config/db-config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
// Contains models for the data we want to store in the database config
1+
// Contains models and consts for the data we want to store in the database config.
2+
// Changes to these models should be done carefully and account for backwards compatibility of data.
3+
4+
export const DB_CONFIG_VERSION = 1;
25

36
export interface DbConfig {
7+
version: number;
48
databases: DbConfigDatabases;
59
selected?: SelectedDbItem;
610
}
@@ -89,6 +93,7 @@ export interface LocalDatabase {
8993

9094
export function cloneDbConfig(config: DbConfig): DbConfig {
9195
return {
96+
version: config.version,
9297
databases: {
9398
variantAnalysis: {
9499
repositoryLists: config.databases.variantAnalysis.repositoryLists.map(

extensions/ql-vscode/test/factories/db-config-factories.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
LocalList,
66
RemoteRepositoryList,
77
SelectedDbItem,
8+
DB_CONFIG_VERSION,
89
} from "../../src/databases/config/db-config";
910

1011
export function createDbConfig({
@@ -23,6 +24,7 @@ export function createDbConfig({
2324
selected?: SelectedDbItem;
2425
} = {}): DbConfig {
2526
return {
27+
version: DB_CONFIG_VERSION,
2628
databases: {
2729
variantAnalysis: {
2830
repositoryLists: remoteLists,

extensions/ql-vscode/test/unit-tests/databases/config/data/databases.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"version": 1,
23
"databases": {
34
"variantAnalysis": {
45
"repositoryLists": [

extensions/ql-vscode/test/unit-tests/databases/config/data/without-selected/databases.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"version": 1,
23
"databases": {
34
"variantAnalysis": {
45
"repositoryLists": [],

extensions/ql-vscode/test/unit-tests/databases/config/db-config-validator.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { join } from "path";
2-
import { DbConfig } from "../../../../src/databases/config/db-config";
2+
import {
3+
DbConfig,
4+
DB_CONFIG_VERSION,
5+
} from "../../../../src/databases/config/db-config";
36
import { DbConfigValidator } from "../../../../src/databases/config/db-config-validator";
47
import { DbConfigValidationErrorKind } from "../../../../src/databases/db-validation-errors";
58
import {
@@ -15,6 +18,7 @@ describe("db config validation", () => {
1518
// We're intentionally bypassing the type check because we'd
1619
// like to make sure validation errors are highlighted.
1720
const dbConfig = {
21+
version: DB_CONFIG_VERSION,
1822
databases: {
1923
variantAnalysis: {
2024
repositoryLists: [

extensions/ql-vscode/test/unit-tests/databases/db-manager.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,7 @@ describe("db manager", () => {
413413
const dbConfigFileContents = await readDbConfigDirectly();
414414

415415
expect(dbConfigFileContents).toEqual({
416+
version: dbConfig.version,
416417
databases: {
417418
variantAnalysis: {
418419
repositoryLists: [],
@@ -434,6 +435,7 @@ describe("db manager", () => {
434435
const dbConfigFileContents = await readDbConfigDirectly();
435436

436437
expect(dbConfigFileContents).toEqual({
438+
version: dbConfig.version,
437439
databases: {
438440
variantAnalysis: {
439441
repositoryLists: [remoteList],
@@ -459,6 +461,7 @@ describe("db manager", () => {
459461
const dbConfigFileContents = await readDbConfigDirectly();
460462

461463
expect(dbConfigFileContents).toEqual({
464+
version: dbConfig.version,
462465
databases: {
463466
variantAnalysis: {
464467
repositoryLists: [remoteList],
@@ -484,6 +487,7 @@ describe("db manager", () => {
484487
const dbConfigFileContents = await readDbConfigDirectly();
485488

486489
expect(dbConfigFileContents).toEqual({
490+
version: dbConfig.version,
487491
databases: {
488492
variantAnalysis: {
489493
repositoryLists: [remoteList],
@@ -513,6 +517,7 @@ describe("db manager", () => {
513517
const dbConfigFileContents = await readDbConfigDirectly();
514518

515519
expect(dbConfigFileContents).toEqual({
520+
version: dbConfig.version,
516521
databases: {
517522
variantAnalysis: {
518523
repositoryLists: [remoteList],

0 commit comments

Comments
 (0)