Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

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

Rev 1 Rev 19
Línea 8... Línea 8...
8
import UIKit
8
import UIKit
9
import SQLite3
9
import SQLite3
Línea 10... Línea 10...
10
 
10
 
11
class AnswerDao {
11
class AnswerDao {
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
-
 
13
    private var database = Database.sharedInstance
Línea 13... Línea 14...
13
    private var db : OpaquePointer?
14
    
14
    
15
    
Línea 15... Línea 16...
15
    static let sharedInstance: AnswerDao = {
16
    static let sharedInstance: AnswerDao = {
16
           let instance = AnswerDao()
17
           let instance = AnswerDao()
17
           
18
           
Línea 18... Línea -...
18
           // setup code
-
 
19
           return instance
-
 
20
    }()
-
 
21
    
19
           // setup code
22
    init() {
-
 
23
        self.db = Database.sharedInstance.open()
20
           return instance
-
 
21
    }()
-
 
22
    
24
    }
23
 
25
    
24
    func insert(answer : AnswerModel) {
26
    
25
        let db = database.open()
27
    func insert(answer : AnswerModel) {
26
        
28
        var query = "INSERT INTO " + Constants.TABLE_ANSWER + " ( "
27
        var query = "INSERT INTO " + Constants.TABLE_ANSWER + " ( "
Línea 45... Línea 44...
45
            sqlite3_bind_text(statement, 6, answer.addedOn , -1, SQLITE_TRANSIENT)
44
            sqlite3_bind_text(statement, 6, answer.addedOn , -1, SQLITE_TRANSIENT)
46
            sqlite3_bind_text(statement, 7, answer.updatedOn , -1, SQLITE_TRANSIENT)
45
            sqlite3_bind_text(statement, 7, answer.updatedOn , -1, SQLITE_TRANSIENT)
Línea 47... Línea 46...
47
 
46
 
48
 
47
 
-
 
48
           if sqlite3_step(statement) != SQLITE_DONE {
49
           if sqlite3_step(statement) != SQLITE_DONE {
49
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_ANSWER) ")
Línea 50... Línea 50...
50
            print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_ANSWER) ")
50
                database.printError()
51
           }
51
           }
-
 
52
           
52
           
53
        } else {
Línea 53... Línea 54...
53
        } else {
54
            print("Fallo la preparación del insertar en la tabla: \(Constants.TABLE_ANSWER)")
54
            print("Fallo la preparación del insertar en la tabla: \(Constants.TABLE_ANSWER)")
55
            database.printError()
Línea 55... Línea 56...
55
        }
56
        }
-
 
57
       
56
       
58
        sqlite3_finalize(statement)
Línea 57... Línea 59...
57
        sqlite3_finalize(statement)
59
     }
58
     }
60
    
59
    
61
    
Línea 86... Línea 88...
86
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 6)))
88
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 6)))
Línea 87... Línea 89...
87
                
89
                
Línea 88... Línea 90...
88
                records.append(model)
90
                records.append(model)
-
 
91
                
-
 
92
            }
89
                
93
        } else {
90
            }
94
            database.printError()
91
        }
95
        }
92
        sqlite3_finalize(statement)
96
        sqlite3_finalize(statement)
Línea 93... Línea 97...
93
        return records
97
        return records
-
 
98
    }
94
    }
99
    
95
    
100
    func selectByUuid(uuid : String) -> AnswerModel {
96
    func selectByUuid(uuid : String) -> AnswerModel {
101
        let db = database.open()
97
        var model = AnswerModel()
102
        var model = AnswerModel()
98
        var query = "SELECT " + Constants.TABLE_ANSWER_FIELD_UUID + " , "
103
        var query = "SELECT " + Constants.TABLE_ANSWER_FIELD_UUID + " , "
Línea 115... Línea 120...
115
                model.correct = Int(sqlite3_column_int(statement, 4))
120
                model.correct = Int(sqlite3_column_int(statement, 4))
116
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 5)))
121
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 5)))
117
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 6)))
122
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 6)))
Línea 118... Línea 123...
118
               
123
               
-
 
124
            }
-
 
125
        } else {
119
            }
126
            database.printError()
120
        }
127
        }
121
        sqlite3_finalize(statement)
128
        sqlite3_finalize(statement)
122
        return model
129
        return model
Línea 123... Línea 130...
123
    }
130
    }
-
 
131
    
124
    
132
    func update( answerModel: AnswerModel) {
125
    func update( answerModel: AnswerModel) {
133
        let db = database.open()
126
        var query = "UPDATE" + Constants.TABLE_SYNC
134
        var query = "UPDATE" + Constants.TABLE_SYNC
127
        query = query + " SET " + Constants.TABLE_ANSWER_FIELD_TEXT + " =  ?, "
135
        query = query + " SET " + Constants.TABLE_ANSWER_FIELD_TEXT + " =  ?, "
128
        query = query + Constants.TABLE_ANSWER_FIELD_POINTS + " = ?, "
136
        query = query + Constants.TABLE_ANSWER_FIELD_POINTS + " = ?, "
Línea 139... Línea 147...
139
            sqlite3_bind_text(statement, 3, answerModel.addedOn, -1, SQLITE_TRANSIENT)
147
            sqlite3_bind_text(statement, 3, answerModel.addedOn, -1, SQLITE_TRANSIENT)
140
            sqlite3_bind_text(statement, 4, answerModel.updatedOn, -1, SQLITE_TRANSIENT)
148
            sqlite3_bind_text(statement, 4, answerModel.updatedOn, -1, SQLITE_TRANSIENT)
141
            sqlite3_bind_text(statement, 5, answerModel.uuid, -1, SQLITE_TRANSIENT)
149
            sqlite3_bind_text(statement, 5, answerModel.uuid, -1, SQLITE_TRANSIENT)
Línea 142... Línea 150...
142
            
150
            
143
            if sqlite3_step(statement) != SQLITE_DONE {
-
 
144
                
151
            if sqlite3_step(statement) != SQLITE_DONE {
145
                print("No se pudo actualizar un registro de la tabla: \(Constants.TABLE_ANSWER)")
-
 
-
 
152
                print("No se pudo actualizar un registro de la tabla: \(Constants.TABLE_ANSWER)")
146
                
153
                database.printError()
147
            }
154
            }
148
        } else {
155
        } else {
-
 
156
            print("Fallo la preparación de actualizar un registro en la tabla: \(Constants.TABLE_ANSWER)")
149
            print("Fallo la preparación de actualizar un registro en la tabla: \(Constants.TABLE_ANSWER)")
157
            database.printError()
150
        }
158
        }
151
        sqlite3_finalize(statement)
159
        sqlite3_finalize(statement)
Línea 152... Línea 160...
152
    }
160
    }
-
 
161
 
153
 
162
    
154
    
163
    func remove(uuid : String) {
155
    func remove(uuid : String) {
164
        let db = database.open()
156
        let query = "DELETE FROM " + Constants.TABLE_ANSWER +
165
        let query = "DELETE FROM " + Constants.TABLE_ANSWER +
157
            " WHERE " + Constants.TABLE_ANSWER_FIELD_UUID + " = '\(uuid)' ;"
166
            " WHERE " + Constants.TABLE_ANSWER_FIELD_UUID + " = '\(uuid)' ;"
158
        var statement : OpaquePointer? = nil
167
        var statement : OpaquePointer? = nil
-
 
168
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
-
 
169
            if (sqlite3_step(statement) != SQLITE_DONE) {
159
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
170
                print("No se pudo borrar el registro con el uuid: \(uuid) de la tabla: \(Constants.TABLE_ANSWER) ")
160
            if (sqlite3_step(statement) != SQLITE_DONE) {
171
                
161
                print("No se pudo borrar el registro con el uuid: \(uuid) de la tabla: \(Constants.TABLE_ANSWER) ")
172
                database.printError()
-
 
173
            }
-
 
174
        } else {
162
            }
175
            print("Fallo la preparación para borrar un registro de la tabla \(Constants.TABLE_ANSWER) ")
163
        } else {
176
            
164
            print("Fallo la preparación para borrar un registro de la tabla \(Constants.TABLE_ANSWER) ")
177
            database.printError()
Línea 165... Línea 178...
165
        }
178
        }
-
 
179
        sqlite3_finalize(statement)
166
        sqlite3_finalize(statement)
180
    }
167
    }
181
    
168
    
182
    func removeAll() {
169
    func removeAll() {
183
        let db = database.open()
170
        let query = "DELETE FROM " + Constants.TABLE_ANSWER + ";"
184
        let query = "DELETE FROM " + Constants.TABLE_ANSWER + ";"
-
 
185
        var statement : OpaquePointer? = nil
-
 
186
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
171
        var statement : OpaquePointer? = nil
187
            if sqlite3_step(statement) != SQLITE_DONE {
172
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
188
                print("No se pudieron borrar todos los registros de la tabla: \(Constants.TABLE_ANSWER) ")
173
            if sqlite3_step(statement) != SQLITE_DONE {
189
                
-
 
190
                database.printError()
-
 
191
            }
174
                print("No se pudieron borrar todos los registros de la tabla: \(Constants.TABLE_ANSWER) ")
192
        } else {
175
            }
193
            print("Fallo la preparación para borrar todos los registros de la tabla: \(Constants.TABLE_ANSWER)")
176
        } else {
194
            
Línea 177... Línea 195...
177
            print("Fallo la preparación para borrar todos los registros de la tabla: \(Constants.TABLE_ANSWER)")
195
            database.printError()