Skip to content

Commit d432ab2

Browse files
committed
Add persisted models
1 parent 906316b commit d432ab2

File tree

8 files changed

+402
-0
lines changed

8 files changed

+402
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedProduct: Codable {
5+
public let id: Int64
6+
public let siteID: Int64
7+
public let name: String
8+
public let productTypeKey: String
9+
public let fullDescription: String?
10+
public let shortDescription: String?
11+
public let sku: String?
12+
public let globalUniqueID: String?
13+
public let price: String
14+
public let downloadable: Bool
15+
public let parentID: Int64
16+
public let manageStock: Bool
17+
public let stockQuantity: Decimal?
18+
public let stockStatusKey: String
19+
20+
public init(id: Int64,
21+
siteID: Int64,
22+
name: String,
23+
productTypeKey: String,
24+
fullDescription: String?,
25+
shortDescription: String?,
26+
sku: String?,
27+
globalUniqueID: String?,
28+
price: String,
29+
downloadable: Bool,
30+
parentID: Int64,
31+
manageStock: Bool,
32+
stockQuantity: Decimal?,
33+
stockStatusKey: String) {
34+
self.id = id
35+
self.siteID = siteID
36+
self.name = name
37+
self.productTypeKey = productTypeKey
38+
self.fullDescription = fullDescription
39+
self.shortDescription = shortDescription
40+
self.sku = sku
41+
self.globalUniqueID = globalUniqueID
42+
self.price = price
43+
self.downloadable = downloadable
44+
self.parentID = parentID
45+
self.manageStock = manageStock
46+
self.stockQuantity = stockQuantity
47+
self.stockStatusKey = stockStatusKey
48+
}
49+
}
50+
51+
extension PersistedProduct: FetchableRecord, PersistableRecord {
52+
public static var databaseTableName: String { "product" }
53+
54+
public enum Columns {
55+
static let id = Column(CodingKeys.id)
56+
static let siteID = Column(CodingKeys.siteID)
57+
static let name = Column(CodingKeys.name)
58+
static let productTypeKey = Column(CodingKeys.productTypeKey)
59+
static let fullDescription = Column(CodingKeys.fullDescription)
60+
static let shortDescription = Column(CodingKeys.shortDescription)
61+
static let sku = Column(CodingKeys.sku)
62+
static let globalUniqueID = Column(CodingKeys.globalUniqueID)
63+
static let price = Column(CodingKeys.price)
64+
static let downloadable = Column(CodingKeys.downloadable)
65+
static let parentID = Column(CodingKeys.parentID)
66+
static let manageStock = Column(CodingKeys.manageStock)
67+
static let stockQuantity = Column(CodingKeys.stockQuantity)
68+
static let stockStatusKey = Column(CodingKeys.stockStatusKey)
69+
}
70+
}
71+
72+
private extension PersistedProduct {
73+
enum CodingKeys: String, CodingKey {
74+
case id
75+
case siteID
76+
case name
77+
case productTypeKey
78+
case fullDescription
79+
case shortDescription
80+
case sku
81+
case globalUniqueID
82+
case price
83+
case downloadable
84+
case parentID
85+
case manageStock
86+
case stockQuantity
87+
case stockStatusKey
88+
}
89+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedProductAttribute: Codable {
5+
public let id: Int64?
6+
public let productID: Int64
7+
public let name: String
8+
public let position: Int64
9+
public let visible: Bool
10+
public let variation: Bool
11+
public let options: [String]
12+
13+
public init(id: Int64? = nil,
14+
productID: Int64,
15+
name: String,
16+
position: Int64,
17+
visible: Bool,
18+
variation: Bool,
19+
options: [String]) {
20+
self.id = id
21+
self.productID = productID
22+
self.name = name
23+
self.position = position
24+
self.visible = visible
25+
self.variation = variation
26+
self.options = options
27+
}
28+
}
29+
30+
extension PersistedProductAttribute: FetchableRecord, PersistableRecord {
31+
public static var databaseTableName: String { "productAttribute" }
32+
33+
public enum Columns {
34+
static let id = Column(CodingKeys.id)
35+
static let productID = Column(CodingKeys.productID)
36+
static let name = Column(CodingKeys.name)
37+
static let position = Column(CodingKeys.position)
38+
static let visible = Column(CodingKeys.visible)
39+
static let variation = Column(CodingKeys.variation)
40+
static let options = Column(CodingKeys.options)
41+
}
42+
}
43+
44+
45+
private extension PersistedProductAttribute {
46+
enum CodingKeys: String, CodingKey {
47+
case id
48+
case productID
49+
case name
50+
case position
51+
case visible
52+
case variation
53+
case options
54+
}
55+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedProductImage: Codable {
5+
public let id: Int64
6+
public let productID: Int64
7+
public let dateCreated: Date
8+
public let dateModified: Date?
9+
public let src: String
10+
public let name: String?
11+
public let alt: String?
12+
13+
public init(id: Int64,
14+
productID: Int64,
15+
dateCreated: Date,
16+
dateModified: Date?,
17+
src: String,
18+
name: String?,
19+
alt: String?) {
20+
self.id = id
21+
self.productID = productID
22+
self.dateCreated = dateCreated
23+
self.dateModified = dateModified
24+
self.src = src
25+
self.name = name
26+
self.alt = alt
27+
}
28+
}
29+
30+
extension PersistedProductImage: FetchableRecord, PersistableRecord {
31+
public static var databaseTableName: String { "productImage" }
32+
33+
public enum Columns {
34+
static let id = Column(CodingKeys.id)
35+
static let productID = Column(CodingKeys.productID)
36+
static let dateCreated = Column(CodingKeys.dateCreated)
37+
static let dateModified = Column(CodingKeys.dateModified)
38+
static let src = Column(CodingKeys.src)
39+
static let name = Column(CodingKeys.name)
40+
static let alt = Column(CodingKeys.alt)
41+
}
42+
}
43+
44+
45+
private extension PersistedProductImage {
46+
enum CodingKeys: String, CodingKey {
47+
case id
48+
case productID
49+
case dateCreated
50+
case dateModified
51+
case src
52+
case name
53+
case alt
54+
}
55+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedProductVariation: Codable {
5+
public let id: Int64
6+
public let siteID: Int64
7+
public let productID: Int64
8+
public let sku: String?
9+
public let globalUniqueID: String?
10+
public let price: String
11+
public let downloadable: Bool
12+
public let fullDescription: String?
13+
public let manageStock: Bool
14+
public let stockQuantity: Decimal?
15+
public let stockStatusKey: String
16+
17+
public init(id: Int64,
18+
siteID: Int64,
19+
productID: Int64,
20+
sku: String?,
21+
globalUniqueID: String?,
22+
price: String,
23+
downloadable: Bool,
24+
fullDescription: String?,
25+
manageStock: Bool,
26+
stockQuantity: Decimal?,
27+
stockStatusKey: String) {
28+
self.id = id
29+
self.siteID = siteID
30+
self.productID = productID
31+
self.sku = sku
32+
self.globalUniqueID = globalUniqueID
33+
self.price = price
34+
self.downloadable = downloadable
35+
self.fullDescription = fullDescription
36+
self.manageStock = manageStock
37+
self.stockQuantity = stockQuantity
38+
self.stockStatusKey = stockStatusKey
39+
}
40+
}
41+
42+
extension PersistedProductVariation: FetchableRecord, PersistableRecord {
43+
public static var databaseTableName: String { "productVariation" }
44+
45+
public enum Columns {
46+
static let id = Column(CodingKeys.id)
47+
static let siteID = Column(CodingKeys.siteID)
48+
static let productID = Column(CodingKeys.productID)
49+
static let sku = Column(CodingKeys.sku)
50+
static let globalUniqueID = Column(CodingKeys.globalUniqueID)
51+
static let price = Column(CodingKeys.price)
52+
static let downloadable = Column(CodingKeys.downloadable)
53+
static let fullDescription = Column(CodingKeys.fullDescription)
54+
static let manageStock = Column(CodingKeys.manageStock)
55+
static let stockQuantity = Column(CodingKeys.stockQuantity)
56+
static let stockStatusKey = Column(CodingKeys.stockStatusKey)
57+
}
58+
}
59+
60+
61+
private extension PersistedProductVariation {
62+
enum CodingKeys: String, CodingKey {
63+
case id
64+
case siteID
65+
case productID
66+
case sku
67+
case globalUniqueID
68+
case price
69+
case downloadable
70+
case fullDescription
71+
case manageStock
72+
case stockQuantity
73+
case stockStatusKey
74+
}
75+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedProductVariationAttribute: Codable {
5+
public let id: Int64?
6+
public let productVariationID: Int64
7+
public let name: String
8+
public let option: String
9+
10+
public init(id: Int64? = nil,
11+
productVariationID: Int64,
12+
name: String,
13+
option: String) {
14+
self.id = id
15+
self.productVariationID = productVariationID
16+
self.name = name
17+
self.option = option
18+
}
19+
}
20+
21+
extension PersistedProductVariationAttribute: FetchableRecord, PersistableRecord {
22+
public static var databaseTableName: String { "productVariationAttribute" }
23+
24+
public enum Columns {
25+
static let id = Column(CodingKeys.id)
26+
static let productVariationID = Column(CodingKeys.productVariationID)
27+
static let name = Column(CodingKeys.name)
28+
static let option = Column(CodingKeys.option)
29+
}
30+
}
31+
32+
33+
private extension PersistedProductVariationAttribute {
34+
enum CodingKeys: String, CodingKey {
35+
case id
36+
case productVariationID
37+
case name
38+
case option
39+
}
40+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedProductVariationImage: Codable {
5+
public let id: Int64
6+
public let productVariationID: Int64
7+
public let dateCreated: Date
8+
public let dateModified: Date?
9+
public let src: String
10+
public let name: String?
11+
public let alt: String?
12+
13+
public init(id: Int64,
14+
productVariationID: Int64,
15+
dateCreated: Date,
16+
dateModified: Date?,
17+
src: String,
18+
name: String?,
19+
alt: String?) {
20+
self.id = id
21+
self.productVariationID = productVariationID
22+
self.dateCreated = dateCreated
23+
self.dateModified = dateModified
24+
self.src = src
25+
self.name = name
26+
self.alt = alt
27+
}
28+
}
29+
30+
extension PersistedProductVariationImage: FetchableRecord, PersistableRecord {
31+
public static var databaseTableName: String { "productVariationImage" }
32+
33+
public enum Columns {
34+
static let id = Column(CodingKeys.id)
35+
static let productVariationID = Column(CodingKeys.productVariationID)
36+
static let dateCreated = Column(CodingKeys.dateCreated)
37+
static let dateModified = Column(CodingKeys.dateModified)
38+
static let src = Column(CodingKeys.src)
39+
static let name = Column(CodingKeys.name)
40+
static let alt = Column(CodingKeys.alt)
41+
}
42+
}
43+
44+
45+
private extension PersistedProductVariationImage {
46+
enum CodingKeys: String, CodingKey {
47+
case id
48+
case productVariationID
49+
case dateCreated
50+
case dateModified
51+
case src
52+
case name
53+
case alt
54+
}
55+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import Foundation
2+
import GRDB
3+
4+
public struct PersistedSite: Codable {
5+
public let id: Int64
6+
7+
public init(id: Int64) {
8+
self.id = id
9+
}
10+
}
11+
12+
extension PersistedSite: FetchableRecord, PersistableRecord {
13+
public static var databaseTableName: String { "site" }
14+
15+
public enum Columns {
16+
static let id = Column(CodingKeys.id)
17+
}
18+
}
19+
20+
private extension PersistedSite {
21+
enum CodingKeys: String, CodingKey {
22+
case id
23+
}
24+
}

0 commit comments

Comments
 (0)