DB archive characters are migrated and moved to file archive on migrate
This commit is contained in:
@@ -30,9 +30,10 @@ export function getArchiveObj(creatureId){
|
||||
return archiveCreature;
|
||||
}
|
||||
|
||||
export function writeArchiveCreatureFile(archive){
|
||||
export function archiveCreature(creatureId){
|
||||
const archive = getArchiveObj(creatureId);
|
||||
const buffer = Buffer.from(JSON.stringify(archive, null, 2));
|
||||
return ArchiveCreatureFiles.write(buffer, {
|
||||
const result = ArchiveCreatureFiles.write(buffer, {
|
||||
fileName: `${archive.creature.name || archive.creature._id}.json`,
|
||||
type: 'application/json',
|
||||
userId: archive.creature.owner,
|
||||
@@ -42,6 +43,8 @@ export function writeArchiveCreatureFile(archive){
|
||||
creatureName: archive.creature.name,
|
||||
},
|
||||
});
|
||||
removeCreatureWork(creatureId);
|
||||
return result;
|
||||
}
|
||||
|
||||
const archiveCreatureToFile = new ValidatedMethod({
|
||||
@@ -60,10 +63,10 @@ const archiveCreatureToFile = new ValidatedMethod({
|
||||
async run({creatureId}) {
|
||||
assertOwnership(creatureId, this.userId);
|
||||
if (Meteor.isServer){
|
||||
const archive = getArchiveObj(creatureId);
|
||||
writeArchiveCreatureFile(archive);
|
||||
archiveCreature(creatureId);
|
||||
} else {
|
||||
removeCreatureWork(creatureId);
|
||||
}
|
||||
removeCreatureWork(creatureId);
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import '/imports/api/creature/archive/methods/archiveCreatures.js';
|
||||
// import '/imports/api/creature/archive/methods/archiveCreatures.js';
|
||||
import '/imports/api/creature/archive/methods/archiveCreatureToFile.js';
|
||||
import '/imports/api/creature/archive/methods/restoreCreatures.js';
|
||||
import '/imports/api/creature/archive/methods/restoreCreatureFromFile.js';
|
||||
|
||||
@@ -9,7 +9,7 @@ import Experiences from '/imports/api/creature/experience/Experiences.js';
|
||||
import ArchivedCreatures from '/imports/api/creature/archive/ArchivedCreatures.js';
|
||||
import { removeCreatureWork } from '/imports/api/creature/creatures/methods/removeCreature.js';
|
||||
|
||||
function restoreCreature(archiveId){
|
||||
export function restoreCreature(archiveId){
|
||||
// Get the archive
|
||||
const archivedCreature = ArchivedCreatures.findOne(archiveId);
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { Migrations } from 'meteor/percolate:migrations';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import ArchivedCreatures from '/imports/api/creature/archive/ArchivedCreatures.js';
|
||||
import { restoreCreature } from '/imports/api/creature/archive/methods/restoreCreatures.js';
|
||||
import { archiveCreature } from '/imports/api/creature/archive/methods/archiveCreatureToFile.js';
|
||||
import transformFields from '/imports/migrations/server/transformFields.js';
|
||||
import SCHEMA_VERSION from '/imports/constants/SCHEMA_VERSION.js';
|
||||
import STORAGE_LIMITS from '/imports/constants/STORAGE_LIMITS.js';
|
||||
@@ -19,14 +22,34 @@ Migrations.add({
|
||||
});
|
||||
|
||||
function migrate({reversed} = {}){
|
||||
console.log('unarchiving all characters from database archive');
|
||||
// TODO
|
||||
console.log('restoring all characters from database archive');
|
||||
const restoredIds = restoreAllCreatures();
|
||||
|
||||
console.log('migrating creature properties');
|
||||
migrateCollection({collection: CreatureProperties, reversed});
|
||||
|
||||
console.log('migrating library nodes')
|
||||
migrateCollection({collection: LibraryNodes, reversed});
|
||||
|
||||
console.log('archiving characters to file system archive');
|
||||
// TODO
|
||||
rearchiveAllCreatures(restoredIds);
|
||||
}
|
||||
|
||||
function restoreAllCreatures(){
|
||||
const ids = [];
|
||||
ArchivedCreatures.find({}, {
|
||||
fields: {_id: 1}
|
||||
}).forEach(archive => {
|
||||
const id = restoreCreature(archive._id);
|
||||
ids.push(id);
|
||||
});
|
||||
return ids;
|
||||
}
|
||||
|
||||
function rearchiveAllCreatures(ids){
|
||||
ids.forEach(id => {
|
||||
archiveCreature(id);
|
||||
});
|
||||
}
|
||||
|
||||
function migrateCollection({collection, reversed}){
|
||||
|
||||
Reference in New Issue
Block a user