Skip to content

Commit

Permalink
Store some metadata in gridfs
Browse files Browse the repository at this point in the history
  • Loading branch information
jeroen committed Dec 7, 2024
1 parent d0b566b commit 3b9503b
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions routes/packages.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ function read_description(stream){
});
}

function store_stream_file(stream, key, filename){
function store_stream_file(stream, key, filename, metadata){
return new Promise(function(resolve, reject) {
var upload = bucket.openUploadStreamWithId(key, filename);
var upload = bucket.openUploadStreamWithId(key, filename, {metadata: metadata});
var hash = crypto.createHash('sha256');
var pipe = stream.on('data', data => hash.update(data)).pipe(upload);
pipe.on('error', function(err){
Expand Down Expand Up @@ -137,15 +137,15 @@ function store_stream_file(stream, key, filename){
});
}

function crandb_store_file(stream, key, filename){
function crandb_store_file(stream, key, filename, metadata){
return bucket.find({_id : key}, {limit:1}).next().then(function(x){
if(x){
/* Replace blob just in case the old one is corrupt */
console.log(`Already have file ${key} (${filename}). Deleting old one.`);
return bucket.delete(key);
}
}).then(function(){
return store_stream_file(stream, key, filename);
return store_stream_file(stream, key, filename, metadata);
});
}

Expand Down Expand Up @@ -351,7 +351,8 @@ router.put('/:user/packages/:package/:version/:type/:key', function(req, res, ne
var query = {_user : user, _type : type, Package : pkgname};
var builder = parse_builder_fields(req.headers) || {};
var filename = get_filename(pkgname, version, type, builder.distro);
return crandb_store_file(req, key, filename).then(function(filedata){
var metadata = {user: user, commit: builder.commit.id};
return crandb_store_file(req, key, filename, metadata).then(function(filedata){
if(type == 'src'){
var p1 = packages.countDocuments({_type: 'src', _indexed: true, '_rundeps': pkgname});
var p2 = extract_json_metadata(bucket.openDownloadStream(key), pkgname);
Expand Down Expand Up @@ -466,7 +467,8 @@ router.post('/:user/packages/:package/:version/:type', multerstore.fields([{ nam
var key = req.body.key;
var builder = parse_builder_fields(req.body);
var stream = fs.createReadStream(filepath);
return crandb_store_file(stream, key, filename).then(function(filedata){
var metadata = {user: user, commit: builder.commit.id};
return crandb_store_file(stream, key, filename, metadata).then(function(filedata){
if(type == 'src'){
var p1 = packages.countDocuments({_type: 'src', _indexed: true, '_rundeps': pkgname});
var p2 = extract_json_metadata(bucket.openDownloadStream(key), pkgname);
Expand Down

0 comments on commit 3b9503b

Please sign in to comment.