Process metadata and provide to rate process
Prefixes with "meta:". * src/server/Server.js (initQuote): Initialze metadata to empty. * src/server/daemon/controller.js (createQuote): Add metabucket. * src/server/db/MongoServerDao.js (saveQuote): Add additional documentation to docblock. Save all metadata if no bucket data provided (which indicates a full quote save). This happens on version change. * src/server/rater/ProcessManager.js (_genData): Add method to merge metadata into bucket data with "meta:" prefix. (byId): Use merged data.master
parent
22c3a21cdf
commit
2eacd310b2
|
@ -311,6 +311,7 @@ module.exports = Class( 'Server' )
|
||||||
.setData(
|
.setData(
|
||||||
server._getDefaultBucket( quote_program, quote_data )
|
server._getDefaultBucket( quote_program, quote_data )
|
||||||
)
|
)
|
||||||
|
.setMetadata( quote_data.meta || {} )
|
||||||
.setQuickSaveData( quote_data.quicksave || {} )
|
.setQuickSaveData( quote_data.quicksave || {} )
|
||||||
.setAgentId( quote_data.agentId || agent_id )
|
.setAgentId( quote_data.agentId || agent_id )
|
||||||
.setAgentName( quote_data.agentName || agent_name )
|
.setAgentName( quote_data.agentName || agent_name )
|
||||||
|
|
|
@ -585,8 +585,11 @@ function createQuote( quote_id, program, request, callback, error_callback )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
var bucket = QuoteDataBucket(),
|
var bucket = QuoteDataBucket(),
|
||||||
quote = Quote( quote_id, bucket );
|
metabucket = QuoteDataBucket(),
|
||||||
|
quote = Quote( quote_id, bucket );
|
||||||
|
|
||||||
|
quote.setMetabucket( metabucket );
|
||||||
|
|
||||||
var controller = this;
|
var controller = this;
|
||||||
return server.initQuote( quote, program, request,
|
return server.initQuote( quote, program, request,
|
||||||
|
|
|
@ -271,6 +271,11 @@ module.exports = Class( 'MongoServerDao' )
|
||||||
/**
|
/**
|
||||||
* Saves a quote to the database
|
* Saves a quote to the database
|
||||||
*
|
*
|
||||||
|
* A full save will include all metadata. This should not cause any
|
||||||
|
* problems with race conditions for pending Data API calls on meta
|
||||||
|
* fields because those results write to individual indexes and do not
|
||||||
|
* rely on existing data.
|
||||||
|
*
|
||||||
* @param Quote quote the quote to save
|
* @param Quote quote the quote to save
|
||||||
* @param Function success_callback function to call on success
|
* @param Function success_callback function to call on success
|
||||||
* @param Function failure_callback function to call if save fails
|
* @param Function failure_callback function to call if save fails
|
||||||
|
@ -302,6 +307,9 @@ module.exports = Class( 'MongoServerDao' )
|
||||||
save_data = {
|
save_data = {
|
||||||
data: quote.getBucket().getData(),
|
data: quote.getBucket().getData(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// full save will include all metadata
|
||||||
|
save_data.meta = quote.getMetabucket().getData();
|
||||||
}
|
}
|
||||||
else if ( save_data.data !== undefined )
|
else if ( save_data.data !== undefined )
|
||||||
{
|
{
|
||||||
|
|
|
@ -211,7 +211,7 @@ module.exports = Class( 'ProcessManager',
|
||||||
id: quote.getId(),
|
id: quote.getId(),
|
||||||
agentId: quote.getAgentId(),
|
agentId: quote.getAgentId(),
|
||||||
agentName: quote.getAgentName(),
|
agentName: quote.getAgentName(),
|
||||||
data: quote.getBucket().getData(),
|
data: this._genData( quote ),
|
||||||
|
|
||||||
creditScoreRef: quote.getCreditScoreRef(),
|
creditScoreRef: quote.getCreditScoreRef(),
|
||||||
},
|
},
|
||||||
|
@ -223,6 +223,31 @@ module.exports = Class( 'ProcessManager',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate data to provide to rater
|
||||||
|
*
|
||||||
|
* Bucket data is used as-is. Metadata are merged with a "meta:" prefix.
|
||||||
|
*
|
||||||
|
* @param {ServerSideQuote} quote source quote
|
||||||
|
*
|
||||||
|
* @return {Object} merged data
|
||||||
|
*/
|
||||||
|
'private _genData'( quote )
|
||||||
|
{
|
||||||
|
const dest = {};
|
||||||
|
const metadata = quote.getMetabucket().getData();
|
||||||
|
|
||||||
|
Object.assign( dest, quote.getBucket().getData() );
|
||||||
|
|
||||||
|
for ( let key in metadata )
|
||||||
|
{
|
||||||
|
dest[ 'meta:' + key ] = metadata[ key ];
|
||||||
|
}
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
'private _rateReply'( msg, errc )
|
'private _rateReply'( msg, errc )
|
||||||
{
|
{
|
||||||
var rqid = msg.rqid,
|
var rqid = msg.rqid,
|
||||||
|
|
Loading…
Reference in New Issue