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
// Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
import CoreStore
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
final class CreatureV1: CoreStoreObject {
final class CreatureV1: CoreStoreObject, Advanced.EvolutionDemo.CreatureType {
// MARK: Internal
@@ -23,5 +23,8 @@ extension Advanced.EvolutionDemo {
@Field.Stored("hasTail")
var hasTail: Bool = false
@Field.Stored("numberOfFlagella")
var numberOfFlagella: Int32 = 0
}
}

View File

@@ -1,8 +1,30 @@
//
// Advanced.Evolution.CreatureV2.swift
// Demo
//
// Created by John Rommel Estropia on 2020/09/06.
//
// Demo
// Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
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
//
// Created by John Rommel Estropia on 2020/09/06.
//
// Demo
// Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
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
//
// Created by John Rommel Estropia on 2020/09/06.
//
// Demo
// Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
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 ageOfReptiles
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
}
}
}
}