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(
|
||||
server._getDefaultBucket( quote_program, quote_data )
|
||||
)
|
||||
.setMetadata( quote_data.meta || {} )
|
||||
.setQuickSaveData( quote_data.quicksave || {} )
|
||||
.setAgentId( quote_data.agentId || agent_id )
|
||||
.setAgentName( quote_data.agentName || agent_name )
|
||||
|
|
|
@ -586,8 +586,11 @@ function createQuote( quote_id, program, request, callback, error_callback )
|
|||
}
|
||||
|
||||
var bucket = QuoteDataBucket(),
|
||||
metabucket = QuoteDataBucket(),
|
||||
quote = Quote( quote_id, bucket );
|
||||
|
||||
quote.setMetabucket( metabucket );
|
||||
|
||||
var controller = this;
|
||||
return server.initQuote( quote, program, request,
|
||||
function()
|
||||
|
|
|
@ -271,6 +271,11 @@ module.exports = Class( 'MongoServerDao' )
|
|||
/**
|
||||
* 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 Function success_callback function to call on success
|
||||
* @param Function failure_callback function to call if save fails
|
||||
|
@ -302,6 +307,9 @@ module.exports = Class( 'MongoServerDao' )
|
|||
save_data = {
|
||||
data: quote.getBucket().getData(),
|
||||
};
|
||||
|
||||
// full save will include all metadata
|
||||
save_data.meta = quote.getMetabucket().getData();
|
||||
}
|
||||
else if ( save_data.data !== undefined )
|
||||
{
|
||||
|
|
|
@ -211,7 +211,7 @@ module.exports = Class( 'ProcessManager',
|
|||
id: quote.getId(),
|
||||
agentId: quote.getAgentId(),
|
||||
agentName: quote.getAgentName(),
|
||||
data: quote.getBucket().getData(),
|
||||
data: this._genData( quote ),
|
||||
|
||||
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 )
|
||||
{
|
||||
var rqid = msg.rqid,
|
||||
|
|
Loading…
Reference in New Issue