diff --git a/Dockerfile b/Dockerfile index 844f6af91c7865fd0e9d4dc51cdc692ad0fd9bde..0a5db9a2fdc4383daf8856b12d2e9fdd03e6cc34 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,5 @@ ADD . . RUN yarn install --production RUN mkdir ./server-files RUN mkdir ./user-files -RUN cp ./sql/default-account.sqlite ./server-files/account.sqlite CMD ["yarn", "start"] \ No newline at end of file diff --git a/account-db.js b/account-db.js index f839df7cd4723cedefdc8eb73c8480546884223a..8a90459337dbf4df21a5b124032bcb3beff6a506 100644 --- a/account-db.js +++ b/account-db.js @@ -1,10 +1,20 @@ +let fs = require('fs'); let { join } = require('path'); let { openDatabase } = require('./db'); +let config = require('./load-config'); let accountDb = null; function getAccountDb() { if (accountDb == null) { - accountDb = openDatabase(join(__dirname, 'server-files/account.sqlite')); + let dbPath = join(config.serverFiles, 'account.sqlite'); + let needsInit = !fs.existsSync(dbPath); + + accountDb = openDatabase(dbPath); + + if (needsInit) { + let initSql = fs.readFileSync(join(__dirname, 'sql/account.sql'), 'utf8'); + accountDb.exec(initSql); + } } return accountDb; diff --git a/app-sync.js b/app-sync.js index ca56cdbb62ebe19c011ba7652bd8f7779799fe98..9b7dbfb637acd2e075a4f92f9cb9773b83bd2bb4 100644 --- a/app-sync.js +++ b/app-sync.js @@ -19,7 +19,7 @@ const app = express(); app.use(errorMiddleware); async function init() { - let fileDir = join(__dirname, process.env.ACTUAL_USER_FILES || config.files); + let fileDir = join(__dirname, process.env.ACTUAL_USER_FILES || config.userFiles); console.log('Initializing Actual with user file dir:', fileDir); @@ -279,12 +279,12 @@ app.post('/upload-user-file', async (req, res) => { // supported yet in the self-hosted version because it's unclear if // it's still needed, given that you own your server // - // await fs.writeFile(join(config.files, `${fileId}.blob`), req.body); + // await fs.writeFile(join(config.userFiles, `${fileId}.blob`), req.body); let zip = new AdmZip(req.body); try { - zip.extractAllTo(join(config.files, fileId), true); + zip.extractAllTo(join(config.userFiles, fileId), true); } catch (err) { console.log('Error writing file', err); res.send(JSON.stringify({ status: 'error' })); @@ -339,7 +339,7 @@ app.get('/download-user-file', async (req, res) => { let zip = new AdmZip(); try { - zip.addLocalFolder(join(config.files, fileId), '/'); + zip.addLocalFolder(join(config.userFiles, fileId), '/'); } catch (e) { res.status(500).send('Error reading files'); return; diff --git a/load-config.js b/load-config.js index 4af565dc8749b4e6ae72e37e29df9fe105f75c81..9dd97e07ef9d0bd0520dd77a77fa77ae7e85d4cf 100644 --- a/load-config.js +++ b/load-config.js @@ -3,11 +3,14 @@ try { config = require('./config'); } catch (e) { let fs = require('fs'); + let { join } = require('path'); + let root = fs.existsSync('/data') ? '/data' : '/'; config = { mode: 'development', port: 5006, - files: fs.existsSync('/data') ? '/data' : './user-files' + serverFiles: join(root, 'server-files'), + userFiles: join(root, 'user-files') }; } diff --git a/sql/default-account.sqlite b/sql/default-account.sqlite deleted file mode 100644 index 3878e6831c5c80d9af8539f4b3fa7fcc3de6b916..0000000000000000000000000000000000000000 Binary files a/sql/default-account.sqlite and /dev/null differ