Browse Source

Refactored scheme loading for SQLite db.

Damian Kołakowski 11 years ago
parent
commit
8f3b1baf82

+ 2 - 2
Common/ActiveRecord/SwifterDatabaseProxy.swift

@@ -11,9 +11,9 @@ enum SwifterDatabseProxyType {
 }
 }
 
 
 protocol SwifterDatabseProxy {
 protocol SwifterDatabseProxy {
-    func scheme(error: NSErrorPointer?) -> [String: [(String, SwifterDatabseProxyType)]]?;
+    func scheme(error: NSErrorPointer?) -> [String: [(String, String)]]?;
     
     
-    func createTable(name: String, columns: [String: SwifterDatabseProxyType], error: NSErrorPointer?) -> Bool;
+    func createTable(name: String, columns: [String: String], error: NSErrorPointer?) -> Bool;
     func deleteTable(name: String, error: NSErrorPointer?) -> Bool;
     func deleteTable(name: String, error: NSErrorPointer?) -> Bool;
     
     
     func insertColumn(table: String, column: String, error: NSErrorPointer?) -> Bool;
     func insertColumn(table: String, column: String, error: NSErrorPointer?) -> Bool;

+ 33 - 55
Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift

@@ -55,15 +55,15 @@ class SQLiteSequence: SequenceType {
     
     
     var statementPointer = COpaquePointer()
     var statementPointer = COpaquePointer()
     
     
-    init?(database: COpaquePointer, statement: String, error: NSErrorPointer? = nil) {
-        let result = statement.withCString { sqlite3_prepare(database, $0, Int32(strlen($0)), &self.statementPointer, nil) };
+    init?(db: COpaquePointer, sql: String, err: NSErrorPointer? = nil) {
+        let result = sql.withCString { sqlite3_prepare(db, $0, Int32(strlen($0)), &self.statementPointer, nil) };
         if result != SQLITE_OK {
         if result != SQLITE_OK {
-            if let error = error { error.memory = err("Can't prepare statement: \(statement), Error: \(result)") }
+            if let err = err { err.memory = error("Can't prepare statement: \(sql), Error: \(result)") }
             return nil
             return nil
         }
         }
     }
     }
     
     
-    func err(reason: String) -> NSError {
+    func error(reason: String) -> NSError {
         return NSError(domain: "SQLiteSequence", code: 0, userInfo: [NSLocalizedDescriptionKey : reason])
         return NSError(domain: "SQLiteSequence", code: 0, userInfo: [NSLocalizedDescriptionKey : reason])
     }
     }
     
     
@@ -72,74 +72,52 @@ class SQLiteSequence: SequenceType {
     }
     }
 }
 }
 
 
-class SQLiteStatement: StringLiteralConvertible {
-    
-    typealias ExtendedGraphemeClusterLiteralType = StringLiteralType
-    typealias UnicodeScalarLiteralType = UnicodeScalarType
-    
-    let sqlStatement: String
-    
-    init(value: String) {
-        self.sqlStatement = value
-    }
-    
-    required init(unicodeScalarLiteral value: UnicodeScalarLiteralType) {
-        self.sqlStatement = value
-    }
-    
-    required init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
-        self.sqlStatement = value
-    }
-    
-    required init(stringLiteral value: StringLiteralType) {
-        self.sqlStatement = value
-    }
-    
-    func execute(databse: COpaquePointer, error: NSErrorPointer? = nil) -> SQLiteSequence? {
-        return SQLiteSequence(database: databse, statement: sqlStatement, error: error)
-    }
-}
-
 class SwifterSQLiteDatabaseProxy: SwifterDatabseProxy {
 class SwifterSQLiteDatabaseProxy: SwifterDatabseProxy {
 
 
-    let databaseName: String
-    let typesMap = [ "TEXT": SwifterDatabseProxyType.String, "INT": .Integer, "REAL": .Float]
+    let name: String
     
     
-    init(name: String) {
-        databaseName = name
+    init(name databaseName: String) {
+        name = databaseName
     }
     }
     
     
     func err(reason: String) -> NSError {
     func err(reason: String) -> NSError {
         return NSError(domain: "SwifterSQLiteDatabaseProxy", code: 0, userInfo: [NSLocalizedDescriptionKey : reason])
         return NSError(domain: "SwifterSQLiteDatabaseProxy", code: 0, userInfo: [NSLocalizedDescriptionKey : reason])
     }
     }
     
     
-    func scheme(error: NSErrorPointer?) -> [String: [(String, SwifterDatabseProxyType)]]? {
+    func execute<Result>(name: String, sql: String, err: NSErrorPointer? = nil, f: ((SQLiteSequence) -> Result?)? = nil ) -> Result? {
         var database = COpaquePointer()
         var database = COpaquePointer()
-        if ( SQLITE_OK != databaseName.withCString { sqlite3_open($0, &database) } ) {
-            if let e = error { e.memory = err("Cant' open databse: \(databaseName)") }
-            return nil
-        }
-        var scheme = [String: [(String, SwifterDatabseProxyType)]]()
-        let tablesQuery: SQLiteStatement = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;";
-        if let tables = tablesQuery.execute(database, error: error) {
-            for table in map(tables, { $0.string(0) }) {
-                if let columns = SQLiteStatement(value: "PRAGMA table_info('\(table)');").execute(database, error: error) {
-                    scheme[table] = map(columns) {
-                        if let swifterType = self.typesMap[$0.string(2)] { return ($0.string(1), swifterType) }
-                        return ($0.string(1), SwifterDatabseProxyType.Unknown)
-                    }
+        if ( SQLITE_OK == name.withCString { sqlite3_open($0, &database) } ) {
+            if let sequence = SQLiteSequence(db: database, sql: sql, err: err) {
+                var result: Result?
+                if let f = f {
+                    result = f(sequence)
                 }
                 }
+                sqlite3_close(database)
+                return result
             }
             }
             sqlite3_close(database)
             sqlite3_close(database)
+        }
+        return nil
+    }
+    
+    func scheme(error: NSErrorPointer?) -> [String: [(String, String)]]? {
+        let tables: [String]? = execute(name, sql: "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;", err: error) { map($0, { $0.string(0) }) }
+        if let tables = tables {
+            var scheme = [String: [(String, String)]]()
+            for table in tables {
+                let columns: [(String, String)]? = execute(name, sql: "PRAGMA table_info('\(table)');", err: error) { map($0, { ($0.string(1), $0.string(2)) } ) }
+                if let columns = columns {
+                    scheme[table] = columns
+                } else {
+                    return nil
+                }
+            }
             return scheme
             return scheme
-        } else {
-            sqlite3_close(database)
-            if let e = error { e.memory = err("Can't query tables from database: \(tablesQuery)") }
-            return nil
         }
         }
+        return nil
     }
     }
     
     
-    func createTable(name: String, columns: [String: SwifterDatabseProxyType], error: NSErrorPointer?) -> Bool {
+    func createTable(name: String, columns: [String: String], error: NSErrorPointer?) -> Bool {
         return false
         return false
     }
     }
     
     

+ 6 - 6
Common/HttpParser.swift

@@ -8,16 +8,16 @@ import Foundation
 
 
 class HttpParser {
 class HttpParser {
     
     
-    class func err(reason:String) -> NSError {
-        return NSError(domain: "HTTP_PARSER", code: 0, userInfo:[NSLocalizedFailureReasonErrorKey : reason])
+    func err(reason: String) -> NSError {
+        return NSError(domain: "HttpParser", code: 0, userInfo: [NSLocalizedDescriptionKey : reason])
     }
     }
-
+    
     func nextHttpRequest(socket: CInt, error:NSErrorPointer = nil) -> HttpRequest? {
     func nextHttpRequest(socket: CInt, error:NSErrorPointer = nil) -> HttpRequest? {
         if let statusLine = nextLine(socket, error: error) {
         if let statusLine = nextLine(socket, error: error) {
             let statusTokens = split(statusLine, { $0 == " " })
             let statusTokens = split(statusLine, { $0 == " " })
             println(statusTokens)
             println(statusTokens)
             if ( statusTokens.count < 3 ) {
             if ( statusTokens.count < 3 ) {
-                if error != nil { error.memory = HttpParser.err("Invalid status line: \(statusLine)") }
+                if error != nil { error.memory = err("Invalid status line: \(statusLine)") }
                 return nil
                 return nil
             }
             }
             let method = statusTokens[0]
             let method = statusTokens[0]
@@ -59,7 +59,7 @@ class HttpParser {
         while ( counter < size ) {
         while ( counter < size ) {
             let c = nextUInt8(socket)
             let c = nextUInt8(socket)
             if ( c < 0 ) {
             if ( c < 0 ) {
-                if error != nil { error.memory = HttpParser.err("IO error while reading body") }
+                if error != nil { error.memory = err("IO error while reading body") }
                 return nil
                 return nil
             }
             }
             body.append(UnicodeScalar(c))
             body.append(UnicodeScalar(c))
@@ -104,7 +104,7 @@ class HttpParser {
             if ( n > 13 /* CR */ ) { characters.append(Character(UnicodeScalar(n))) }
             if ( n > 13 /* CR */ ) { characters.append(Character(UnicodeScalar(n))) }
         } while ( n > 0 && n != 10 /* NL */)
         } while ( n > 0 && n != 10 /* NL */)
         if ( n == -1 && characters.isEmpty ) {
         if ( n == -1 && characters.isEmpty ) {
-            if error != nil { error.memory = Socket.socketLastError("recv(...) failed.") }
+            if error != nil { error.memory = Socket.lastErr("recv(...) failed.") }
             return nil
             return nil
         }
         }
         return characters
         return characters

+ 7 - 7
Common/Socket.swift

@@ -10,7 +10,7 @@ import Foundation
 
 
 struct Socket {
 struct Socket {
         
         
-    static func socketLastError(reason:String) -> NSError {
+    static func lastErr(reason: String) -> NSError {
         let errorCode = errno
         let errorCode = errno
         if let errorText = String.fromCString(UnsafePointer(strerror(errorCode))) {
         if let errorText = String.fromCString(UnsafePointer(strerror(errorCode))) {
             return NSError(domain: "SOCKET", code: Int(errorCode), userInfo: [NSLocalizedFailureReasonErrorKey : reason, NSLocalizedDescriptionKey : errorText])
             return NSError(domain: "SOCKET", code: Int(errorCode), userInfo: [NSLocalizedFailureReasonErrorKey : reason, NSLocalizedDescriptionKey : errorText])
@@ -21,13 +21,13 @@ struct Socket {
     static func tcpForListen(port: in_port_t = 8080, error:NSErrorPointer = nil) -> CInt? {
     static func tcpForListen(port: in_port_t = 8080, error:NSErrorPointer = nil) -> CInt? {
         let s = socket(AF_INET, SOCK_STREAM, 0)
         let s = socket(AF_INET, SOCK_STREAM, 0)
         if ( s == -1 ) {
         if ( s == -1 ) {
-            if error != nil { error.memory = socketLastError("socket(...) failed.") }
+            if error != nil { error.memory = lastErr("socket(...) failed.") }
             return nil
             return nil
         }
         }
         var value: Int32 = 1;
         var value: Int32 = 1;
         if ( setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &value, socklen_t(sizeof(Int32))) == -1 ) {
         if ( setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &value, socklen_t(sizeof(Int32))) == -1 ) {
             release(s)
             release(s)
-            if error != nil { error.memory = socketLastError("setsockopt(...) failed.") }
+            if error != nil { error.memory = lastErr("setsockopt(...) failed.") }
             return nil
             return nil
         }
         }
         nosigpipe(s)
         nosigpipe(s)
@@ -38,12 +38,12 @@ struct Socket {
         memcpy(&sock_addr, &addr, UInt(sizeof(sockaddr_in)))
         memcpy(&sock_addr, &addr, UInt(sizeof(sockaddr_in)))
         if ( bind(s, &sock_addr, socklen_t(sizeof(sockaddr_in))) == -1 ) {
         if ( bind(s, &sock_addr, socklen_t(sizeof(sockaddr_in))) == -1 ) {
             release(s)
             release(s)
-            if error != nil { error.memory = socketLastError("bind(...) failed.") }
+            if error != nil { error.memory = lastErr("bind(...) failed.") }
             return nil
             return nil
         }
         }
         if ( listen(s, 20 /* max pending connection */ ) == -1 ) {
         if ( listen(s, 20 /* max pending connection */ ) == -1 ) {
             release(s)
             release(s)
-            if error != nil { error.memory = socketLastError("listen(...) failed.") }
+            if error != nil { error.memory = lastErr("listen(...) failed.") }
             return nil
             return nil
         }
         }
         return s
         return s
@@ -69,7 +69,7 @@ struct Socket {
         while ( sent < data.length ) {
         while ( sent < data.length ) {
             let s = write(socket, unsafePointer + sent, UInt(data.length - sent))
             let s = write(socket, unsafePointer + sent, UInt(data.length - sent))
             if ( s <= 0 ) {
             if ( s <= 0 ) {
-                if error != nil { error.memory = socketLastError("write(...) failed.") }
+                if error != nil { error.memory = lastErr("write(...) failed.") }
                 return false
                 return false
             }
             }
             sent += s
             sent += s
@@ -84,7 +84,7 @@ struct Socket {
             Socket.nosigpipe(clientSocket)
             Socket.nosigpipe(clientSocket)
             return clientSocket
             return clientSocket
         }
         }
-        if error != nil { error.memory = socketLastError("accept(...) failed.") }
+        if error != nil { error.memory = lastErr("accept(...) failed.") }
         return nil
         return nil
     }
     }
     
     

BIN
Swifter.xcodeproj/project.xcworkspace/xcuserdata/damiankolakowski.xcuserdatad/UserInterfaceState.xcuserstate


+ 10 - 164
Swifter.xcodeproj/xcuserdata/damiankolakowski.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -736,165 +736,11 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "SwifterOSX/main.swift"
             filePath = "SwifterOSX/main.swift"
-            timestampString = "439934407.772606"
+            timestampString = "440014599.057613"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "15"
-            endingLineNumber = "15">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
-            timestampString = "439934881.370643"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "116"
-            endingLineNumber = "116"
-            landmarkName = "scheme(_:)"
-            landmarkType = "5">
-            <Locations>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.scheme (SwifterOSX.SQLiteActiveRecordProxy)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
-                  timestampString = "438979660.680188"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "36"
-                  endingLineNumber = "36"
-                  offsetFromSymbolStart = "15">
-               </Location>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "protocol witness for SwifterOSX.ActiveRecordProxy.scheme &lt;A : SwifterOSX.ActiveRecordProxy&gt;(inout SwifterOSX.ActiveRecordProxy.Self)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt; in conformance SwifterOSX.SQLiteActiveRecordProxy : SwifterOSX.ActiveRecordProxy"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
-                  timestampString = "438979660.680339"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "36"
-                  endingLineNumber = "36"
-                  offsetFromSymbolStart = "4">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
-            timestampString = "439934881.370643"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "116"
-            endingLineNumber = "116"
-            landmarkName = "scheme(_:)"
-            landmarkType = "5">
-            <Locations>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.scheme (SwifterOSX.SQLiteActiveRecordProxy)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
-                  timestampString = "438948127.741381"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "19"
-                  endingLineNumber = "19"
-                  offsetFromSymbolStart = "89">
-               </Location>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.(scheme (SwifterOSX.SQLiteActiveRecordProxy) -&gt; () -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;).(closure #1)"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
-                  timestampString = "438948127.741549"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "19"
-                  endingLineNumber = "19"
-                  offsetFromSymbolStart = "16">
-               </Location>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "reabstraction thunk helper from @callee_owned (@unowned Swift.UnsafePointer&lt;Swift.Int8&gt;) -&gt; (@unowned Swift.Int32) to @callee_owned (@unowned Swift.UnsafePointer&lt;Swift.Int8&gt;) -&gt; (@out Swift.Int32)"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
-                  timestampString = "438948127.74168"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "19"
-                  endingLineNumber = "19"
-                  offsetFromSymbolStart = "11">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
-            timestampString = "439934881.370643"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "117"
-            endingLineNumber = "117"
-            landmarkName = "scheme(_:)"
-            landmarkType = "5">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
-            timestampString = "439934083.043208"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "103"
-            endingLineNumber = "103"
-            landmarkName = "SwifterSQLiteDatabaseProxy"
-            landmarkType = "3">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
-            timestampString = "439934881.370643"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "116"
-            endingLineNumber = "116"
-            landmarkName = "scheme(_:)"
-            landmarkType = "5">
+            startingLineNumber = "18"
+            endingLineNumber = "18">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
@@ -925,7 +771,7 @@
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "59"
             startingLineNumber = "59"
             endingLineNumber = "59"
             endingLineNumber = "59"
-            landmarkName = "init(database:statement:error:)"
+            landmarkName = "init(db:sql:err:)"
             landmarkType = "5">
             landmarkType = "5">
             <Locations>
             <Locations>
                <Location
                <Location
@@ -996,13 +842,13 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
             filePath = "Common/ActiveRecord/SwifterSQLiteDatabaseProxy.swift"
-            timestampString = "439934881.370643"
+            timestampString = "440014006.994951"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "126"
-            endingLineNumber = "126"
-            landmarkName = "scheme(_:)"
-            landmarkType = "5">
+            startingLineNumber = "79"
+            endingLineNumber = "79"
+            landmarkName = "SwifterSQLiteDatabaseProxy"
+            landmarkType = "3">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
@@ -1017,7 +863,7 @@
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "60"
             startingLineNumber = "60"
             endingLineNumber = "60"
             endingLineNumber = "60"
-            landmarkName = "init(database:statement:error:)"
+            landmarkName = "init(db:sql:err:)"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>

+ 1 - 1
Swifter/AppDelegate.swift

@@ -17,7 +17,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
         let server = demoServer(NSBundle.mainBundle().resourcePath)
         let server = demoServer(NSBundle.mainBundle().resourcePath)
         self.server = server
         self.server = server
         var error: NSError?
         var error: NSError?
-        if server.start(error: &error) {
+        if !server.start(error: &error) {
             println("Server start error: \(error)")
             println("Server start error: \(error)")
         }
         }
         return true
         return true

+ 4 - 2
SwifterOSX/main.swift

@@ -8,13 +8,15 @@ import Foundation
 
 
 let DB = SwifterSQLiteDatabaseProxy(name: "sample.db")
 let DB = SwifterSQLiteDatabaseProxy(name: "sample.db")
 
 
-let scheme = DB.scheme(nil)
+var error: NSError?
+
+let scheme = DB.scheme(&error)
 
 
 println(scheme)
 println(scheme)
+println(error)
 
 
 let server = demoServer(NSBundle.mainBundle().resourcePath)
 let server = demoServer(NSBundle.mainBundle().resourcePath)
 
 
-var error: NSError?
 
 
 if !server.start(error: &error) {
 if !server.start(error: &error) {
     println("Server start error: \(error)")
     println("Server start error: \(error)")