Improved archive storage calculations and errors
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import { createS3FilesCollection } from '/imports/api/files/s3FileStorage.js';
|
import { createS3FilesCollection } from '/imports/api/files/s3FileStorage.js';
|
||||||
import SimpleSchema from 'simpl-schema';
|
import SimpleSchema from 'simpl-schema';
|
||||||
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js';
|
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js';
|
||||||
|
import { CreaturePropertySchema } from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||||
|
import { CreatureSchema } from '/imports/api/creature/creatures/Creatures.js';
|
||||||
|
|
||||||
const ArchiveCreatureFiles = createS3FilesCollection({
|
const ArchiveCreatureFiles = createS3FilesCollection({
|
||||||
collectionName: 'archiveCreatureFiles',
|
collectionName: 'archiveCreatureFiles',
|
||||||
@@ -16,7 +18,7 @@ const ArchiveCreatureFiles = createS3FilesCollection({
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
onAfterUpload(file) {
|
onAfterUpload(file) {
|
||||||
incrementFileStorageUsed(file.userId, file.size);
|
if (Meteor.isServer) incrementFileStorageUsed(file.userId, file.size);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -25,17 +27,11 @@ let archiveSchema = new SimpleSchema({
|
|||||||
type: Object,
|
type: Object,
|
||||||
blackbox: true,
|
blackbox: true,
|
||||||
},
|
},
|
||||||
creature: {
|
creature: CreatureSchema,
|
||||||
type: Object,
|
|
||||||
blackbox: true,
|
|
||||||
},
|
|
||||||
properties: {
|
properties: {
|
||||||
type: Array,
|
type: Array,
|
||||||
},
|
},
|
||||||
'properties.$': {
|
'properties.$': CreaturePropertySchema,
|
||||||
type: Object,
|
|
||||||
blackbox: true,
|
|
||||||
},
|
|
||||||
experiences: {
|
experiences: {
|
||||||
type: Array,
|
type: Array,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import CreatureLogs from '/imports/api/creature/log/CreatureLogs.js';
|
|||||||
import Experiences from '/imports/api/creature/experience/Experiences.js';
|
import Experiences from '/imports/api/creature/experience/Experiences.js';
|
||||||
import { removeCreatureWork } from '/imports/api/creature/creatures/methods/removeCreature.js';
|
import { removeCreatureWork } from '/imports/api/creature/creatures/methods/removeCreature.js';
|
||||||
import ArchiveCreatureFiles from '/imports/api/creature/archive/ArchiveCreatureFiles.js';
|
import ArchiveCreatureFiles from '/imports/api/creature/archive/ArchiveCreatureFiles.js';
|
||||||
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js';
|
|
||||||
|
|
||||||
export function getArchiveObj(creatureId){
|
export function getArchiveObj(creatureId){
|
||||||
// Build the archive document
|
// Build the archive document
|
||||||
@@ -32,7 +31,7 @@ export function getArchiveObj(creatureId){
|
|||||||
return archiveCreature;
|
return archiveCreature;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function archiveCreature(creatureId, userId){
|
export function archiveCreature(creatureId){
|
||||||
const archive = getArchiveObj(creatureId);
|
const archive = getArchiveObj(creatureId);
|
||||||
const buffer = Buffer.from(JSON.stringify(archive, null, 2));
|
const buffer = Buffer.from(JSON.stringify(archive, null, 2));
|
||||||
ArchiveCreatureFiles.write(buffer, {
|
ArchiveCreatureFiles.write(buffer, {
|
||||||
@@ -44,12 +43,11 @@ export function archiveCreature(creatureId, userId){
|
|||||||
creatureId: archive.creature._id,
|
creatureId: archive.creature._id,
|
||||||
creatureName: archive.creature.name,
|
creatureName: archive.creature.name,
|
||||||
},
|
},
|
||||||
}, (error, file) => {
|
}, (error) => {
|
||||||
if (error){
|
if (error){
|
||||||
throw error;
|
throw error;
|
||||||
} else {
|
} else {
|
||||||
removeCreatureWork(creatureId);
|
removeCreatureWork(creatureId);
|
||||||
incrementFileStorageUsed(userId, file.size);
|
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
<v-btn
|
<v-btn
|
||||||
outlined
|
outlined
|
||||||
style="height: 100%; width: 100%; min-height: 120px;"
|
style="height: 100%; width: 100%; min-height: 120px;"
|
||||||
|
class="archive-button"
|
||||||
:color="archiveFileError ? 'error' : undefined"
|
:color="archiveFileError ? 'error' : undefined"
|
||||||
@click="$refs.archiveFileInput.click()"
|
@click="$refs.archiveFileInput.click()"
|
||||||
>
|
>
|
||||||
@@ -183,12 +184,16 @@ export default {
|
|||||||
data = JSON.parse(fr.result);
|
data = JSON.parse(fr.result);
|
||||||
} catch (e){
|
} catch (e){
|
||||||
self.archiveFileError = 'File could not be parsed';
|
self.archiveFileError = 'File could not be parsed';
|
||||||
|
console.error(e);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
console.log(data);
|
|
||||||
try {
|
try {
|
||||||
archiveSchema.validate(data);
|
archiveSchema.validate(archiveSchema.clean(data));
|
||||||
} catch (e){
|
} catch (e){
|
||||||
self.archiveFileError = e.reason || e.message || e.toString();
|
self.archiveFileError = 'File failed validation: ' + (e.reason || e.message || e.toString());
|
||||||
|
console.error(e);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let uploadInstance = ArchiveCreatureFiles.insert({
|
let uploadInstance = ArchiveCreatureFiles.insert({
|
||||||
@@ -245,3 +250,10 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.v-btn.archive-button > .v-btn__content {
|
||||||
|
white-space: normal;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user