Skip to content
This repository has been archived by the owner on Oct 30, 2018. It is now read-only.

Commit

Permalink
Merge 51955c7 into 23dde25
Browse files Browse the repository at this point in the history
  • Loading branch information
braydonf committed Nov 13, 2017
2 parents 23dde25 + 51955c7 commit 2effb65
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 23 deletions.
53 changes: 53 additions & 0 deletions lib/models/cron.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
'use strict';

const mongoose = require('mongoose');
const SchemaOptions = require('../options');
const errors = require('storj-service-error-types');

const CronJob = new mongoose.Schema({
name: {
type: String,
required: true,
unique: true,
index: true
},
locked: {
type: Boolean,
default: false
required: true
},
started: {
type: Date,
default: Date.now,
required: true
},
finished: {
type: Date,
default: Date.now,
required: true
},
data: {
type: String,
required: false
}
});

Partner.set('toObject', {
transform: function(doc, ret) {
ret.id = ret._id;
delete ret.__v;
delete ret._id;
}
});

Partner.set('toJSON', {
transform: function(doc, ret) {
ret.id = ret._id;
delete ret.__v;
delete ret._id;
}
});

module.exports = function(connection) {
return connection.model('CronJob', CronJob);
};
84 changes: 70 additions & 14 deletions lib/models/storage-event.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,99 @@
const mongoose = require('mongoose');
const utils = require('../utils');
/**
* Represents the history of storage related summary
* Represents the history of storage related summary
* statistics for buckets and their associated files
* @constructor
*/

var StorageEvent = new mongoose.Schema({
bucket: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Bucket',
required: true
},
bucketEntry: {
type: mongoose.Schema.Types.ObjectId,
ref: 'BucketEntry',
required: true
token: {
type: String,
required: false,
unique: true
},
user: {
type: String,
type: String,
ref: 'User',
required: true,
required: false,
validate: {
validator: value => utils.isValidEmail(value),
validator: value => utils.isValidEmail(value) || !value,
message: 'Invalid user email address'
}
},
client: {
type: String,
required: true
},
farmer: {
type: String,
required: true
},
timestamp: {
type: Date,
default: Date.now,
required: true
},
farmerEnd: {
type: Date,
required: false
},
userDeleted: {
type: Date,
required: false
},
downloadBandwidth: {
type: Number,
required: false
},
storage: {
type: Number,
type: Number,
required: false
},
shardHash: {
type: String,
required: false
},
clientReport: {
exchangeStart: {
type: Date,
required: false
},
exchangeEnd: {
type: Date,
required: false
},
exchangeResultCode: {
type: Number,
required: false
},
exchangeResultMessage: {
type: String,
required: false
}
},
farmerReport: {
exchangeStart: {
type: Date,
required: false
},
exchangeEnd: {
type: Date,
required: false
},
exchangeResultCode: {
type: Number,
required: false
},
exchangeResultMessage: {
type: String,
required: false
}
},
success: {
type: Boolean,
required: true,
default: false
}
});

Expand Down
23 changes: 14 additions & 9 deletions test/storage-event.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,27 @@ describe('Storage/models/Storage-Event', function() {

it('should create storage event with default props', function(done) {
var newStorageEvent = new StorageEvent({
bucket: mongoose.Types.ObjectId(),
bucketEntry: mongoose.Types.ObjectId(),
user: 'user@gmail.com',
downloadBandwidth: 0,
storage: 1000000,
farmer: 'c5857d99d3ff951701093b75fba94e1c82877f9b',
client: 'user@gmail.com'
});

newStorageEvent.save(function(err, storEvent) {
newStorageEvent.save(function(err, storeEvent) {
if (err) {
return done(err);
}
let ObjectIdType = mongoose.Types.ObjectId;
expect(err).to.not.be.an.instanceOf(Error);
expect(storEvent.bucket).to.be.an.instanceOf(ObjectIdType);
expect(storEvent.bucketEntry).to.be.an.instanceOf(ObjectIdType);
expect(storEvent.user).to.be.a('string');
expect(storEvent.timestamp).to.be.an.instanceOf(Date);
expect(storEvent.downloadBandwidth).to.be.a('number');
expect(storEvent.storage).to.be.a('number');
expect(storeEvent._id).to.be.instanceOf(ObjectIdType);
expect(storeEvent.user).to.be.a('string');
expect(storeEvent.timestamp).to.be.an.instanceOf(Date);
expect(storeEvent.downloadBandwidth).to.be.a('number');
expect(storeEvent.storage).to.be.a('number');
expect(storeEvent.farmer)
.to.equal('c5857d99d3ff951701093b75fba94e1c82877f9b');
expect(storeEvent.client).to.equal('user@gmail.com');
done();
});
});
Expand Down

0 comments on commit 2effb65

Please sign in to comment.