Improved archive storage calculations and errors

This commit is contained in:
Stefan Zermatten
2022-06-07 23:21:48 +02:00
parent 28934baac9
commit e7e8f938ed
3 changed files with 22 additions and 16 deletions

View File

@@ -1,6 +1,8 @@
import { createS3FilesCollection } from '/imports/api/files/s3FileStorage.js';
import SimpleSchema from 'simpl-schema';
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({
collectionName: 'archiveCreatureFiles',
@@ -16,7 +18,7 @@ const ArchiveCreatureFiles = createS3FilesCollection({
return true;
},
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,
blackbox: true,
},
creature: {
type: Object,
blackbox: true,
},
creature: CreatureSchema,
properties: {
type: Array,
},
'properties.$': {
type: Object,
blackbox: true,
},
'properties.$': CreaturePropertySchema,
experiences: {
type: Array,
},

View File

@@ -9,7 +9,6 @@ import CreatureLogs from '/imports/api/creature/log/CreatureLogs.js';
import Experiences from '/imports/api/creature/experience/Experiences.js';
import { removeCreatureWork } from '/imports/api/creature/creatures/methods/removeCreature.js';
import ArchiveCreatureFiles from '/imports/api/creature/archive/ArchiveCreatureFiles.js';
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js';
export function getArchiveObj(creatureId){
// Build the archive document
@@ -32,7 +31,7 @@ export function getArchiveObj(creatureId){
return archiveCreature;
}
export function archiveCreature(creatureId, userId){
export function archiveCreature(creatureId){
const archive = getArchiveObj(creatureId);
const buffer = Buffer.from(JSON.stringify(archive, null, 2));
ArchiveCreatureFiles.write(buffer, {
@@ -44,12 +43,11 @@ export function archiveCreature(creatureId, userId){
creatureId: archive.creature._id,
creatureName: archive.creature.name,
},
}, (error, file) => {
}, (error) => {
if (error){
throw error;
} else {
removeCreatureWork(creatureId);
incrementFileStorageUsed(userId, file.size);
}
}, true);
}

View File

@@ -42,6 +42,7 @@
<v-btn
outlined
style="height: 100%; width: 100%; min-height: 120px;"
class="archive-button"
:color="archiveFileError ? 'error' : undefined"
@click="$refs.archiveFileInput.click()"
>
@@ -183,12 +184,16 @@ export default {
data = JSON.parse(fr.result);
} catch (e){
self.archiveFileError = 'File could not be parsed';
console.error(e);
return;
}
console.log(data);
try {
archiveSchema.validate(data);
archiveSchema.validate(archiveSchema.clean(data));
} 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({
@@ -245,3 +250,10 @@ export default {
},
}
</script>
<style>
.v-btn.archive-button > .v-btn__content {
white-space: normal;
max-width: 100%;
}
</style>