Skip to content

Commit

Permalink
Update "memory.go" and "memory_test.go" since filter fields are "enum…
Browse files Browse the repository at this point in the history
…" now
  • Loading branch information
rogerlucena committed Oct 2, 2020
1 parent 18b0380 commit 3102dcb
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 45 deletions.
30 changes: 15 additions & 15 deletions storage/memory/memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,8 @@ func (c *checker) CheckAndUpdate(p *predicate.Predicate) bool {

// latestFilter executes the latest filter operation over memoryTriples following filterOptions.
func latestFilter(memoryTriples map[string]*triple.Triple, pQuery *predicate.Predicate, filterOptions *filter.StorageOptions) (map[string]*triple.Triple, error) {
if filterOptions.Field != "predicate" && filterOptions.Field != "object" {
return nil, fmt.Errorf(`invalid field %q for "latest" filter operation, can accept only "predicate" or "object"`, filterOptions.Field)
if filterOptions.Field != filter.Predicate && filterOptions.Field != filter.Object {
return nil, fmt.Errorf(`invalid field %q for %q filter operation, can accept only %q or %q`, filterOptions.Field, filter.Latest, filter.Predicate, filter.Object)
}

lastTA := make(map[string]*time.Time)
Expand All @@ -289,9 +289,9 @@ func latestFilter(memoryTriples map[string]*triple.Triple, pQuery *predicate.Pre
}

var p *predicate.Predicate
if filterOptions.Field == "predicate" {
if filterOptions.Field == filter.Predicate {
p = t.Predicate()
} else if pObj, err := t.Object().Predicate(); filterOptions.Field == "object" && err == nil {
} else if pObj, err := t.Object().Predicate(); filterOptions.Field == filter.Object && err == nil {
p = pObj
} else {
continue
Expand Down Expand Up @@ -352,7 +352,7 @@ func (m *memory) Objects(ctx context.Context, s *node.Node, p *predicate.Predica
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -401,7 +401,7 @@ func (m *memory) Subjects(ctx context.Context, p *predicate.Predicate, o *triple
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -450,7 +450,7 @@ func (m *memory) PredicatesForSubjectAndObject(ctx context.Context, s *node.Node
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -497,7 +497,7 @@ func (m *memory) PredicatesForSubject(ctx context.Context, s *node.Node, lo *sto
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -544,7 +544,7 @@ func (m *memory) PredicatesForObject(ctx context.Context, o *triple.Object, lo *
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -591,7 +591,7 @@ func (m *memory) TriplesForSubject(ctx context.Context, s *node.Node, lo *storag
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -638,7 +638,7 @@ func (m *memory) TriplesForPredicate(ctx context.Context, p *predicate.Predicate
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -685,7 +685,7 @@ func (m *memory) TriplesForObject(ctx context.Context, o *triple.Object, lo *sto
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -734,7 +734,7 @@ func (m *memory) TriplesForSubjectAndPredicate(ctx context.Context, s *node.Node
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -783,7 +783,7 @@ func (m *memory) TriplesForPredicateAndObject(ctx context.Context, p *predicate.
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down Expand Up @@ -838,7 +838,7 @@ func (m *memory) Triples(ctx context.Context, lo *storage.LookupOptions, trpls c
}
lo.FilterOptions = &filter.StorageOptions{
Operation: filter.Latest,
Field: "predicate",
Field: filter.Predicate,
}
// To guarantee that "lo.FilterOptions" will be cleaned at the driver level, since it was artificially created at the driver level for "LatestAnchor".
defer func() {
Expand Down
60 changes: 30 additions & 30 deletions storage/memory/memory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,19 +331,19 @@ func TestObjectsFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
p: testutil.MustBuildPredicate(t, `"meet"@[2012-04-10T04:21:00Z]`),
want: map[string]int{"/u<mary>": 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
p: testutil.MustBuildPredicate(t, `"meet"@[2014-04-10T04:21:00Z]`),
want: map[string]int{"/u<mary>": 1, "/u<bob>": 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
s: testutil.MustBuildNodeFromStrings(t, "/_", "bn"),
p: testutil.MustBuildPredicate(t, `"_predicate"@[]`),
want: map[string]int{`"meet"@[2021-04-10T04:21:00Z]`: 1},
Expand Down Expand Up @@ -443,19 +443,19 @@ func TestSubjectsFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
p: testutil.MustBuildPredicate(t, `"meet"@[2012-04-10T04:21:00Z]`),
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{"/u<john>": 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
p: testutil.MustBuildPredicate(t, `"meet"@[2014-04-10T04:21:00Z]`),
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{"/u<john>": 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
p: testutil.MustBuildPredicate(t, `"_predicate"@[]`),
o: triple.NewPredicateObject(testutil.MustBuildPredicate(t, `"meet"@[2020-04-10T04:21:00Z]`)),
want: map[string]int{"/_<bn>": 1},
Expand Down Expand Up @@ -553,19 +553,19 @@ func TestPredicatesForSubjectAndObjectFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{`"meet"@[2014-04-10T04:21:00Z]`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "bob")),
want: map[string]int{`"meet"@[2014-04-10T04:21:00Z]`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
s: testutil.MustBuildNodeFromStrings(t, "/_", "bn"),
o: triple.NewPredicateObject(testutil.MustBuildPredicate(t, `"meet"@[2020-04-10T04:21:00Z]`)),
want: map[string]int{`"_predicate"@[]`: 1},
Expand Down Expand Up @@ -662,12 +662,12 @@ func TestPredicatesForSubjectFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
want: map[string]int{`"meet"@[2014-04-10T04:21:00Z]`: 2},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
s: testutil.MustBuildNodeFromStrings(t, "/_", "bn"),
want: map[string]int{`"_predicate"@[]`: 1},
},
Expand Down Expand Up @@ -762,17 +762,17 @@ func TestPredicatesForObjectFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{`"meet"@[2014-04-10T04:21:00Z]`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "bob")),
want: map[string]int{`"meet"@[2014-04-10T04:21:00Z]`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
o: triple.NewPredicateObject(testutil.MustBuildPredicate(t, `"meet"@[2020-04-10T04:21:00Z]`)),
want: map[string]int{`"_predicate"@[]`: 1},
},
Expand Down Expand Up @@ -864,12 +864,12 @@ func TestTriplesForSubjectFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<mary>`: 1, `/u<john> "meet"@[2014-04-10T04:21:00Z] /u<bob>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
s: testutil.MustBuildNodeFromStrings(t, "/_", "bn"),
want: map[string]int{`/_<bn> "_predicate"@[] "meet"@[2021-04-10T04:21:00Z]`: 1},
},
Expand Down Expand Up @@ -961,17 +961,17 @@ func TestTriplesForPredicateFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
p: testutil.MustBuildPredicate(t, `"meet"@[2012-04-10T04:21:00Z]`),
want: map[string]int{`/u<john> "meet"@[2012-04-10T04:21:00Z] /u<mary>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
p: testutil.MustBuildPredicate(t, `"meet"@[2014-04-10T04:21:00Z]`),
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<mary>`: 1, `/u<john> "meet"@[2014-04-10T04:21:00Z] /u<bob>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
p: testutil.MustBuildPredicate(t, `"_predicate"@[]`),
want: map[string]int{`/_<bn> "_predicate"@[] "meet"@[2021-04-10T04:21:00Z]`: 1},
},
Expand Down Expand Up @@ -1063,17 +1063,17 @@ func TestTriplesForObjectFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<mary>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "bob")),
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<bob>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
o: triple.NewPredicateObject(testutil.MustBuildPredicate(t, `"meet"@[2020-04-10T04:21:00Z]`)),
want: map[string]int{`/_<bn> "_predicate"@[] "meet"@[2020-04-10T04:21:00Z]`: 1},
},
Expand Down Expand Up @@ -1209,19 +1209,19 @@ func TestTriplesForSubjectAndPredicateFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
p: testutil.MustBuildPredicate(t, `"meet"@[2012-04-10T04:21:00Z]`),
want: map[string]int{`/u<john> "meet"@[2012-04-10T04:21:00Z] /u<mary>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
s: testutil.MustBuildNodeFromStrings(t, "/u", "john"),
p: testutil.MustBuildPredicate(t, `"meet"@[2014-04-10T04:21:00Z]`),
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<mary>`: 1, `/u<john> "meet"@[2014-04-10T04:21:00Z] /u<bob>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
s: testutil.MustBuildNodeFromStrings(t, "/_", "bn"),
p: testutil.MustBuildPredicate(t, `"_predicate"@[]`),
want: map[string]int{`/_<bn> "_predicate"@[] "meet"@[2021-04-10T04:21:00Z]`: 1},
Expand Down Expand Up @@ -1316,19 +1316,19 @@ func TestTriplesForPredicateAndObjectFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
p: testutil.MustBuildPredicate(t, `"meet"@[2012-04-10T04:21:00Z]`),
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{`/u<john> "meet"@[2012-04-10T04:21:00Z] /u<mary>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
p: testutil.MustBuildPredicate(t, `"meet"@[2014-04-10T04:21:00Z]`),
o: triple.NewNodeObject(testutil.MustBuildNodeFromStrings(t, "/u", "mary")),
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<mary>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
p: testutil.MustBuildPredicate(t, `"_predicate"@[]`),
o: triple.NewPredicateObject(testutil.MustBuildPredicate(t, `"meet"@[2020-04-10T04:21:00Z]`)),
want: map[string]int{`/_<bn> "_predicate"@[] "meet"@[2020-04-10T04:21:00Z]`: 1},
Expand Down Expand Up @@ -1438,11 +1438,11 @@ func TestTriplesFilter(t *testing.T) {
want map[string]int
}{
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "predicate"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Predicate}},
want: map[string]int{`/u<john> "meet"@[2014-04-10T04:21:00Z] /u<mary>`: 1, `/u<john> "meet"@[2014-04-10T04:21:00Z] /u<bob>`: 1},
},
{
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: "object"}},
lo: &storage.LookupOptions{FilterOptions: &filter.StorageOptions{Operation: filter.Latest, Field: filter.Object}},
want: map[string]int{`/_<bn> "_predicate"@[] "meet"@[2021-04-10T04:21:00Z]`: 1},
},
}
Expand Down

0 comments on commit 3102dcb

Please sign in to comment.