aboutsummaryrefslogtreecommitdiff
path: root/src/api/databaseMigration.js
diff options
context:
space:
mode:
authorKana <[email protected]>2020-12-24 21:41:24 +0900
committerGitHub <[email protected]>2020-12-24 21:41:24 +0900
commit2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab (patch)
treedbf2b2cad342f31849a62089dedd40165758af86 /src/api/databaseMigration.js
parentEnable deleting files with the API key (diff)
parentbug: fix showlist resetting itself every time the page is changed (diff)
downloadhost.fuwn.me-2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab.tar.xz
host.fuwn.me-2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab.zip
Merge pull request #228 from Zephyrrus/begone_trailing_commas
Merge own dev branch into main dev branch
Diffstat (limited to 'src/api/databaseMigration.js')
-rw-r--r--src/api/databaseMigration.js106
1 files changed, 54 insertions, 52 deletions
diff --git a/src/api/databaseMigration.js b/src/api/databaseMigration.js
index 15b2bf7..7e919f3 100644
--- a/src/api/databaseMigration.js
+++ b/src/api/databaseMigration.js
@@ -1,17 +1,60 @@
+/* eslint-disable eqeqeq */
+/* eslint-disable no-await-in-loop */
+/* eslint-disable no-console */
const nodePath = require('path');
const moment = require('moment');
const jetpack = require('fs-jetpack');
-const { path } = require('fs-jetpack');
const sharp = require('sharp');
const ffmpeg = require('fluent-ffmpeg');
const imageExtensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webp'];
const videoExtensions = ['.webm', '.mp4', '.wmv', '.avi', '.mov'];
+const generateThumbnailForImage = async (filename, output) => {
+ try {
+ const file = await jetpack.readAsync(nodePath.join(__dirname, '../../uploads', filename), 'buffer');
+ await sharp(file)
+ .resize(64, 64)
+ .toFormat('webp')
+ .toFile(nodePath.join(__dirname, '../../uploads/thumbs/square', output));
+ await sharp(file)
+ .resize(225, null)
+ .toFormat('webp')
+ .toFile(nodePath.join(__dirname, '../../uploads/thumbs', output));
+ console.log('finished', filename);
+ } catch (error) {
+ console.log('error', filename);
+ }
+};
+
+const generateThumbnailForVideo = (filename) => {
+ try {
+ ffmpeg(nodePath.join(__dirname, '../../uploads', filename))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: nodePath.join(__dirname, '../../uploads/thumbs/square'),
+ size: '64x64'
+ })
+ .on('error', (error) => console.error(error.message));
+ ffmpeg(nodePath.join(__dirname, '../../uploads', filename))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: nodePath.join(__dirname, '../../uploads/thumbs'),
+ size: '150x?'
+ })
+ .on('error', (error) => console.error(error.message));
+ console.log('finished', filename);
+ } catch (error) {
+ console.log('error', filename);
+ }
+};
+
const oldDb = require('knex')({
client: 'sqlite3',
connection: {
- filename: nodePath.join(__dirname, '..', '..', 'db')
+ filename: nodePath.join(__dirname, '../../', 'db')
},
useNullAsDefault: true
});
@@ -19,17 +62,17 @@ const oldDb = require('knex')({
const newDb = require('knex')({
client: 'sqlite3',
connection: {
- filename: nodePath.join(__dirname, '..', '..', 'database.sqlite')
+ filename: nodePath.join(__dirname, '../../', 'database.sqlite')
},
- postProcessResponse: result => {
+ postProcessResponse: (result) => {
const booleanFields = [
'enabled',
'enableDownload',
'isAdmin'
];
- const processResponse = row => {
- Object.keys(row).forEach(key => {
+ const processResponse = (row) => {
+ Object.keys(row).forEach((key) => {
if (booleanFields.includes(key)) {
if (row[key] === 0) row[key] = false;
else if (row[key] === 1) row[key] = true;
@@ -38,7 +81,7 @@ const newDb = require('knex')({
return row;
};
- if (Array.isArray(result)) return result.map(row => processResponse(row));
+ if (Array.isArray(result)) return result.map((row) => processResponse(row));
if (typeof result === 'object') return processResponse(result);
return result;
},
@@ -49,8 +92,8 @@ const start = async () => {
console.log('Starting migration, this may take a few minutes...'); // Because I half assed it
console.log('Please do NOT kill the process. Wait for it to finish.');
- await jetpack.removeAsync(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'));
- await jetpack.dirAsync(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'));
+ await jetpack.removeAsync(nodePath.join(__dirname, '../../uploads/thumbs'));
+ await jetpack.dirAsync(nodePath.join(__dirname, '../../uploads/thumbs/square'));
console.log('Finished deleting old thumbnails to create new ones');
const users = await oldDb.table('users').where('username', '<>', 'root');
@@ -60,7 +103,7 @@ const start = async () => {
id: user.id,
username: user.username,
password: user.password,
- enabled: user.enabled == 1 ? true : false,
+ enabled: user.enabled == 1,
isAdmin: false,
apiKey: user.token,
passwordEditedAt: now,
@@ -126,7 +169,7 @@ const start = async () => {
});
const filename = file.name;
- if (!jetpack.exists(nodePath.join(__dirname, '..', '..', 'uploads', filename))) continue;
+ if (!jetpack.exists(nodePath.join(__dirname, '../../uploads', filename))) continue;
const ext = nodePath.extname(filename).toLowerCase();
const output = `${filename.slice(0, -ext.length)}.webp`;
if (imageExtensions.includes(ext)) await generateThumbnailForImage(filename, output);
@@ -140,45 +183,4 @@ const start = async () => {
process.exit(0);
};
-const generateThumbnailForImage = async (filename, output) => {
- try {
- const file = await jetpack.readAsync(nodePath.join(__dirname, '..', '..', 'uploads', filename), 'buffer');
- await sharp(file)
- .resize(64, 64)
- .toFormat('webp')
- .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square', output));
- await sharp(file)
- .resize(225, null)
- .toFormat('webp')
- .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', output));
- console.log('finished', filename);
- } catch (error) {
- console.log('error', filename);
- }
-};
-
-const generateThumbnailForVideo = filename => {
- try {
- ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
- .thumbnail({
- timestamps: [0],
- filename: '%b.png',
- folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'),
- size: '64x64'
- })
- .on('error', error => console.error(error.message));
- ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
- .thumbnail({
- timestamps: [0],
- filename: '%b.png',
- folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'),
- size: '150x?'
- })
- .on('error', error => console.error(error.message));
- console.log('finished', filename);
- } catch (error) {
- console.log('error', filename);
- }
-};
-
start();