diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index cdfb0b7..f460c70 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -15,10 +15,10 @@ 18166889232B9ED80097C275 /* String+KeyPaths.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51B5C2A22D43931009FA3BA /* String+KeyPaths.swift */; }; 2F03A53619C5C6DA005002A5 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2F03A54D19C5C872005002A5 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F03A54C19C5C872005002A5 /* CoreData.framework */; }; - 53EB03E62A3AD5D400179430 /* OperatorDeclaration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* OperatorDeclaration.swift */; }; - 53EB03E72A3AD5D400179430 /* OperatorDeclaration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* OperatorDeclaration.swift */; }; - 53EB03E82A3AD5D400179430 /* OperatorDeclaration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* OperatorDeclaration.swift */; }; - 53EB03E92A3AD5D400179430 /* OperatorDeclaration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* OperatorDeclaration.swift */; }; + 53EB03E62A3AD5D400179430 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* Operators.swift */; }; + 53EB03E72A3AD5D400179430 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* Operators.swift */; }; + 53EB03E82A3AD5D400179430 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* Operators.swift */; }; + 53EB03E92A3AD5D400179430 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EB03E52A3AD5D400179430 /* Operators.swift */; }; 82BA18931C4BBCBA00A0916E /* CoreStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18891C4BBCBA00A0916E /* CoreStore.framework */; }; 82BA18A01C4BBD1400A0916E /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 82BA18A21C4BBD1D00A0916E /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; @@ -882,7 +882,7 @@ 2F03A53B19C5C6DA005002A5 /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 2F03A53E19C5C6DA005002A5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2F03A54C19C5C872005002A5 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 53EB03E52A3AD5D400179430 /* OperatorDeclaration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperatorDeclaration.swift; sourceTree = ""; }; + 53EB03E52A3AD5D400179430 /* Operators.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Operators.swift; sourceTree = ""; }; 82BA18891C4BBCBA00A0916E /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 82BA18921C4BBCBA00A0916E /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 82BA18DE1C4BBE2600A0916E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -1456,7 +1456,7 @@ B52F742E1E9B50D0005F3DAC /* SchemaHistory.swift */, B5D339E61E9493A500C880DE /* Entity.swift */, B5A991EB1E9DC2CE0091A2E3 /* VersionLock.swift */, - 53EB03E52A3AD5D400179430 /* OperatorDeclaration.swift */, + 53EB03E52A3AD5D400179430 /* Operators.swift */, ); name = "Dynamic Models"; sourceTree = ""; @@ -2177,7 +2177,7 @@ B5F9C093287849E0007AAD2E /* DataStack+Concurrency.swift in Sources */, B5BF7FC6234D7E460070E741 /* ObjectSnapshot.swift in Sources */, B5E84EF71AFF846E0064E85B /* UnsafeDataTransaction.swift in Sources */, - 53EB03E62A3AD5D400179430 /* OperatorDeclaration.swift in Sources */, + 53EB03E62A3AD5D400179430 /* Operators.swift in Sources */, B56964D41B22FFAD0075EE4A /* DataStack+Migration.swift in Sources */, B5D339DD1E9489C700C880DE /* DynamicObject.swift in Sources */, B50C3EE523D153EA00B29880 /* Field.Coded.swift in Sources */, @@ -2394,7 +2394,7 @@ B5F9C094287849E0007AAD2E /* DataStack+Concurrency.swift in Sources */, 82BA18AC1C4BBD3100A0916E /* SynchronousDataTransaction.swift in Sources */, B50C3EE623D153EA00B29880 /* Field.Coded.swift in Sources */, - 53EB03E72A3AD5D400179430 /* OperatorDeclaration.swift in Sources */, + 53EB03E72A3AD5D400179430 /* Operators.swift in Sources */, 82BA18C41C4BBD5300A0916E /* ListMonitor.swift in Sources */, B5215CAA1FA4810300139E3A /* QueryChainBuilder.swift in Sources */, B50E175823517DE4004F033C /* Differentiable.swift in Sources */, @@ -2646,7 +2646,7 @@ B5F9C096287849E0007AAD2E /* DataStack+Concurrency.swift in Sources */, B5D339EF1E9495E500C880DE /* CoreStoreObject+Querying.swift in Sources */, B52DD19F1BE1F92C00949AFE /* SynchronousDataTransaction.swift in Sources */, - 53EB03E92A3AD5D400179430 /* OperatorDeclaration.swift in Sources */, + 53EB03E92A3AD5D400179430 /* Operators.swift in Sources */, B52DD1CB1BE1F94600949AFE /* Internals.WeakObject.swift in Sources */, B5220E1A1D130791009BC71E /* Internals.CoreStoreFetchedResultsController.swift in Sources */, B5215CAC1FA4810300139E3A /* QueryChainBuilder.swift in Sources */, @@ -2863,7 +2863,7 @@ B5F9C095287849E0007AAD2E /* DataStack+Concurrency.swift in Sources */, B56321991BD65216006C9394 /* OrderBy.swift in Sources */, B50C3EE723D153EA00B29880 /* Field.Coded.swift in Sources */, - 53EB03E82A3AD5D400179430 /* OperatorDeclaration.swift in Sources */, + 53EB03E82A3AD5D400179430 /* Operators.swift in Sources */, B5D339EE1E9495E500C880DE /* CoreStoreObject+Querying.swift in Sources */, B56321A51BD65216006C9394 /* MigrationChain.swift in Sources */, B56321A21BD65216006C9394 /* ListObserver.swift in Sources */, diff --git a/Sources/OperatorDeclaration.swift b/Sources/OperatorDeclaration.swift deleted file mode 100644 index fcd9cd4..0000000 --- a/Sources/OperatorDeclaration.swift +++ /dev/null @@ -1,10 +0,0 @@ -// -// OperatorDeclaration.swift -// CoreStore -// -// Created by JCSooHwanCho on 2023/06/15. -// Copyright © 2023 John Rommel Estropia. All rights reserved. -// - -infix operator .= : AssignmentPrecedence -infix operator .== : ComparisonPrecedence diff --git a/Sources/Operators.swift b/Sources/Operators.swift new file mode 100644 index 0000000..e3e1e76 --- /dev/null +++ b/Sources/Operators.swift @@ -0,0 +1,47 @@ +// +// Operators.swift +// CoreStore +// +// Copyright © 2023 John Rommel Estropia +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + + +infix operator .= : AssignmentPrecedence +infix operator .== : ComparisonPrecedence + + +infix operator &&? : LogicalConjunctionPrecedence +infix operator ||? : LogicalConjunctionPrecedence + + +// MARK: - ~ + +/** + Connects multiple `KeyPathStringConvertible`s to create a type-safe chain usable in query/fetch expressions +``` +let owner = dataStack.fetchOne( + From().where( + (\.master ~ \.name) == "John" + ) +) +``` + */ +infix operator ~ : AdditionPrecedence diff --git a/Sources/Where.Expression.swift b/Sources/Where.Expression.swift index 8c0a0e7..4f8b06b 100644 --- a/Sources/Where.Expression.swift +++ b/Sources/Where.Expression.swift @@ -27,21 +27,6 @@ import Foundation import CoreData -// MARK: - ~ - -/** - Connects multiple `KeyPathStringConvertible`s to create a type-safe chain usable in query/fetch expressions -``` -let owner = dataStack.fetchOne( - From().where( - (\.master ~ \.name) == "John" - ) -) -``` - */ -infix operator ~ : AdditionPrecedence - - // MARK: - WhereExpressionTrait /** diff --git a/Sources/Where.swift b/Sources/Where.swift index 6be2910..dd0f9cf 100644 --- a/Sources/Where.swift +++ b/Sources/Where.swift @@ -27,10 +27,6 @@ import Foundation import CoreData -infix operator &&? : LogicalConjunctionPrecedence -infix operator ||? : LogicalConjunctionPrecedence - - // MARK: - Where /**