From 172290e32d062dc2f0625452d5232c6badf21759 Mon Sep 17 00:00:00 2001 From: Daniel Dahan Date: Sun, 13 Nov 2016 02:20:00 -0800 Subject: [PATCH] development: updated subject and object search for Relationship and Actions --- Sources/Action.swift | 8 ++++++-- Sources/Relationship.swift | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Sources/Action.swift b/Sources/Action.swift index 6c4d40e0..a742b8ae 100644 --- a/Sources/Action.swift +++ b/Sources/Action.swift @@ -581,7 +581,9 @@ extension Array where Element: Action { public func subject(types: [String]) -> [Entity] { var s = Set() forEach { [types = types] (a) in - s.insert(a.suject(types: types)) + a.subject(types: types).forEach { + s.insert($0) + } } return [Entity](s) } @@ -605,7 +607,9 @@ extension Array where Element: Action { public func object(types: [String]) -> [Entity] { var s = Set() forEach { [types = types] (a) in - s.insert(a.object(types: types)) + a.object(types: types).forEach { + s.insert($0) + } } return [Entity](s) } diff --git a/Sources/Relationship.swift b/Sources/Relationship.swift index c182bab8..8d4efcc7 100644 --- a/Sources/Relationship.swift +++ b/Sources/Relationship.swift @@ -448,7 +448,15 @@ extension Array where Element: Relationship { public func subject(types: [String]) -> [Entity] { var s = Set() forEach { [types = types] (r) in - s.insert(r.subject(types: types)) + guard let e = r.subject else { + return + } + + guard types.contains(e.type) else { + return + } + + s.insert(e) } return [Entity](s) } @@ -472,7 +480,15 @@ extension Array where Element: Relationship { public func object(types: [String]) -> [Entity] { var s = Set() forEach { [types = types] (r) in - s.insert(r.object(types: types)) + guard let e = r.subject else { + return + } + + guard types.contains(e.type) else { + return + } + + s.insert(e) } return [Entity](s) }