MCPcopy Index your code
hub / github.com/dgraph-io/dgraph / WriteExport

Function WriteExport

worker/export.go:698–742  ·  view source on GitHub ↗
(writers *Writers, kv *bpb.KV, format string)

Source from the content-addressed store, hash-verified

696}
697
698func WriteExport(writers *Writers, kv *bpb.KV, format string) error {
699 // Skip nodes that have no data. Otherwise, the exported data could have
700 // formatting and/or syntax errors.
701 if len(kv.Value) == 0 {
702 return nil
703 }
704
705 var dataSeparator []byte
706 switch format {
707 case "json":
708 dataSeparator = []byte(",\n")
709 case "rdf":
710 // The separator for RDF should be empty since the toRDF function already
711 // adds newline to each RDF entry.
712 default:
713 glog.Fatalf("Invalid export format found: %s", format)
714 }
715
716 var writer *ExportWriter
717 var sep []byte
718 switch kv.Version {
719 case 1: // data
720 writer = writers.DataWriter
721 sep = dataSeparator
722 case 2: // graphQL schema
723 writer = writers.GqlSchemaWriter
724 sep = []byte(",\n") // use json separator.
725 case 3: // graphQL schema
726 writer = writers.SchemaWriter
727 default:
728 glog.Fatalf("Invalid data type found: %x", kv.Key)
729 }
730
731 if writer.hasDataBefore {
732 if _, err := writer.gw.Write(sep); err != nil {
733 return err
734 }
735 }
736 // change the hasDataBefore flag so that the next data entry will have a separator
737 // prepended
738 writer.hasDataBefore = true
739
740 _, err := writer.gw.Write(kv.Value)
741 return err
742}
743
744type Writers struct {
745 DataWriter *ExportWriter

Callers 3

exportSchemaFunction · 0.92
WriteMethod · 0.92
exportInternalFunction · 0.85

Calls 2

FatalfMethod · 0.80
WriteMethod · 0.65

Tested by

no test coverage detected