Skip to content

Commit 43c7bf6

Browse files
committed
Fix associations for images and attributes
1 parent c05cd34 commit 43c7bf6

File tree

7 files changed

+17
-5
lines changed

7 files changed

+17
-5
lines changed

Modules/Sources/Storage/GRDB/Model/PersistedProduct.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ extension PersistedProduct: FetchableRecord, PersistableRecord {
7373
}
7474

7575
public static let images = hasMany(PersistedProductImage.self,
76-
using: ForeignKey(PersistedProductImage.primaryKey,
76+
using: ForeignKey([PersistedProductImage.CodingKeys.siteID.stringValue,
77+
PersistedProductImage.CodingKeys.productID.stringValue],
7778
to: primaryKey))
7879
public static let attributes = hasMany(PersistedProductAttribute.self,
7980
using: ForeignKey([PersistedProductAttribute.CodingKeys.siteID.stringValue,

Modules/Sources/Storage/GRDB/Model/PersistedProductAttribute.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public struct PersistedProductAttribute: Codable {
3535
extension PersistedProductAttribute: FetchableRecord, MutablePersistableRecord {
3636
public static var databaseTableName: String { "productAttribute" }
3737

38+
public static var primaryKey: [String] { [CodingKeys.id.stringValue] }
39+
3840
public enum Columns {
3941
public static let id = Column(CodingKeys.id)
4042
public static let siteID = Column(CodingKeys.siteID)
@@ -49,6 +51,8 @@ extension PersistedProductAttribute: FetchableRecord, MutablePersistableRecord {
4951
public mutating func didInsert(_ inserted: InsertionSuccess) {
5052
id = inserted.rowID
5153
}
54+
55+
public static let product = belongsTo(PersistedProduct.self)
5256
}
5357

5458

Modules/Sources/Storage/GRDB/Model/PersistedProductImage.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ extension PersistedProductImage: FetchableRecord, PersistableRecord {
5151

5252

5353
// periphery:ignore - TODO: remove ignore when populating database
54-
private extension PersistedProductImage {
54+
extension PersistedProductImage {
5555
enum CodingKeys: String, CodingKey {
5656
case siteID
5757
case id

Modules/Sources/Storage/GRDB/Model/PersistedProductVariation.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,14 @@ extension PersistedProductVariation: FetchableRecord, PersistableRecord {
6161
}
6262

6363
public static let attributes = hasMany(PersistedProductVariationAttribute.self,
64+
key: "attributes",
6465
using: ForeignKey([PersistedProductVariationAttribute.CodingKeys.siteID.stringValue,
6566
PersistedProductVariationAttribute.CodingKeys.productVariationID.stringValue],
6667
to: primaryKey))
6768
public static let image = hasOne(PersistedProductVariationImage.self,
68-
using: ForeignKey(PersistedProductVariationImage.primaryKey,
69+
key: "image",
70+
using: ForeignKey([PersistedProductVariationImage.CodingKeys.siteID.stringValue,
71+
PersistedProductVariationImage.CodingKeys.productVariationID.stringValue],
6972
to: primaryKey))
7073
}
7174

Modules/Sources/Storage/GRDB/Model/PersistedProductVariationAttribute.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public struct PersistedProductVariationAttribute: Codable {
2727
extension PersistedProductVariationAttribute: FetchableRecord, MutablePersistableRecord {
2828
public static var databaseTableName: String { "productVariationAttribute" }
2929

30+
public static var primaryKey: [String] { [CodingKeys.id.stringValue] }
31+
3032
public enum Columns {
3133
public static let id = Column(CodingKeys.id)
3234
public static let siteID = Column(CodingKeys.siteID)
@@ -38,6 +40,8 @@ extension PersistedProductVariationAttribute: FetchableRecord, MutablePersistabl
3840
public mutating func didInsert(_ inserted: InsertionSuccess) {
3941
id = inserted.rowID
4042
}
43+
44+
public static let variation = belongsTo(PersistedProductVariation.self)
4145
}
4246

4347

Modules/Sources/Storage/GRDB/Model/PersistedProductVariationImage.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ extension PersistedProductVariationImage: FetchableRecord, PersistableRecord {
5151

5252

5353
// periphery:ignore - TODO: remove ignore when populating database
54-
private extension PersistedProductVariationImage {
54+
extension PersistedProductVariationImage {
5555
enum CodingKeys: String, CodingKey {
5656
case siteID
5757
case id

Modules/Tests/YosemiteTests/Storage/PersistedProductTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ struct PersistedProductTests {
386386
try posProduct.save(to: db)
387387

388388
let fetchedProduct = try db.read { db in
389-
try PersistedProduct.filter(PersistedProduct.Columns.id == 123).fetchOne(db)
389+
try PersistedProduct.filter { $0.siteID == 1 && $0.id == 123 }.fetchOne(db)
390390
}
391391
let product = try #require(fetchedProduct)
392392
let loadedPOSProduct = try product.toPOSProduct(db: db)

0 commit comments

Comments
 (0)