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