// This function is used to run mutations for the requests received from the // http client. func mutationHandler(ctx context.Context, mu *gql.Mutation) (map[string]uint64, error) { var set []rdf.NQuad var del []rdf.NQuad var allocIds map[string]uint64 var err error if len(mu.Set) > 0 { if set, err = convertToNQuad(ctx, mu.Set); err != nil { return nil, x.Wrap(err) } } if len(mu.Del) > 0 { if del, err = convertToNQuad(ctx, mu.Del); err != nil { return nil, x.Wrap(err) } } if err = validateTypes(set); err != nil { return nil, x.Wrap(err) } if err = validateTypes(del); err != nil { return nil, x.Wrap(err) } if allocIds, err = convertAndApply(ctx, set, del); err != nil { return nil, err } return allocIds, nil }
// NewReadOnlyStore constructs a readonly Store object at filepath, given options. func NewReadOnlyStore(filepath string) (*Store, error) { s := &Store{} s.setOpts() var err error s.db, err = rdb.OpenDbForReadOnly(s.opt, filepath, false) return s, x.Wrap(err) }
// NewStore constructs a Store object at filepath, given some options. func NewStore(filepath string) (*Store, error) { s := &Store{} s.setOpts() var err error s.db, err = rdb.OpenDb(s.opt, filepath) return s, x.Wrap(err) }
func NewSyncStore(filepath string) (*Store, error) { s := &Store{} s.setOpts() s.wopt.SetSync(true) // Do synchronous writes. var err error s.db, err = rdb.OpenDb(s.opt, filepath) return s, x.Wrap(err) }
func convertAndApply(ctx context.Context, set []rdf.NQuad, del []rdf.NQuad) (map[string]uint64, error) { var allocIds map[string]uint64 var m task.Mutations var err error var mr mutationResult if *nomutations { return nil, fmt.Errorf("Mutations are forbidden on this server.") } if mr, err = convertToEdges(ctx, set); err != nil { return nil, err } m.Set, allocIds = mr.edges, mr.newUids if mr, err = convertToEdges(ctx, del); err != nil { return nil, err } m.Del = mr.edges if err := applyMutations(ctx, &m); err != nil { return nil, x.Wrap(err) } return allocIds, nil }
// WriteBatch does a batch write to RocksDB from the data in WriteBatch object. func (s *Store) WriteBatch(wb *rdb.WriteBatch) error { if err := s.db.Write(s.wopt, wb); err != nil { return x.Wrap(err) } return nil }