Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

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

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