-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
writeRelayQueryPayload.js
45 lines (40 loc) · 1.19 KB
/
writeRelayQueryPayload.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* Copyright 2013-2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule writeRelayQueryPayload
* @flow
* @typechecks
*/
'use strict';
var RelayNodeInterface = require('RelayNodeInterface');
var RelayProfiler = require('RelayProfiler');
import type RelayQuery from 'RelayQuery';
var RelayQueryPath = require('RelayQueryPath');
import type RelayQueryWriter from 'RelayQueryWriter';
/**
* @internal
*
* Traverses a query and payload in parallel, writing the results into the
* store.
*/
function writeRelayQueryPayload(
writer: RelayQueryWriter,
query: RelayQuery.Root,
payload: {[key: string]: mixed}
): void {
var store = writer.getRecordStore();
var path = new RelayQueryPath(query);
RelayNodeInterface.getResultsFromPayload(store, query, payload)
.forEach(({dataID, result}) => {
writer.writePayload(query, dataID, result, path);
});
}
module.exports = RelayProfiler.instrument(
'writeRelayQueryPayload',
writeRelayQueryPayload
);