add keyIsEmpty, create, asData, change cols to return array not dict
add not implemented to error
This commit is contained in:
parent
605657d2b5
commit
500c302c05
|
@ -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
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue