func (api *API) ServeV1WriteNQuad(w http.ResponseWriter, r *http.Request, params httprouter.Params) int { if api.config.ReadOnly { return jsonResponse(w, 400, "Database is read-only.") } formFile, _, err := r.FormFile("NQuadFile") if err != nil { glog.Errorln(err) return jsonResponse(w, 500, "Couldn't read file: "+err.Error()) } defer formFile.Close() blockSize, blockErr := strconv.ParseInt(r.URL.Query().Get("block_size"), 10, 64) if blockErr != nil { blockSize = int64(api.config.LoadSize) } quadReader, err := internal.Decompressor(formFile) // TODO(kortschak) Make this configurable from the web UI. dec := cquads.NewDecoder(quadReader) h, err := api.GetHandleForRequest(r) if err != nil { return jsonResponse(w, 400, err) } n, err := quad.CopyBatch(h, dec, int(blockSize)) if err != nil { return jsonResponse(w, 400, err) } fmt.Fprintf(w, "{\"result\": \"Successfully wrote %d quads.\"}", n) return 200 }
func Load(qw graph.QuadWriter, cfg *config.Config, dec quad.Reader) error { _, err := quad.CopyBatch(&batchLogger{BatchWriter: qw}, dec, cfg.LoadSize) return err }