Prechádzať zdrojové kódy

Minor progress on ActiveRecord.

Damian Kołakowski 11 rokov pred
rodič
commit
cd798af576

+ 15 - 13
Common/ActiveRecord/ActiveRecord.swift

@@ -12,41 +12,43 @@ struct SwifterActiveRecordField {
     let name: String?
 }
 
-class SwifterActiveRecord /* Probbaly we will use generics and not follow Ruby's approach based on subclassing. Methods like find() and get() need to return a correct types. */ {
+class SwifterActiveRecord<T: NSObject> {
     
     init() {
-        let properties = listProperties()
-        // TODO migrate properties scheme to DB scheme.
+        let properties = scheme()
     }
     
-    private func listProperties() -> [SwifterActiveRecordField]? {
-        // Extract public properties so we will know
+    private func scheme() -> [SwifterActiveRecordField] {
         var results = [SwifterActiveRecordField]()
         let classInfoDump = reflect(self)
         for var index = 1; index < classInfoDump.count; ++index {
             let field = classInfoDump[index]
             results.append(SwifterActiveRecordField(name: field.0))
-            print("\(field.1.valueType)")
         }
         return results
     }
     
-    //func findBy(
+    class func find(T -> Bool) -> [T] {
+        return []
+    }
     
-    func all() -> Array<String> {
+    class func all() -> Array<String> {
         return []
     }
     
     func commit(error: NSErrorPointer) -> Bool {
-        //TODO commit changes to DB.
         return false
     }
 }
 
 // An example model class.
 
-class Person: SwifterActiveRecord {
-    var firstName: String?
-    var lastName: String?
-    var age: UInt?
+class Person: NSObject {
+    var firstName: String? = "firstName"
+    var lastName: String? = "lastName"
+    var age: UInt? = 1
 }
+
+let peopleWithNameFoo = SwifterActiveRecord<Person>.find({ $0.firstName == "Foo" })
+
+

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


+ 5 - 49
Swifter.xcodeproj/xcuserdata/damiankolakowski.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -358,57 +358,13 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Common/ActiveRecord/ActiveRecord.swift"
-            timestampString = "437582232.832834"
+            timestampString = "437737235.228186"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "15"
-            endingLineNumber = "15"
-            landmarkName = "SwifterActiveRecord"
-            landmarkType = "3">
-            <Locations>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "SwifterOSX.SwifterActiveRecord.deinit"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/ActiveRecord.swift"
-                  timestampString = "437665731.59783"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "15"
-                  endingLineNumber = "15"
-                  offsetFromSymbolStart = "8">
-               </Location>
-               <Location
-                  shouldBeEnabled = "No"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "SwifterOSX.SwifterActiveRecord.__deallocating_deinit"
-                  moduleName = "SwifterOSX"
-                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/ActiveRecord.swift"
-                  timestampString = "437665731.598002"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "15"
-                  endingLineNumber = "15"
-                  offsetFromSymbolStart = "12">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/ActiveRecord.swift"
-            timestampString = "437665027.659897"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "46"
-            endingLineNumber = "46">
+            startingLineNumber = "45"
+            endingLineNumber = "45"
+            landmarkName = "commit(_:)"
+            landmarkType = "5">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy

+ 2 - 0
SwifterOSX/main.swift

@@ -12,6 +12,8 @@ let server = demoServer("~/")
 
 var error: NSError?
 
+let person = Person()
+
 if !server.start(error: &error) {
     println("Server start error: \(error)")
 } else {