Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 17 | Rev 61 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 17 Rev 19
Línea 9... Línea 9...
9
import UIKit
9
import UIKit
10
import SQLite3
10
import SQLite3
Línea 11... Línea 11...
11
 
11
 
12
class SyncDao {
12
class SyncDao {
13
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
Línea 14... Línea 14...
14
    private var db : OpaquePointer?
14
    private var database = Database.sharedInstance
15
    
15
    
Línea 16... Línea 16...
16
    static let sharedInstance: SyncDao = {
16
    static let sharedInstance: SyncDao = {
17
           let instance = SyncDao()
17
           let instance = SyncDao()
18
           
18
           
19
           // setup code
19
           // setup code
20
           return instance
-
 
21
    }()
-
 
22
    
-
 
23
    init() {
-
 
24
        self.db = Database.sharedInstance.open()
20
           return instance
-
 
21
    }()
25
    }
22
 
26
        
23
    func insert(record : SyncModel) -> Int {
27
    func insert(record : SyncModel) -> Int {
24
        let db = database.open()
Línea 36... Línea 33...
36
            sqlite3_bind_text(statement, 2, record.data , -1, SQLITE_TRANSIENT)
33
            sqlite3_bind_text(statement, 2, record.data , -1, SQLITE_TRANSIENT)
37
           if (sqlite3_step(statement) == SQLITE_DONE) {
34
           if (sqlite3_step(statement) == SQLITE_DONE) {
38
               result = Int(sqlite3_last_insert_rowid(db))
35
               result = Int(sqlite3_last_insert_rowid(db))
39
           } else {
36
           } else {
40
                print("No se pudo insertar el registro ( type: \(record.type) data: \(record.data)   en la tabla: \(Constants.TABLE_SYNC)")
37
                print("No se pudo insertar el registro ( type: \(record.type) data: \(record.data)   en la tabla: \(Constants.TABLE_SYNC)")
-
 
38
                database.printError()
Línea 41... Línea 39...
41
            
39
            
Línea 42... Línea 40...
42
           }
40
           }
43
           
41
           
-
 
42
        } else {
44
        } else {
43
            print("Fallo la preparación del insert en la tabla: \(Constants.TABLE_SYNC)")
Línea 45... Línea 44...
45
            print("Fallo la preparación del insert en la tabla: \(Constants.TABLE_SYNC)")
44
            database.printError()
46
        }
45
        }
47
        
46
        
Línea 48... Línea 47...
48
        sqlite3_finalize(statement)
47
        sqlite3_finalize(statement)
-
 
48
        return result
49
        return result
49
     }
Línea 50... Línea 50...
50
     }
50
    
51
    
51
    func selectOneByType(type: Int) -> SyncModel {
52
    func selectOneByType(type: Int) -> SyncModel {
52
        let db = database.open()
Línea 65... Línea 65...
65
                record.id = Int(sqlite3_column_int(statement, 0))
65
                record.id = Int(sqlite3_column_int(statement, 0))
66
                record.type = Int(sqlite3_column_int(statement, 1))
66
                record.type = Int(sqlite3_column_int(statement, 1))
67
                record.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))
67
                record.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))
Línea 68... Línea 68...
68
                
68
                
-
 
69
            }
-
 
70
        } else {
69
            }
71
            database.printError()
70
        }
72
        }
71
        sqlite3_finalize(statement)
73
        sqlite3_finalize(statement)
72
        return record
74
        return record
Línea 73... Línea 75...
73
    }
75
    }
-
 
76
    
74
    
77
    
75
    
78
    func countPendingRecords()-> Int {
76
    func countPendingRecords()-> Int {
79
        let db = database.open()
Línea 77... Línea 80...
77
        var count = 0 
80
        var count = 0 
78
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_SYNC
81
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_SYNC
79
        var statement : OpaquePointer? = nil
82
        var statement : OpaquePointer? = nil
80
        
83
        
-
 
84
        
-
 
85
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
81
        
86
            if(sqlite3_step(statement) == SQLITE_ROW){
82
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
87
                count = Int(sqlite3_column_int(statement, 0))
83
            if(sqlite3_step(statement) == SQLITE_ROW){
88
            }
84
                count = Int(sqlite3_column_int(statement, 0))
89
        } else {
Línea 85... Línea 90...
85
            }
90
            database.printError()
-
 
91
        }
86
        }
92
        sqlite3_finalize(statement)
Línea 87... Línea 93...
87
        sqlite3_finalize(statement)
93
        return count
88
        return count
94
    }
89
    }
95
    
Línea 108... Línea 114...
108
                model.type = Int(sqlite3_column_int(statement, 1))
114
                model.type = Int(sqlite3_column_int(statement, 1))
109
                model.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))
115
                model.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))
Línea 110... Línea 116...
110
                
116
                
111
                records.append(model)
117
                records.append(model)
-
 
118
            }
-
 
119
        } else {
112
            }
120
            database.printError()
113
        }
121
        }
114
        sqlite3_finalize(statement)
122
        sqlite3_finalize(statement)
115
        return records
123
        return records
Línea 116... Línea 124...
116
    }
124
    }
-
 
125
    
117
    
126
    func remove(id : Int) {
118
    func remove(id : Int) {
127
        let db = database.open()
119
        let query = "DELETE FROM " + Constants.TABLE_SYNC + " WHERE " + Constants.TABLE_SYNC_FIELD_ID + " = " + "\(id) ;"
128
        let query = "DELETE FROM " + Constants.TABLE_SYNC + " WHERE " + Constants.TABLE_SYNC_FIELD_ID + " = " + "\(id) ;"
120
        var statement : OpaquePointer? = nil
129
        var statement : OpaquePointer? = nil
121
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
130
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
-
 
131
            if (sqlite3_step(statement) != SQLITE_DONE) {
122
            if (sqlite3_step(statement) != SQLITE_DONE) {
132
                print("No se pudo borrar el ID: \(id) de la tabla: \(Constants.TABLE_SYNC)")
-
 
133
                database.printError()
-
 
134
            } 
123
                print("No se pudo borrar el ID: \(id) de la tabla: \(Constants.TABLE_SYNC)")
135
        } else {
124
            }
136
            database.printError()
125
        }
137
        }
126
        sqlite3_finalize(statement)
138
        sqlite3_finalize(statement)