From 2c00fc31bc7336f8663628b989eb96ab5ae98533 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Sun, 13 Sep 2020 14:17:06 +0900 Subject: [PATCH] WIP: migrations demo --- .../Advanced.EvolutionDemo.CreatureType.swift | 19 +++++++++++ .../EvolutionDemo/Advanced.EvolutionDemo.CreatureV1.swift | 5 ++- .../EvolutionDemo/Advanced.EvolutionDemo.CreatureV2.swift | 34 +++++++++++++++---- .../EvolutionDemo/Advanced.EvolutionDemo.CreatureV3.swift | 34 +++++++++++++++---- .../EvolutionDemo/Advanced.EvolutionDemo.CreatureV4.swift | 34 +++++++++++++++---- .../EvolutionDemo/Advanced.EvolutionDemo.swift | 11 ++++++ 6 files changed, 118 insertions(+), 19 deletions(-) diff --git a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureType.swift b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureType.swift index 77901f8..ec91161 100644 --- a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureType.swift +++ b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureType.swift @@ -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() +} diff --git a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV1.swift b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV1.swift index ab56cd9..1e0207f 100644 --- a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV1.swift +++ b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV1.swift @@ -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 } } diff --git a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV2.swift b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV2.swift index 62b4e50..1d5784e 100644 --- a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV2.swift +++ b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV2.swift @@ -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 + } +} diff --git a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV3.swift b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV3.swift index 0874510..2215e9b 100644 --- a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV3.swift +++ b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV3.swift @@ -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 + } +} diff --git a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV4.swift b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV4.swift index 92548e7..927044c 100644 --- a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV4.swift +++ b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.CreatureV4.swift @@ -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 + } +} diff --git a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.swift b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.swift index 1f0542f..8c021de 100644 --- a/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.swift +++ b/Demo/⭐️Sources/⭐️Demos/⭐️Advanced/EvolutionDemo/Advanced.EvolutionDemo.swift @@ -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 + } + } } }