diff --git a/Composer/packages/server/src/store/abh-template.json b/Composer/packages/server/src/store/abh-template.json deleted file mode 100644 index dbfce0b3dc..0000000000 --- a/Composer/packages/server/src/store/abh-template.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "storageConnections": [ - { - "id": "default", - "name": "Azure bot hosted", - "type": "LocalDisk", - "path": "/home/site/artifacts/bot" - } - ], - "recentBotProjects": [ - { - "storageId": "default", - "path": "/home/site/artifacts/bot/editing" - }, - { - "storageId": "integration", - "path": "/home/site/artifacts/bot/integration", - "readOnly": true - }, - { - "storageId": "production", - "path": "/home/site/artifacts/bot/production", - "readOnly": true - } - ] -} diff --git a/Composer/packages/server/src/store/data.template.ts b/Composer/packages/server/src/store/data.template.ts index 300bda11a5..3b8f0d9831 100644 --- a/Composer/packages/server/src/store/data.template.ts +++ b/Composer/packages/server/src/store/data.template.ts @@ -4,6 +4,7 @@ import settings from '../settings'; export default { + version: 1, storageConnections: [ { id: 'default', diff --git a/Composer/packages/server/src/store/migrations.ts b/Composer/packages/server/src/store/migrations.ts index 286148eeb6..8bd66df6e8 100644 --- a/Composer/packages/server/src/store/migrations.ts +++ b/Composer/packages/server/src/store/migrations.ts @@ -9,6 +9,8 @@ import set from 'lodash/set'; import log from '../logger'; import settings from '../settings'; +import initData from './data.template'; + interface Migration { /** * Migration label. Will be printed to the console in debug. @@ -33,6 +35,11 @@ const migrations: Migration[] = [ condition: data => get(data, 'storageConnections.0.defaultPath') !== settings.botsFolder, run: data => set(data, 'storageConnections[0].defaultPath', settings.botsFolder), }, + { + name: 'Re-init when version update', + condition: data => !data.version || data.version != initData.version, + run: data => initData, + }, ]; export function runMigrations(initialData: any): any { diff --git a/Composer/packages/server/src/store/store.ts b/Composer/packages/server/src/store/store.ts index 6a850a4ae7..d5eff87fa2 100644 --- a/Composer/packages/server/src/store/store.ts +++ b/Composer/packages/server/src/store/store.ts @@ -7,30 +7,20 @@ import path from 'path'; import log from '../logger'; import settings from '../settings'; -import localInitData from './data.template'; -import abhInitData from './abh-template.json'; +import initData from './data.template'; import { runMigrations } from './migrations'; -const isHostedInAzure = !!process.env.WEBSITE_NODE_DEFAULT_VERSION; -const dataStorePath = - isHostedInAzure && process.env.HOME ? path.resolve(process.env.HOME, './site/data.json') : settings.appDataPath; +const dataStorePath = settings.appDataPath; -let initData = isHostedInAzure ? abhInitData : localInitData; - -if (fs.existsSync(dataStorePath)) { - const userData = JSON.parse(fs.readFileSync(dataStorePath, 'utf-8')); - initData = runMigrations(userData); -} else { - log('Database not found. Seeding data.json with: %O', initData); -} - -fs.writeFileSync(dataStorePath, JSON.stringify(initData, null, 2) + '\n'); +const migrateStore = () => { + if (fs.existsSync(dataStorePath)) { + const userData = JSON.parse(fs.readFileSync(dataStorePath, 'utf-8')); + const migratedData = runMigrations(userData); + fs.writeFileSync(dataStorePath, JSON.stringify(migratedData, null, 2) + '\n'); + } +}; -if (isHostedInAzure) { - // for some very odd reason on Azure webapp, fs.readFileSync after writeFileSync doesn't - // always find the file, add one more io to kick the virtual file system - fs.appendFileSync(dataStorePath, ' '); -} +migrateStore(); interface KVStore { get(key: string, defaultValue?: any): any;