diff --git a/CHANGELOG.md b/CHANGELOG.md index bab0c4fe..33a692dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ ### ⚡️ Optimizations +- [#534](https://github.com/estruyf/vscode-front-matter/issues/534): Moved the `mediaDb.json` file to a `.frontmatter/database` folder instead of the `.frontmatter/content` folder - [#536](https://github.com/estruyf/vscode-front-matter/issues/536): Set the start location from the script to the root of the workspace ### 🐞 Fixes diff --git a/src/constants/LocalStore.ts b/src/constants/LocalStore.ts index 2baee553..01f81aec 100644 --- a/src/constants/LocalStore.ts +++ b/src/constants/LocalStore.ts @@ -1,6 +1,7 @@ export const LocalStore = { rootFolder: '.frontmatter', contentFolder: 'content', + databaseFolder: 'database', templatesFolder: 'templates', mediaDatabaseFile: 'mediaDb.json' }; diff --git a/src/helpers/MediaLibrary.ts b/src/helpers/MediaLibrary.ts index 0811c7a7..c9535389 100644 --- a/src/helpers/MediaLibrary.ts +++ b/src/helpers/MediaLibrary.ts @@ -7,6 +7,7 @@ import { Notifications } from './Notifications'; import { parseWinPath } from './parseWinPath'; import { LocalStore } from '../constants'; import { existsAsync, renameAsync } from '../utils'; +import { existsSync, mkdirSync, renameSync } from 'fs'; interface MediaRecord { description: string; @@ -23,11 +24,38 @@ export class MediaLibrary { return; } + // In version 8.4.0 we moved to a new database location + // This is to ensure that the database is moved to the new location + const oldDbPath = join( + parseWinPath(wsFolder?.fsPath || ''), + LocalStore.rootFolder, + LocalStore.contentFolder, + LocalStore.mediaDatabaseFile + ); + + const dbFolder = join( + parseWinPath(wsFolder?.fsPath || ''), + LocalStore.rootFolder, + LocalStore.databaseFolder + ); + const dbPath = join(dbFolder, LocalStore.mediaDatabaseFile); + + if (existsSync(oldDbPath)) { + // Check if the database folder exists + if (!existsSync(dbFolder)) { + mkdirSync(dbFolder, { recursive: true }); + } + // Move the database file + if (existsSync(oldDbPath)) { + renameSync(oldDbPath, dbPath); + } + } + this.db = new JsonDB( join( parseWinPath(wsFolder?.fsPath || ''), LocalStore.rootFolder, - LocalStore.contentFolder, + LocalStore.databaseFolder, LocalStore.mediaDatabaseFile ), true,