Added version to db config (#2029)

This commit is contained in:
Charis Kyriakou
2023-02-02 11:50:16 +00:00
committed by GitHub
parent 9f240c8500
commit 302091f2c5
8 changed files with 26 additions and 3 deletions

View File

@@ -4,6 +4,9 @@
"$schema": { "$schema": {
"type": "string" "type": "string"
}, },
"version": {
"type": "integer"
},
"databases": { "databases": {
"type": "object", "type": "object",
"properties": { "properties": {
@@ -119,6 +122,6 @@
] ]
} }
}, },
"required": ["databases"], "required": ["databases", "version"],
"additionalProperties": false "additionalProperties": false
} }

View File

@@ -14,6 +14,7 @@ import {
renameLocalList, renameLocalList,
renameRemoteList, renameRemoteList,
SelectedDbItem, SelectedDbItem,
DB_CONFIG_VERSION,
} from "./db-config"; } from "./db-config";
import * as chokidar from "chokidar"; import * as chokidar from "chokidar";
import { DisposableObject, DisposeHandler } from "../../pure/disposable-object"; import { DisposableObject, DisposeHandler } from "../../pure/disposable-object";
@@ -459,6 +460,7 @@ export class DbConfigStore extends DisposableObject {
private createEmptyConfig(): DbConfig { private createEmptyConfig(): DbConfig {
return { return {
version: DB_CONFIG_VERSION,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [], repositoryLists: [],

View File

@@ -1,6 +1,10 @@
// Contains models for the data we want to store in the database config // Contains models and consts for the data we want to store in the database config.
// Changes to these models should be done carefully and account for backwards compatibility of data.
export const DB_CONFIG_VERSION = 1;
export interface DbConfig { export interface DbConfig {
version: number;
databases: DbConfigDatabases; databases: DbConfigDatabases;
selected?: SelectedDbItem; selected?: SelectedDbItem;
} }
@@ -89,6 +93,7 @@ export interface LocalDatabase {
export function cloneDbConfig(config: DbConfig): DbConfig { export function cloneDbConfig(config: DbConfig): DbConfig {
return { return {
version: config.version,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: config.databases.variantAnalysis.repositoryLists.map( repositoryLists: config.databases.variantAnalysis.repositoryLists.map(

View File

@@ -5,6 +5,7 @@ import {
LocalList, LocalList,
RemoteRepositoryList, RemoteRepositoryList,
SelectedDbItem, SelectedDbItem,
DB_CONFIG_VERSION,
} from "../../src/databases/config/db-config"; } from "../../src/databases/config/db-config";
export function createDbConfig({ export function createDbConfig({
@@ -23,6 +24,7 @@ export function createDbConfig({
selected?: SelectedDbItem; selected?: SelectedDbItem;
} = {}): DbConfig { } = {}): DbConfig {
return { return {
version: DB_CONFIG_VERSION,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: remoteLists, repositoryLists: remoteLists,

View File

@@ -1,4 +1,5 @@
{ {
"version": 1,
"databases": { "databases": {
"variantAnalysis": { "variantAnalysis": {
"repositoryLists": [ "repositoryLists": [

View File

@@ -1,4 +1,5 @@
{ {
"version": 1,
"databases": { "databases": {
"variantAnalysis": { "variantAnalysis": {
"repositoryLists": [], "repositoryLists": [],

View File

@@ -1,5 +1,8 @@
import { join } from "path"; import { join } from "path";
import { DbConfig } from "../../../../src/databases/config/db-config"; import {
DbConfig,
DB_CONFIG_VERSION,
} from "../../../../src/databases/config/db-config";
import { DbConfigValidator } from "../../../../src/databases/config/db-config-validator"; import { DbConfigValidator } from "../../../../src/databases/config/db-config-validator";
import { DbConfigValidationErrorKind } from "../../../../src/databases/db-validation-errors"; import { DbConfigValidationErrorKind } from "../../../../src/databases/db-validation-errors";
import { import {
@@ -15,6 +18,7 @@ describe("db config validation", () => {
// We're intentionally bypassing the type check because we'd // We're intentionally bypassing the type check because we'd
// like to make sure validation errors are highlighted. // like to make sure validation errors are highlighted.
const dbConfig = { const dbConfig = {
version: DB_CONFIG_VERSION,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [ repositoryLists: [

View File

@@ -413,6 +413,7 @@ describe("db manager", () => {
const dbConfigFileContents = await readDbConfigDirectly(); const dbConfigFileContents = await readDbConfigDirectly();
expect(dbConfigFileContents).toEqual({ expect(dbConfigFileContents).toEqual({
version: dbConfig.version,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [], repositoryLists: [],
@@ -434,6 +435,7 @@ describe("db manager", () => {
const dbConfigFileContents = await readDbConfigDirectly(); const dbConfigFileContents = await readDbConfigDirectly();
expect(dbConfigFileContents).toEqual({ expect(dbConfigFileContents).toEqual({
version: dbConfig.version,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [remoteList], repositoryLists: [remoteList],
@@ -459,6 +461,7 @@ describe("db manager", () => {
const dbConfigFileContents = await readDbConfigDirectly(); const dbConfigFileContents = await readDbConfigDirectly();
expect(dbConfigFileContents).toEqual({ expect(dbConfigFileContents).toEqual({
version: dbConfig.version,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [remoteList], repositoryLists: [remoteList],
@@ -484,6 +487,7 @@ describe("db manager", () => {
const dbConfigFileContents = await readDbConfigDirectly(); const dbConfigFileContents = await readDbConfigDirectly();
expect(dbConfigFileContents).toEqual({ expect(dbConfigFileContents).toEqual({
version: dbConfig.version,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [remoteList], repositoryLists: [remoteList],
@@ -513,6 +517,7 @@ describe("db manager", () => {
const dbConfigFileContents = await readDbConfigDirectly(); const dbConfigFileContents = await readDbConfigDirectly();
expect(dbConfigFileContents).toEqual({ expect(dbConfigFileContents).toEqual({
version: dbConfig.version,
databases: { databases: {
variantAnalysis: { variantAnalysis: {
repositoryLists: [remoteList], repositoryLists: [remoteList],