SQLiteProxy.swift 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // SQLiteProxy.swift
  3. // Swifter
  4. // Copyright (c) 2014 Damian Kołakowski. All rights reserved.
  5. //
  6. import Foundation
  7. class SQLiteActiveRecordProxy: ActiveRecordProxy {
  8. let databaseName: String
  9. init(name: String) {
  10. databaseName = name
  11. }
  12. func execute(statment: String, iteratorCallback: (COpaquePointer -> Void) ) -> Void {
  13. var databasePointer = COpaquePointer()
  14. if ( SQLITE_OK == databaseName.withCString { sqlite3_open($0, &databasePointer) } ) {
  15. var statmentPointer = COpaquePointer()
  16. if ( SQLITE_OK == statment.withCString { sqlite3_prepare(databasePointer, $0, Int32(strlen($0)), &statmentPointer, nil) } ) {
  17. while ( sqlite3_step(statmentPointer) == SQLITE_ROW ) { iteratorCallback(statmentPointer) }
  18. sqlite3_finalize(statmentPointer);
  19. }
  20. sqlite3_close(databasePointer);
  21. }
  22. }
  23. func scheme() -> [String: [String: ActiveRecordType]] {
  24. var tables = [String]()
  25. execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;") {
  26. let pointer = sqlite3_column_text($0, 0)
  27. if let name = String.fromCString(UnsafePointer<CChar>(COpaquePointer(pointer))) { tables.append(name) }
  28. }
  29. //TODO get columns
  30. var result = [String: [String: ActiveRecordType]]()
  31. return result
  32. }
  33. func createTable(name: String, columns: [String: ActiveRecordType], error: NSError) -> Bool {
  34. return false
  35. }
  36. func deleteTable(name: String, error: NSError) -> Bool {
  37. return false
  38. }
  39. func insertColumn(table: String, column: String, error: NSError) -> Bool {
  40. return false
  41. }
  42. func deleteColumn(table: String, column: String, error: NSError) -> Bool {
  43. return false
  44. }
  45. func copyColumn(table: String, from: String, to: String, error: NSError) -> Bool {
  46. return false
  47. }
  48. func insertRow(table: String, value: [String: String], error: NSError) -> Int {
  49. return 0
  50. }
  51. func deleteRow(table: String, id: Int, error: NSError) -> Bool {
  52. return false
  53. }
  54. }