add keyIsEmpty, create, asData, change cols to return array not dict

add not implemented to error
This commit is contained in:
Jonathan Guthrie 2016-10-06 10:19:16 -04:00
parent 605657d2b5
commit 500c302c05
2 changed files with 43 additions and 4 deletions

View File

@ -19,19 +19,35 @@ open class StORM {
public init() {} public init() {}
// introspection of structure // introspection of structure
public func cols() -> [String:Any] { public func cols(_ offset: Int = 0) -> [(String, Any)] {
var c = [String:Any]() var c = [(String, Any)]()
var count = 0
let mirror = Mirror(reflecting: self) let mirror = Mirror(reflecting: self)
for child in mirror.children { for child in mirror.children {
guard let key = child.label else { guard let key = child.label else {
continue continue
} }
c[key] = type(of:child.value) if count >= offset {
c.append((key, type(of:child.value)))
//c[key] = type(of:child.value)
}
count += 1
} }
return c return c
} }
public func asData(_ offset: Int = 0) -> [(String, Any)] {
var c = [(String, Any)]()
var count = 0
let mirror = Mirror(reflecting: self)
for case let (label?, value) in mirror.children {
if count >= offset {
c.append((label, value))
}
count += 1
}
return c
}
public func firstAsKey() -> (String, Any) { public func firstAsKey() -> (String, Any) {
let mirror = Mirror(reflecting: self) let mirror = Mirror(reflecting: self)
@ -41,5 +57,27 @@ open class StORM {
return ("id", "unknown") return ("id", "unknown")
} }
public func keyIsEmpty() -> Bool {
let (_, val) = firstAsKey()
if val is Int {
if val as! Int == 0 {
return true
} else {
return false
}
} else {
if (val as! String).isEmpty {
return true
} else {
return false
}
}
}
open func create() throws {
// is overridden in an extension
throw StORMError.notImplemented
}
} }

View File

@ -10,6 +10,7 @@ public enum StORMError: Error {
case database // "No Database Specified" case database // "No Database Specified"
case error(String) // "Error" case error(String) // "Error"
case noError // "No Error" case noError // "No Error"
case notImplemented // "Not Implemented"
init(){ init(){
self = .noError self = .noError