WIP: migrations demo

This commit is contained in:
John Estropia
2020-09-13 14:17:06 +09:00
parent 2bbf6b34ea
commit 2c00fc31bc
6 changed files with 118 additions and 19 deletions

View File

@@ -2,4 +2,23 @@
// Demo // Demo
// Copyright © 2020 John Rommel Estropia, Inc. All rights reserved. // Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
import CoreStore
import Foundation import Foundation
// MARK: - Advanced.EvolutionDemo
extension Advanced.EvolutionDemo {
typealias CreatureType = Advanced_EvolutionDemo_CreatureType
}
// MARK: - Advanced.EvolutionDemo.CreatureType
protocol Advanced_EvolutionDemo_CreatureType: CoreStoreObject, CustomStringConvertible {
var dnaCode: Int64 { get }
func mutate()
}

View File

@@ -11,7 +11,7 @@ extension Advanced.EvolutionDemo {
// MARK: - Advanced.EvolutionDemo.CreatureV1 // MARK: - Advanced.EvolutionDemo.CreatureV1
final class CreatureV1: CoreStoreObject { final class CreatureV1: CoreStoreObject, Advanced.EvolutionDemo.CreatureType {
// MARK: Internal // MARK: Internal
@@ -23,5 +23,8 @@ extension Advanced.EvolutionDemo {
@Field.Stored("hasTail") @Field.Stored("hasTail")
var hasTail: Bool = false var hasTail: Bool = false
@Field.Stored("numberOfFlagella")
var numberOfFlagella: Int32 = 0
} }
} }

View File

@@ -1,8 +1,30 @@
// //
// Advanced.Evolution.CreatureV2.swift // Demo
// Demo // Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
//
// Created by John Rommel Estropia on 2020/09/06.
//
import Foundation import UIKit
import CoreStore
// MARK: - Advanced.EvolutionDemo
extension Advanced.EvolutionDemo {
// MARK: - Advanced.EvolutionDemo.CreatureV2
final class CreatureV2: CoreStoreObject, Advanced.EvolutionDemo.CreatureType {
// MARK: Internal
@Field.Stored("dnaCode")
var dnaCode: Int64 = 0
@Field.Stored("hasHead")
var hasHead: Bool = false
@Field.Stored("hasTail")
var hasTail: Bool = false
@Field.Stored("hasTail")
var numberOfFlippers: Int32 = 0
}
}

View File

@@ -1,8 +1,30 @@
// //
// Advanced.Evolution.CreatureV3.swift // Demo
// Demo // Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
//
// Created by John Rommel Estropia on 2020/09/06.
//
import Foundation import UIKit
import CoreStore
// MARK: - Advanced.EvolutionDemo
extension Advanced.EvolutionDemo {
// MARK: - Advanced.EvolutionDemo.CreatureV3
final class CreatureV3: CoreStoreObject, Advanced.EvolutionDemo.CreatureType {
// MARK: Internal
@Field.Stored("dnaCode")
var dnaCode: Int64 = 0
@Field.Stored("hasHead")
var hasHead: Bool = false
@Field.Stored("hasTail")
var hasTail: Bool = false
@Field.Stored("hasTail")
var numberOfFlippers: Int32 = 0
}
}

View File

@@ -1,8 +1,30 @@
// //
// Advanced.Evolution.CreatureV4.swift // Demo
// Demo // Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
//
// Created by John Rommel Estropia on 2020/09/06.
//
import Foundation import UIKit
import CoreStore
// MARK: - Advanced.EvolutionDemo
extension Advanced.EvolutionDemo {
// MARK: - Advanced.EvolutionDemo.CreatureV4
final class CreatureV4: CoreStoreObject, Advanced.EvolutionDemo.CreatureType {
// MARK: Internal
@Field.Stored("dnaCode")
var dnaCode: Int64 = 0
@Field.Stored("hasHead")
var hasHead: Bool = false
@Field.Stored("hasTail")
var hasTail: Bool = false
@Field.Stored("hasTail")
var numberOfFlippers: Int32 = 0
}
}

View File

@@ -19,5 +19,16 @@ extension Advanced {
case ageOfFishes case ageOfFishes
case ageOfReptiles case ageOfReptiles
case ageOfMammals case ageOfMammals
var creatureType: Advanced.EvolutionDemo.CreatureType.Type {
switch self {
case .ageOfInvertebrates: return Advanced.EvolutionDemo.CreatureV1.self
case .ageOfFishes: return Advanced.EvolutionDemo.CreatureV2.self
case .ageOfReptiles: return Advanced.EvolutionDemo.CreatureV3.self
case .ageOfMammals: return Advanced.EvolutionDemo.CreatureV4.self
}
}
} }
} }