Skip to content

Commit 597f68a

Browse files
committed
Cleanup fetch request accessors and rename RepoMovie to ManagedMovie
3.0-preview
1 parent be88b42 commit 597f68a

12 files changed

Lines changed: 157 additions & 177 deletions

File tree

Examples/Relationships/RelationshipsExample/RelationshipsExample/Document.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,6 @@ extension Document {
5050
}
5151
}
5252

53-
extension Document.Managed {
54-
static func fetchRequest() -> NSFetchRequest<Document.Managed> {
55-
let request = NSFetchRequest<Document.Managed>(entityName: "ManagedDocument")
56-
return request
57-
}
58-
}
59-
6053
extension Document.Managed {
6154
static var entityDescription: NSEntityDescription {
6255
let desc = NSEntityDescription()

Examples/Relationships/RelationshipsExample/RelationshipsExample/FileCabinet+Drawer.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,6 @@ extension FileCabinet.Drawer.Managed {
7676
@NSManaged public func removeDocuments(_ values: NSArray)
7777
}
7878

79-
extension FileCabinet.Drawer.Managed {
80-
static func fetchRequest() -> NSFetchRequest<FileCabinet.Drawer.Managed> {
81-
let request = NSFetchRequest<FileCabinet.Drawer.Managed>(entityName: "ManagedFileCabinetDrawer")
82-
return request
83-
}
84-
}
85-
8679
extension FileCabinet.Drawer.Managed {
8780
static var entityDescription: NSEntityDescription {
8881
let desc = NSEntityDescription()

Examples/Relationships/RelationshipsExample/RelationshipsExample/FileCabinet.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,6 @@ extension FileCabinet.Managed {
7474
@NSManaged public func removeDrawers(_ values: NSArray)
7575
}
7676

77-
extension FileCabinet.Managed {
78-
static func fetchRequest() -> NSFetchRequest<FileCabinet.Managed> {
79-
let request = NSFetchRequest<FileCabinet.Managed>(entityName: "ManagedFileCabinet")
80-
return request
81-
}
82-
}
83-
8477
extension FileCabinet.Managed {
8578
static var entityDescription: NSEntityDescription {
8679
let desc = NSEntityDescription()

Examples/Relationships/RelationshipsExample/RelationshipsExample/FileCabinetDetailView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ final class FileCabinetDetailViewModel {
9595
}
9696

9797
private static let fetchRequest: NSFetchRequest<FileCabinet.Managed> = {
98-
let request = FileCabinet.Managed.fetchRequest()
98+
let request = FileCabinet.managedFetchRequest()
9999
request.sortDescriptors = [NSSortDescriptor(keyPath: \(FileCabinet.Managed).id, ascending: true)]
100100
return request
101101
}()

Examples/Relationships/RelationshipsExample/RelationshipsExample/FileCabinetsView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ final class FileCabinetsViewModel {
106106
}
107107

108108
private static let fetchRequest: NSFetchRequest<FileCabinet.Managed> = {
109-
let request = FileCabinet.Managed.fetchRequest()
109+
let request = FileCabinet.managedFetchRequest()
110110
request.sortDescriptors = [NSSortDescriptor(keyPath: \(FileCabinet.Managed).id, ascending: true)]
111111
return request
112112
}()

README.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ There are two protocols that handle bridging between the value type and managed
4545
#### RepositoryManagedModel
4646

4747
```swift
48-
@objc(RepoMovie)
49-
public final class RepoMovie: NSManagedObject {
48+
@objc(ManagedMovie)
49+
public final class ManagedMovie: NSManagedObject {
5050
@NSManaged var id: UUID?
5151
@NSManaged var title: String?
5252
@NSManaged var releaseDate: Date?
5353
@NSManaged var boxOffice: NSDecimalNumber?
5454
}
5555

56-
extension RepoMovie: RepositoryManagedModel {
56+
extension ManagedMovie: RepositoryManagedModel {
5757
public func create(from unmanaged: Movie) {
5858
update(from: unmanaged)
5959
}
@@ -75,11 +75,6 @@ extension RepoMovie: RepositoryManagedModel {
7575
releaseDate = unmanaged.releaseDate
7676
boxOffice = NSDecimalNumber(decimal: unmanaged.boxOffice)
7777
}
78-
79-
static func fetchRequest() -> NSFetchRequest<RepoMovie> {
80-
let request = NSFetchRequest<RepoMovie>(entityName: "RepoMovie")
81-
return request
82-
}
8378
}
8479
```
8580

@@ -104,8 +99,8 @@ extension Movie: UnmanagedModel {
10499
}
105100
}
106101

107-
public func asManagedModel(in context: NSManagedObjectContext) -> RepoMovie {
108-
let object = RepoMovie(context: context)
102+
public func asManagedModel(in context: NSManagedObjectContext) -> ManagedMovie {
103+
let object = ManagedMovie(context: context)
109104
object.id = id
110105
object.title = title
111106
object.releaseDate = releaseDate
@@ -128,8 +123,8 @@ if case let .success(movie) = result {
128123
### Fetch
129124

130125
```swift
131-
let fetchRequest = NSFetchRequest<RepoMovie>(entityName: "RepoMovie")
132-
fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \RepoMovie.title, ascending: true)]
126+
let fetchRequest = Movie.managedFetchRequest
127+
fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \ManagedMovie.title, ascending: true)]
133128
fetchRequest.predicate = NSPredicate(value: true)
134129
let result: Result<[Movie], CoreDataError> = await repository.fetch(fetchRequest)
135130
if case let .success(movies) = result {
@@ -164,8 +159,8 @@ cancellable.cancel()
164159
```swift
165160
let result: Result<[[String: Decimal]], CoreDataError> = await repository.sum(
166161
predicate: NSPredicate(value: true),
167-
entityDesc: RepoMovie.entity(),
168-
attributeDesc: RepoMovie.entity().attributesByName.values.first(where: { $0.name == "boxOffice" })!
162+
entityDesc: ManagedMovie.entity(),
163+
attributeDesc: ManagedMovie.entity().attributesByName.values.first(where: { $0.name == "boxOffice" })!
169164
)
170165
if case let .success(values) = result {
171166
os_log("The sum of all movies' boxOffice is \(values.first!.values.first!)")
@@ -182,7 +177,7 @@ let movies: [[String: Any]] = [
182177
["id": UUID(), "title": "D", "releaseDate": Date()],
183178
["id": UUID(), "title": "E", "releaseDate": Date()]
184179
]
185-
let request = NSBatchInsertRequest(entityName: RepoMovie.entity().name!, objects: movies)
180+
let request = NSBatchInsertRequest(entityName: ManagedMovie.entity().name!, objects: movies)
186181
let result: Result<NSBatchInsertResult, CoreDataError> = await repository.insert(request)
187182

188183
```

Tests/CoreDataRepositoryTests/AggregateRepositoryTests.swift

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import CoreDataRepository
1111
import XCTest
1212

1313
final class AggregateRepositoryTests: CoreDataXCTestCase {
14-
let fetchRequest: NSFetchRequest<RepoMovie> = {
15-
let request = NSFetchRequest<RepoMovie>(entityName: "RepoMovie")
16-
request.sortDescriptors = [NSSortDescriptor(keyPath: \RepoMovie.title, ascending: true)]
14+
let fetchRequest: NSFetchRequest<ManagedMovie> = {
15+
let request = Movie.managedFetchRequest()
16+
request.sortDescriptors = [NSSortDescriptor(keyPath: \ManagedMovie.title, ascending: true)]
1717
return request
1818
}()
1919

@@ -42,7 +42,7 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
4242

4343
func testCountSuccess() async throws {
4444
let result = try await repository()
45-
.count(predicate: NSPredicate(value: true), entityDesc: RepoMovie.entity(), as: Int.self)
45+
.count(predicate: NSPredicate(value: true), entityDesc: ManagedMovie.entity(), as: Int.self)
4646
switch result {
4747
case let .success(value):
4848
XCTAssertEqual(value, 5, "Result value (count) should equal number of movies.")
@@ -55,7 +55,7 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
5555
let task = Task {
5656
var resultCount = 0
5757
let stream = try repository()
58-
.countSubscription(predicate: NSPredicate(value: true), entityDesc: RepoMovie.entity(), as: Int.self)
58+
.countSubscription(predicate: NSPredicate(value: true), entityDesc: ManagedMovie.entity(), as: Int.self)
5959
for await _count in stream {
6060
let count = try _count.get()
6161
resultCount += 1
@@ -85,7 +85,7 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
8585
let stream = try repository()
8686
.countThrowingSubscription(
8787
predicate: NSPredicate(value: true),
88-
entityDesc: RepoMovie.entity(),
88+
entityDesc: ManagedMovie.entity(),
8989
as: Int.self
9090
)
9191
for try await count in stream {
@@ -113,9 +113,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
113113
func testSumSuccess() async throws {
114114
let result = try await repository().sum(
115115
predicate: NSPredicate(value: true),
116-
entityDesc: RepoMovie.entity(),
116+
entityDesc: ManagedMovie.entity(),
117117
attributeDesc: XCTUnwrap(
118-
RepoMovie.entity().attributesByName.values
118+
ManagedMovie.entity().attributesByName.values
119119
.first(where: { $0.name == "boxOffice" })
120120
),
121121
as: Decimal.self
@@ -133,9 +133,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
133133
var resultCount = 0
134134
let stream = try repository().sumSubscription(
135135
predicate: NSPredicate(value: true),
136-
entityDesc: RepoMovie.entity(),
136+
entityDesc: ManagedMovie.entity(),
137137
attributeDesc: XCTUnwrap(
138-
RepoMovie.entity().attributesByName.values
138+
ManagedMovie.entity().attributesByName.values
139139
.first(where: { $0.name == "boxOffice" })
140140
),
141141
as: Decimal.self
@@ -168,9 +168,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
168168
var resultCount = 0
169169
let stream = try repository().sumThrowingSubscription(
170170
predicate: NSPredicate(value: true),
171-
entityDesc: RepoMovie.entity(),
171+
entityDesc: ManagedMovie.entity(),
172172
attributeDesc: XCTUnwrap(
173-
RepoMovie.entity().attributesByName.values
173+
ManagedMovie.entity().attributesByName.values
174174
.first(where: { $0.name == "boxOffice" })
175175
),
176176
as: Decimal.self
@@ -200,9 +200,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
200200
func testAverageSuccess() async throws {
201201
let result = try await repository().average(
202202
predicate: NSPredicate(value: true),
203-
entityDesc: RepoMovie.entity(),
203+
entityDesc: ManagedMovie.entity(),
204204
attributeDesc: XCTUnwrap(
205-
RepoMovie.entity().attributesByName.values
205+
ManagedMovie.entity().attributesByName.values
206206
.first(where: { $0.name == "boxOffice" })
207207
),
208208
as: Decimal.self
@@ -224,9 +224,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
224224
var resultCount = 0
225225
let stream = try repository().averageSubscription(
226226
predicate: NSPredicate(value: true),
227-
entityDesc: RepoMovie.entity(),
227+
entityDesc: ManagedMovie.entity(),
228228
attributeDesc: XCTUnwrap(
229-
RepoMovie.entity().attributesByName.values
229+
ManagedMovie.entity().attributesByName.values
230230
.first(where: { $0.name == "boxOffice" })
231231
),
232232
as: Decimal.self
@@ -263,9 +263,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
263263
var resultCount = 0
264264
let stream = try repository().averageThrowingSubscription(
265265
predicate: NSPredicate(value: true),
266-
entityDesc: RepoMovie.entity(),
266+
entityDesc: ManagedMovie.entity(),
267267
attributeDesc: XCTUnwrap(
268-
RepoMovie.entity().attributesByName.values
268+
ManagedMovie.entity().attributesByName.values
269269
.first(where: { $0.name == "boxOffice" })
270270
),
271271
as: Decimal.self
@@ -299,9 +299,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
299299
func testMinSuccess() async throws {
300300
let result = try await repository().min(
301301
predicate: NSPredicate(value: true),
302-
entityDesc: RepoMovie.entity(),
302+
entityDesc: ManagedMovie.entity(),
303303
attributeDesc: XCTUnwrap(
304-
RepoMovie.entity().attributesByName.values
304+
ManagedMovie.entity().attributesByName.values
305305
.first(where: { $0.name == "boxOffice" })
306306
),
307307
as: Decimal.self
@@ -323,9 +323,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
323323
var resultCount = 0
324324
let stream = try repository().minSubscription(
325325
predicate: NSPredicate(value: true),
326-
entityDesc: RepoMovie.entity(),
326+
entityDesc: ManagedMovie.entity(),
327327
attributeDesc: XCTUnwrap(
328-
RepoMovie.entity().attributesByName.values
328+
ManagedMovie.entity().attributesByName.values
329329
.first(where: { $0.name == "boxOffice" })
330330
),
331331
as: Decimal.self
@@ -358,9 +358,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
358358
var resultCount = 0
359359
let stream = try repository().minThrowingSubscription(
360360
predicate: NSPredicate(value: true),
361-
entityDesc: RepoMovie.entity(),
361+
entityDesc: ManagedMovie.entity(),
362362
attributeDesc: XCTUnwrap(
363-
RepoMovie.entity().attributesByName.values
363+
ManagedMovie.entity().attributesByName.values
364364
.first(where: { $0.name == "boxOffice" })
365365
),
366366
as: Decimal.self
@@ -390,9 +390,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
390390
func testMaxSuccess() async throws {
391391
let result = try await repository().max(
392392
predicate: NSPredicate(value: true),
393-
entityDesc: RepoMovie.entity(),
393+
entityDesc: ManagedMovie.entity(),
394394
attributeDesc: XCTUnwrap(
395-
RepoMovie.entity().attributesByName.values
395+
ManagedMovie.entity().attributesByName.values
396396
.first(where: { $0.name == "boxOffice" })
397397
),
398398
as: Decimal.self
@@ -414,9 +414,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
414414
var resultCount = 0
415415
let stream = try repository().maxSubscription(
416416
predicate: NSPredicate(value: true),
417-
entityDesc: RepoMovie.entity(),
417+
entityDesc: ManagedMovie.entity(),
418418
attributeDesc: XCTUnwrap(
419-
RepoMovie.entity().attributesByName.values
419+
ManagedMovie.entity().attributesByName.values
420420
.first(where: { $0.name == "boxOffice" })
421421
),
422422
as: Decimal.self
@@ -449,9 +449,9 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
449449
var resultCount = 0
450450
let stream = try repository().maxThrowingSubscription(
451451
predicate: NSPredicate(value: true),
452-
entityDesc: RepoMovie.entity(),
452+
entityDesc: ManagedMovie.entity(),
453453
attributeDesc: XCTUnwrap(
454-
RepoMovie.entity().attributesByName.values
454+
ManagedMovie.entity().attributesByName.values
455455
.first(where: { $0.name == "boxOffice" })
456456
),
457457
as: Decimal.self
@@ -482,12 +482,12 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
482482
let result = try await repository()
483483
.count(
484484
predicate: NSComparisonPredicate(
485-
leftExpression: NSExpression(forKeyPath: \RepoMovie.title),
485+
leftExpression: NSExpression(forKeyPath: \ManagedMovie.title),
486486
rightExpression: NSExpression(forConstantValue: "A"),
487487
modifier: .direct,
488488
type: .notEqualTo
489489
),
490-
entityDesc: RepoMovie.entity(),
490+
entityDesc: ManagedMovie.entity(),
491491
as: Int.self
492492
)
493493
switch result {
@@ -501,14 +501,14 @@ final class AggregateRepositoryTests: CoreDataXCTestCase {
501501
func testSumWithPredicate() async throws {
502502
let result = try await repository().sum(
503503
predicate: NSComparisonPredicate(
504-
leftExpression: NSExpression(forKeyPath: \RepoMovie.title),
504+
leftExpression: NSExpression(forKeyPath: \ManagedMovie.title),
505505
rightExpression: NSExpression(forConstantValue: "A"),
506506
modifier: .direct,
507507
type: .notEqualTo
508508
),
509-
entityDesc: RepoMovie.entity(),
509+
entityDesc: ManagedMovie.entity(),
510510
attributeDesc: XCTUnwrap(
511-
RepoMovie.entity().attributesByName.values
511+
ManagedMovie.entity().attributesByName.values
512512
.first(where: { $0.name == "boxOffice" })
513513
),
514514
as: Decimal.self

0 commit comments

Comments
 (0)