@@ -153,6 +153,35 @@ ArchiveStore.prototype.getBlockRecord = function(blockNum) {
153153 } ;
154154} ;
155155
156+ ArchiveStore . prototype . eventKey = function ( event ) {
157+ return [ event . blockNum , event . txIndex , event . opIndex , event . protocol , event . type , event . sender || event . account || '' ] . join ( ':' ) ;
158+ } ;
159+
160+ ArchiveStore . prototype . _thinBlock = function ( block , events ) {
161+ var thin = {
162+ previous : block && ( block . previous || block . previous_block_id || '' ) || '' ,
163+ timestamp : block && block . timestamp || '' ,
164+ block_id : block && ( block . block_id || block . id || '' ) || '' ,
165+ transactions : [ ]
166+ } ;
167+ var byTx = { } ;
168+ events = events || [ ] ;
169+ for ( var i = 0 ; i < events . length ; i += 1 ) {
170+ var ev = events [ i ] ;
171+ var txIndex = Number ( ev . txIndex ) || 0 ;
172+ if ( ! byTx [ txIndex ] ) {
173+ byTx [ txIndex ] = { operations : [ ] } ;
174+ thin . transactions . push ( byTx [ txIndex ] ) ;
175+ }
176+ if ( ev . opType === 'custom' ) {
177+ byTx [ txIndex ] . operations . push ( [ 'custom' , ev . raw || { } ] ) ;
178+ } else if ( ev . opType === 'award' ) {
179+ byTx [ txIndex ] . operations . push ( [ 'award' , ev . raw || { } ] ) ;
180+ }
181+ }
182+ return thin ;
183+ } ;
184+
156185ArchiveStore . prototype . putBlock = function ( blockNum , block , sourceNode , events ) {
157186 var now = new Date ( ) . toISOString ( ) ;
158187 var bn = Number ( blockNum ) ;
@@ -163,21 +192,18 @@ ArchiveStore.prototype.putBlock = function(blockNum, block, sourceNode, events)
163192 try {
164193 this . db . prepare ( 'DELETE FROM event_accounts WHERE block_num = ?' ) . run ( bn ) ;
165194 this . db . prepare ( 'DELETE FROM events WHERE block_num = ?' ) . run ( bn ) ;
195+ var storedBlock = this . _thinBlock ( block , events || [ ] ) ;
166196 this . db . prepare ( [
167197 'INSERT OR REPLACE INTO blocks(block_num, block_id, previous, timestamp, source_node, indexed_at, event_count, raw_json)' ,
168198 'VALUES(?, ?, ?, ?, ?, ?, ?, ?)'
169- ] . join ( ' ' ) ) . run ( bn , blockId , previous , timestamp , sourceNode || '' , now , events ? events . length : 0 , JSON . stringify ( block || { } ) ) ;
199+ ] . join ( ' ' ) ) . run ( bn , blockId , previous , timestamp , sourceNode || '' , now , events ? events . length : 0 , JSON . stringify ( storedBlock ) ) ;
170200 this . db . exec ( 'COMMIT' ) ;
171201 } catch ( err ) {
172202 this . db . exec ( 'ROLLBACK' ) ;
173203 throw err ;
174204 }
175205} ;
176206
177- ArchiveStore . prototype . eventKey = function ( event ) {
178- return [ event . blockNum , event . txIndex , event . opIndex , event . protocol , event . type , event . sender || event . account || '' ] . join ( ':' ) ;
179- } ;
180-
181207ArchiveStore . prototype . putEventsForBlock = function ( events ) {
182208 var insertEvent = this . db . prepare ( [
183209 'INSERT OR REPLACE INTO events(id, block_num, block_id, previous, timestamp, tx_index, op_index, op_type, protocol, type, sender, account, accounts_json, payload_json, raw_json)' ,
0 commit comments