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 QuestionDao {
11
class QuestionDao {
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
Línea 13... Línea 13...
13
    private var db : OpaquePointer?
13
    private var database = Database.sharedInstance
14
    
14
    
Línea 15... Línea 15...
15
    static let sharedInstance: QuestionDao = {
15
    static let sharedInstance: QuestionDao = {
16
           let instance = QuestionDao()
16
           let instance = QuestionDao()
17
           
17
           
18
           // setup code
-
 
19
           return instance
-
 
20
    }()
-
 
21
    
-
 
Línea 22... Línea 18...
22
    init() {
18
           // setup code
-
 
19
           return instance
23
        self.db = Database.sharedInstance.open()
20
    }()
Línea 24... Línea 21...
24
    }
21
 
25
 
22
    func selectAllByQuizUuid(quizUuid: String)-> [QuestionModel] {
26
    func selectAllByQuizUuid(quizUuid: String)-> [QuestionModel] {
23
        let db = database.open()
Línea 53... Línea 50...
53
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
50
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
Línea 54... Línea 51...
54
 
51
 
Línea 55... Línea 52...
55
                records.append(model)
52
                records.append(model)
-
 
53
                
-
 
54
            }
56
                
55
        } else {
57
            }
56
            database.printError()
58
        }
57
        }
59
        sqlite3_finalize(statement)
58
        sqlite3_finalize(statement)
Línea 60... Línea 59...
60
        return records
59
        return records
-
 
60
    }
61
    }
61
 
Línea 62... Línea 62...
62
 
62
    func selectByUuid(uuid: String)-> QuestionModel  {
63
    func selectByUuid(uuid: String)-> QuestionModel  {
63
        let db = database.open()
64
        var model = QuestionModel()
64
        var model = QuestionModel()
Línea 85... Línea 85...
85
                model.points = Int(sqlite3_column_int(statement, 4))
85
                model.points = Int(sqlite3_column_int(statement, 4))
86
                model.position = Int(sqlite3_column_int(statement, 5))
86
                model.position = Int(sqlite3_column_int(statement, 5))
87
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 6)))
87
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 6)))
88
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
88
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
89
            }
89
            }
-
 
90
        } else {
-
 
91
            database.printError()
90
        }
92
        }
91
        sqlite3_finalize(statement)
93
        sqlite3_finalize(statement)
92
        return model
94
        return model
93
    }
95
    }
Línea 94... Línea 96...
94
        
96
        
95
    func insert(question: QuestionModel) {
-
 
-
 
97
    func insert(question: QuestionModel) {
96
        
98
        let db = database.open()
97
        var query = "INSERT INTO " + Constants.TABLE_QUESTION + " ( "
99
        var query = "INSERT INTO " + Constants.TABLE_QUESTION + " ( "
98
        query = query + Constants.TABLE_QUESTION_FIELD_UUID + ", "
100
        query = query + Constants.TABLE_QUESTION_FIELD_UUID + ", "
99
        query = query + Constants.TABLE_QUESTION_FIELD_QUIZ_UUID + ", "
101
        query = query + Constants.TABLE_QUESTION_FIELD_QUIZ_UUID + ", "
100
        query = query + Constants.TABLE_QUESTION_FIELD_TEXT + ", "
102
        query = query + Constants.TABLE_QUESTION_FIELD_TEXT + ", "
Línea 117... Línea 119...
117
            sqlite3_bind_int(statement, 6, Int32(question.position))
119
            sqlite3_bind_int(statement, 6, Int32(question.position))
118
            sqlite3_bind_text(statement, 7, question.addedOn , -1, SQLITE_TRANSIENT)
120
            sqlite3_bind_text(statement, 7, question.addedOn , -1, SQLITE_TRANSIENT)
119
            sqlite3_bind_text(statement, 8, question.updatedOn , -1, SQLITE_TRANSIENT)
121
            sqlite3_bind_text(statement, 8, question.updatedOn , -1, SQLITE_TRANSIENT)
Línea 120... Línea 122...
120
   
122
   
121
           if (sqlite3_step(statement) != SQLITE_DONE) {
123
           if (sqlite3_step(statement) != SQLITE_DONE) {
-
 
124
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_QUESTION) ")
122
            print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_QUESTION) ")
125
                database.printError()
123
           }
126
           }
124
        } else {
127
        } else {
-
 
128
            print("Fallo la preparación de insertar un registro en una tabla: \(Constants.TABLE_QUESTION) ")
125
            print("Fallo la preparación de insertar un registro en una tabla: \(Constants.TABLE_QUESTION) ")
129
            database.printError()
Línea 126... Línea 130...
126
        }
130
        }
127
       
131
       
Línea 128... Línea 132...
128
        sqlite3_finalize(statement)
132
        sqlite3_finalize(statement)
-
 
133
    }
129
    }
134
 
130
 
135
    func update(question: QuestionModel) {
131
    func update(question: QuestionModel) {
136
        let db = database.open()
132
        var query = "UPDATE " + Constants.TABLE_QUESTION
137
        var query = "UPDATE " + Constants.TABLE_QUESTION
133
        query = query + " SET " + Constants.TABLE_QUESTION_FIELD_TEXT + " = '\(question.text)', "
138
        query = query + " SET " + Constants.TABLE_QUESTION_FIELD_TEXT + " = '\(question.text)', "
Línea 139... Línea 144...
139
        query = query + Constants.TABLE_QUESTION_FIELD_UUID + " = '\(question.uuid)' ;"
144
        query = query + Constants.TABLE_QUESTION_FIELD_UUID + " = '\(question.uuid)' ;"
140
        var statement : OpaquePointer? = nil
145
        var statement : OpaquePointer? = nil
141
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
146
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
142
            if (sqlite3_step(statement) != SQLITE_DONE) {
147
            if (sqlite3_step(statement) != SQLITE_DONE) {
143
                print("No se pudo actualizar un registro en la tabla: \(Constants.TABLE_QUESTION)")
148
                print("No se pudo actualizar un registro en la tabla: \(Constants.TABLE_QUESTION)")
-
 
149
                database.printError()
144
            }
150
            }
145
        } else {
151
        } else {
146
            print("No se pudo preparar el actualizar un registro en la tabla: \(Constants.TABLE_QUESTION)")
152
            print("No se pudo preparar el actualizar un registro en la tabla: \(Constants.TABLE_QUESTION)")
-
 
153
            database.printError()
147
        }
154
        }
148
        sqlite3_finalize(statement)
155
        sqlite3_finalize(statement)
149
    }
156
    }
Línea 150... Línea 157...
150
 
157
 
-
 
158
    func remove(uuid: String) {
151
    func remove(uuid: String) {
159
        let db = database.open()
152
        let query = "DELETE FROM " + Constants.TABLE_QUESTION +
160
        let query = "DELETE FROM " + Constants.TABLE_QUESTION +
153
            " WHERE " + Constants.TABLE_QUESTION_FIELD_UUID + " = '\(uuid)' ;"
161
            " WHERE " + Constants.TABLE_QUESTION_FIELD_UUID + " = '\(uuid)' ;"
154
        var statement : OpaquePointer? = nil
162
        var statement : OpaquePointer? = nil
155
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
163
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
156
            if sqlite3_step(statement) != SQLITE_DONE {
164
            if sqlite3_step(statement) != SQLITE_DONE {
-
 
165
                print("No se pudo borrar el registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_QUESTION)")
157
                print("No se pudo borrar el registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_QUESTION)")
166
                database.printError()
158
            }
167
            }
159
        } else {
168
        } else {
-
 
169
            print("No se pudo prepara el borrar de un registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_QUESTION)" )
160
            print("No se pudo prepara el borrar de un registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_QUESTION)" )
170
            database.printError()
161
        }
171
        }
162
        sqlite3_finalize(statement)
172
        sqlite3_finalize(statement)
Línea 163... Línea 173...
163
    }
173
    }
-
 
174
 
164
 
175
    func removeAll() {
165
    func removeAll() {
176
        let db = database.open()
166
        let query = "DELETE FROM " + Constants.TABLE_QUESTION + ";"
177
        let query = "DELETE FROM " + Constants.TABLE_QUESTION + ";"
167
        var statement : OpaquePointer? = nil
178
        var statement : OpaquePointer? = nil
168
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
179
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
-
 
180
            if sqlite3_step(statement) != SQLITE_DONE {
169
            if sqlite3_step(statement) != SQLITE_DONE {
181
                print("No se pudo borrar todos los registros de la tabla: \(Constants.TABLE_QUESTION)")
170
                print("No se pudo borrar todos los registros de la tabla: \(Constants.TABLE_QUESTION)")
182
                database.printError()
171
            }
183
            }
-
 
184
        } else {
172
        } else {
185
            print("No se pudo preparar el borrar todos los registros de la tabla: \(Constants.TABLE_QUESTION)")
173
            print("No se pudo preparar el borrar todos los registros de la tabla: \(Constants.TABLE_QUESTION)")
186
            database.printError()
174
        }
187
        }
Línea 175... Línea 188...
175
        sqlite3_finalize(statement)
188
        sqlite3_finalize(statement)