aboutsummaryrefslogtreecommitdiff
path: root/src/api/databaseMigration.js
diff options
context:
space:
mode:
authorPitu <[email protected]>2021-03-25 00:09:33 +0900
committerPitu <[email protected]>2021-03-25 00:09:33 +0900
commitabd7a1ca2e058854e6335b54f4119f009961a5ab (patch)
tree80676308a3856947a8e927649a171d57fa5b752d /src/api/databaseMigration.js
parentwip (diff)
downloadhost.fuwn.me-abd7a1ca2e058854e6335b54f4119f009961a5ab.tar.xz
host.fuwn.me-abd7a1ca2e058854e6335b54f4119f009961a5ab.zip
chore: move database migration script
Diffstat (limited to 'src/api/databaseMigration.js')
-rw-r--r--src/api/databaseMigration.js140
1 files changed, 0 insertions, 140 deletions
diff --git a/src/api/databaseMigration.js b/src/api/databaseMigration.js
deleted file mode 100644
index 1e3518e..0000000
--- a/src/api/databaseMigration.js
+++ /dev/null
@@ -1,140 +0,0 @@
-require('dotenv').config();
-
-const nodePath = require('path');
-const moment = require('moment');
-const jetpack = require('fs-jetpack');
-const ThumbUtil = require('./utils/ThumbUtil');
-
-const oldDb = require('knex')({
- client: 'sqlite3',
- connection: {
- filename: nodePath.join(__dirname, '../../', 'db')
- },
- useNullAsDefault: true
-});
-
-const newDb = require('knex')({
- client: 'sqlite3',
- connection: {
- filename: nodePath.join(__dirname, '../../database/', 'database.sqlite')
- },
- postProcessResponse: result => {
- const booleanFields = [
- 'enabled',
- 'enableDownload',
- 'isAdmin',
- 'nsfw'
- ];
-
- 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;
- }
- });
- return row;
- };
-
- if (Array.isArray(result)) return result.map(row => processResponse(row));
- if (typeof result === 'object') return processResponse(result);
- return result;
- },
- useNullAsDefault: true
-});
-
-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'));
- console.log('Finished deleting old thumbnails to create new ones');
-
- const users = await oldDb.table('users').where('username', '<>', 'root');
- for (const user of users) {
- const now = moment.utc().toDate();
- const userToInsert = {
- id: user.id,
- username: user.username,
- password: user.password,
- enabled: user.enabled,
- isAdmin: false,
- apiKey: user.token,
- passwordEditedAt: now,
- apiKeyEditedAt: now,
- createdAt: now,
- editedAt: now
- };
- await newDb.table('users').insert(userToInsert);
- }
- console.log('Finished migrating users...');
-
- const albums = await oldDb.table('albums');
- for (const album of albums) {
- if (!album.enabled || album.enabled == 0) continue;
- const now = moment.utc().toDate();
- const albumToInsert = {
- id: album.id,
- userId: album.userid,
- name: album.name,
- zippedAt: album.zipGeneratedAt ? moment.unix(album.zipGeneratedAt).toDate() : null,
- createdAt: moment.unix(album.timestamp).toDate(),
- editedAt: moment.unix(album.editedAt).toDate()
- };
- const linkToInsert = {
- userId: album.userid,
- albumId: album.id,
- identifier: album.identifier,
- views: 0,
- enabled: true,
- enableDownload: true,
- createdAt: now,
- editedAt: now
- };
- await newDb.table('albums').insert(albumToInsert);
- const insertedId = await newDb.table('links').insert(linkToInsert);
- await newDb.table('albumsLinks').insert({
- albumId: album.id,
- linkId: insertedId[0]
- });
- }
- console.log('Finished migrating albums...');
-
- const files = await oldDb.table('files');
- const filesToInsert = [];
- const albumsFilesToInsert = [];
- for (const file of files) {
- const fileToInsert = {
- id: file.id,
- userId: file.userid,
- name: file.name,
- original: file.original,
- type: file.type,
- size: file.size,
- hash: file.hash,
- ip: file.ip,
- createdAt: moment.unix(file.timestamp).toDate(),
- editedAt: moment.unix(file.timestamp).toDate()
- };
- filesToInsert.push(fileToInsert);
- if (file.albumid) {
- albumsFilesToInsert.push({
- albumId: file.albumid,
- fileId: file.id
- });
- }
-
- const filename = file.name;
- if (!jetpack.exists(nodePath.join(__dirname, '../../uploads', filename))) continue;
- ThumbUtil.generateThumbnails(filename);
- }
- await newDb.batchInsert('files', filesToInsert, 20);
- await newDb.batchInsert('albumsFiles', albumsFilesToInsert, 20);
- console.log('Finished migrating files...');
-
- console.log('Finished migrating everything. ');
- process.exit(0);
-};
-
-start();