Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

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

Rev 17 Rev 19
Línea 8... Línea 8...
8
import Foundation
8
import Foundation
9
import SQLite3
9
import SQLite3
Línea 10... Línea 10...
10
 
10
 
Línea 11... Línea 11...
11
class Database {
11
class Database {
12
 
12
 
Línea 13... Línea 13...
13
    private var db : OpaquePointer?
13
    private var conn : OpaquePointer?
14
    private var path : String = Constants.DATABASE_NAME
14
    private var path : String = Constants.DATABASE_NAME
Línea 15... Línea 15...
15
    
15
    
16
    static let sharedInstance: Database = {
16
    static let sharedInstance: Database = {
17
           let instance = Database()
17
           let instance = Database()
18
           
-
 
Línea -... Línea 18...
-
 
18
           
-
 
19
           // setup code
-
 
20
           return instance
-
 
21
    }()
-
 
22
 
-
 
23
 
-
 
24
    public func printError()
Línea 19... Línea 25...
19
           // setup code
25
    {
20
           return instance
26
        let code = sqlite3_errcode(self.conn)
21
    }()
27
        let message = sqlite3_errmsg(self.conn)
22
    
28
        print("sql error code : \(code) messsage : \(String(describing: message))")
23
 
29
    }
24
 
30
 
25
 
31
 
26
    
32
    
27
    public func createTables()
33
    public func createTables()
Línea 44... Línea 50...
44
        }
50
        }
45
    }
51
    }
Línea 46... Línea 52...
46
 
52
 
Línea 47... Línea 53...
47
    public func open() -> OpaquePointer? {
53
    public func open() -> OpaquePointer? {
Línea 48... Línea 54...
48
        
54
        
49
        if db == nil {
55
        if self.conn == nil {
Línea 50... Línea 56...
50
        
56
        
Línea 51... Línea 57...
51
            let filePath = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
57
            let filePath = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
52
                .appendingPathComponent(path)
58
                .appendingPathComponent(path)
-
 
59
            
-
 
60
            print("Database FilePath : \(filePath.path)")
53
            
61
            
54
            print("Database FilePath : \(filePath.path)")
62
            if sqlite3_open(filePath.path, &self.conn) != SQLITE_OK {
55
            
63
                print("No se pudo abrir la DB : \(path) ")
56
            if sqlite3_open(filePath.path, &db) != SQLITE_OK {
64
                
57
                print("No se pudo abrir la DB : \(path) ")
65
                self.printError()
58
                return nil
66
                return nil
59
            } else {
67
            } else {
Línea 60... Línea 68...
60
                return db
68
                return self.conn
Línea -... Línea 69...
-
 
69
            }
-
 
70
        } else {
61
            }
71
            return self.conn
62
        } else {
-
 
63
            return db
-
 
64
        }
-
 
65
        
-
 
66
    }
72
        }
Línea 67... Línea 73...
67
    
73
        
68
    func deleteTables() {
74
    }
Línea 69... Línea 75...
69
        let queries = [
75
    
70
            "DELETE FROM " + Constants.TABLE_PROGRESS + ";",
76
    
71
            "DELETE FROM " + Constants.TABLE_USER_LOG + ";",
77
    
-
 
78
    func executeMultiQuery(queries: [String]) {
-
 
79
        
72
            "DELETE FROM " + Constants.TABLE_USER_NOTIFICATION + ";"
80
        
73
        ]
81
        queries.forEach { query in
74
        
82
            var statement : OpaquePointer? = nil
Línea -... Línea 83...
-
 
83
            
-
 
84
            if sqlite3_prepare_v2(self.conn, query, -1, &statement, nil) == SQLITE_OK {
75
        queries.forEach { query in
85
                if sqlite3_step(statement) != SQLITE_DONE {
Línea 76... Línea 86...
76
            var statement : OpaquePointer? = nil
86
                    print("Fallo la consulta: \(query) ")
77
            
87
                    
78
            if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
88
                    self.printError()
Línea 113... Línea 123...
113
        sql = sql + Constants.TABLE_APP_FIELD_LAST_CHECK_CHANGES + " TEXT, "
123
        sql = sql + Constants.TABLE_APP_FIELD_LAST_CHECK_CHANGES + " TEXT, "
114
        sql = sql + Constants.TABLE_APP_FIELD_URL_EXTERNAL_DOWNLOADED + " TEXT, "
124
        sql = sql + Constants.TABLE_APP_FIELD_URL_EXTERNAL_DOWNLOADED + " TEXT, "
115
        sql = sql + " PRIMARY KEY(`" +  Constants.TABLE_APP_FIELD_ID + "`) "
125
        sql = sql + " PRIMARY KEY(`" +  Constants.TABLE_APP_FIELD_ID + "`) "
116
        sql = sql + ");"
126
        sql = sql + ");"
Línea 117... Línea -...
117
        
-
 
118
        let sql1 = "CREATE INDEX `idx_app_id` ON `" +  Constants.TABLE_APP + "` (`" +  Constants.TABLE_APP_FIELD_ID + "` );"
127
        
119
        
-
 
120
        let sql2 = "CREATE INDEX `idx_app_user_uuid` ON `" +  Constants.TABLE_APP + "` (`" +  Constants.TABLE_APP_FIELD_USER_UUID + "` );"
-
 
121
        
-
 
Línea 122... Línea -...
122
        let sql3 = "CREATE INDEX `idx_app_device_uuid` ON `" +  Constants.TABLE_APP + "` (`" +  Constants.TABLE_APP_FIELD_DEVICE_UUID + "` );"
-
 
-
 
128
 
123
        
129
        
Línea 124... Línea 130...
124
        let query = sql + sql1 + sql2 + sql3
130
 
125
        var statement : OpaquePointer? = nil
131
        var statement : OpaquePointer? = nil
-
 
132
        
-
 
133
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
134
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
135
                
-
 
136
                let queries = [
-
 
137
                    "CREATE INDEX `idx_app_id` ON `" +  Constants.TABLE_APP + "` (`" +  Constants.TABLE_APP_FIELD_ID + "` );",
-
 
138
                
-
 
139
                    "CREATE INDEX `idx_app_user_uuid` ON `" +  Constants.TABLE_APP + "` (`" +  Constants.TABLE_APP_FIELD_USER_UUID + "` );",
-
 
140
                
-
 
141
                    "CREATE INDEX `idx_app_device_uuid` ON `" +  Constants.TABLE_APP + "` (`" +  Constants.TABLE_APP_FIELD_DEVICE_UUID + "` );"
-
 
142
                ]
-
 
143
                
-
 
144
                executeMultiQuery(queries: queries)
126
        
145
                
-
 
146
                
-
 
147
            } else {
127
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
148
                print("No se pudo crear la tabla: \(Constants.TABLE_APP)")
128
            if sqlite3_step(statement) != SQLITE_DONE {
149
                
129
                print("No se pudo crear la tabla: \(Constants.TABLE_APP)")
150
                self.printError()
Línea -... Línea 151...
-
 
151
            }
-
 
152
        } else {
130
            }
153
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_APP)")
131
        } else {
154
            
Línea 132... Línea 155...
132
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_APP)")
155
            self.printError()
133
            
156
            
Línea 145... Línea 168...
145
        sql = sql + Constants.TABLE_USER_NOTIFICATION_FIELD_VIEWED + " INTEGER, "
168
        sql = sql + Constants.TABLE_USER_NOTIFICATION_FIELD_VIEWED + " INTEGER, "
146
        sql = sql + Constants.TABLE_USER_NOTIFICATION_FIELD_ADDED_ON + " TEXT, "
169
        sql = sql + Constants.TABLE_USER_NOTIFICATION_FIELD_ADDED_ON + " TEXT, "
147
        sql = sql + " PRIMARY KEY(`" +  Constants.TABLE_USER_NOTIFICATION_FIELD_ID + "`) "
170
        sql = sql + " PRIMARY KEY(`" +  Constants.TABLE_USER_NOTIFICATION_FIELD_ID + "`) "
148
        sql = sql + ");"
171
        sql = sql + ");"
Línea 149... Línea -...
149
        
-
 
150
        let sql1 = "CREATE INDEX `idx_user_unotification_id` ON `" +  Constants.TABLE_USER_NOTIFICATION + "` (`" +  Constants.TABLE_USER_NOTIFICATION_FIELD_ID + "` );"
-
 
151
        
-
 
Línea 152... Línea -...
152
        let sql2 = "CREATE INDEX `idx_user_notification_user_uuid` ON `" +  Constants.TABLE_USER_NOTIFICATION + "` (`" +  Constants.TABLE_USER_NOTIFICATION_FIELD_USER_UUID + "` );"
-
 
-
 
172
        
153
        
173
        
Línea 154... Línea 174...
154
        let query = sql + sql1 + sql2
174
    
155
        var statement : OpaquePointer? = nil
175
        var statement : OpaquePointer? = nil
-
 
176
        
-
 
177
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
178
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
179
                
-
 
180
                let queries = [
-
 
181
                    "CREATE INDEX `idx_user_unotification_id` ON `" +  Constants.TABLE_USER_NOTIFICATION + "` (`" +  Constants.TABLE_USER_NOTIFICATION_FIELD_ID + "` );",
-
 
182
                
-
 
183
                    "CREATE INDEX `idx_user_notification_user_uuid` ON `" +  Constants.TABLE_USER_NOTIFICATION + "` (`" +  Constants.TABLE_USER_NOTIFICATION_FIELD_USER_UUID + "` );"
-
 
184
                ]
-
 
185
                
156
        
186
                executeMultiQuery(queries: queries)
-
 
187
                
-
 
188
            } else {
157
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
189
                print("No se pudo crear la tabla: \(Constants.TABLE_USER_NOTIFICATION)")
158
            if sqlite3_step(statement) != SQLITE_DONE {
190
                
159
                print("No se pudo crear la tabla: \(Constants.TABLE_USER_NOTIFICATION)")
191
                self.printError()
160
            }
192
            }
-
 
193
        } else {
161
        } else {
194
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_USER_NOTIFICATION)")
162
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_USER_NOTIFICATION)")
195
         
Línea 163... Línea 196...
163
            
196
            self.printError()
164
        }
197
        }
Línea 171... Línea 204...
171
        sql = sql + Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + " TEXT,"
204
        sql = sql + Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + " TEXT,"
172
        sql = sql + Constants.TABLE_USER_EXTENDED_FIELD_LABEL + " TEXT,"
205
        sql = sql + Constants.TABLE_USER_EXTENDED_FIELD_LABEL + " TEXT,"
173
        sql = sql + Constants.TABLE_USER_EXTENDED_FIELD_VALUE + " TEXT"
206
        sql = sql + Constants.TABLE_USER_EXTENDED_FIELD_VALUE + " TEXT"
174
        sql = sql + ");"
207
        sql = sql + ");"
Línea 175... Línea -...
175
        
-
 
176
        let sql1 = "CREATE INDEX `idx_user_extended_company_uuid` ON `" +  Constants.TABLE_USER_EXTENDED + "` (`" +  Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + "` );"
-
 
177
        
-
 
178
        let query = sql + sql1
-
 
179
        
208
        
Línea 180... Línea 209...
180
        var statement : OpaquePointer? = nil
209
        var statement : OpaquePointer? = nil
181
        
210
        
-
 
211
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
212
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
213
                
-
 
214
                let queries = [
-
 
215
                    "CREATE INDEX `idx_user_extended_company_uuid` ON `" +  Constants.TABLE_USER_EXTENDED + "` (`" +  Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + "` );"
-
 
216
                ]
-
 
217
                
-
 
218
                executeMultiQuery(queries: queries)
182
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
219
                
-
 
220
            } else {
-
 
221
                print("No se pudo crear la tabla: \(Constants.TABLE_USER_EXTENDED)")
183
            if sqlite3_step(statement) != SQLITE_DONE {
222
                
184
                print("No se pudo crear la tabla: \(Constants.TABLE_USER_EXTENDED)")
223
                self.printError()
185
            }
224
            }
Línea -... Línea 225...
-
 
225
        } else {
-
 
226
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_USER_EXTENDED)")
186
        } else {
227
            
187
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_USER_EXTENDED)")
228
            self.printError()
Línea 188... Línea 229...
188
            
229
            
189
        }
230
        }
Línea 196... Línea 237...
196
        sql = sql + Constants.TABLE_SYNC_FIELD_DATA + " TEXT"
237
        sql = sql + Constants.TABLE_SYNC_FIELD_DATA + " TEXT"
197
        sql = sql + ");"
238
        sql = sql + ");"
Línea 198... Línea 239...
198
        
239
        
Línea 199... Línea 240...
199
        var statement : OpaquePointer? = nil
240
        var statement : OpaquePointer? = nil
200
        
241
        
201
        if sqlite3_prepare_v2(self.db, sql, -1, &statement, nil) == SQLITE_OK {
242
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
243
            if sqlite3_step(statement) != SQLITE_DONE {
-
 
244
                print("No se pudo crear la tabla: \(Constants.TABLE_SYNC)")
202
            if sqlite3_step(statement) != SQLITE_DONE {
245
                
203
                print("No se pudo crear la tabla: \(Constants.TABLE_SYNC)")
246
                self.printError()
204
            }
247
            }
Línea -... Línea 248...
-
 
248
        } else {
-
 
249
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_SYNC)")
205
        } else {
250
            
206
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_SYNC)")
251
            self.printError()
Línea 207... Línea 252...
207
            
252
            
208
        }
253
        }
Línea 214... Línea 259...
214
        sql = sql + Constants.TABLE_COMPANY_FIELD_NAME + " TEXT, "
259
        sql = sql + Constants.TABLE_COMPANY_FIELD_NAME + " TEXT, "
215
        sql = sql + Constants.TABLE_COMPANY_FIELD_IMAGE + " TEXT "
260
        sql = sql + Constants.TABLE_COMPANY_FIELD_IMAGE + " TEXT "
216
        sql = sql + ");"
261
        sql = sql + ");"
217
        var statement : OpaquePointer? = nil
262
        var statement : OpaquePointer? = nil
Línea 218... Línea 263...
218
        
263
        
219
        if sqlite3_prepare_v2(self.db, sql, -1, &statement, nil) == SQLITE_OK {
264
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
265
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
266
                
-
 
267
                let queries = [
-
 
268
                    "CREATE INDEX `idx_company_company_uuid` ON `" +  Constants.TABLE_COMPANY + "` (`" +  Constants.TABLE_COMPANY_FIELD_UUID + "` );"
-
 
269
                ]
-
 
270
                
-
 
271
                executeMultiQuery(queries: queries)
-
 
272
                
220
            if sqlite3_step(statement) != SQLITE_DONE {
273
            } else {
Línea -... Línea 274...
-
 
274
                print("No se pudo crear la tabla: \(Constants.TABLE_COMPANY)");
221
                print("No se pudo crear la tabla: \(Constants.TABLE_COMPANY)");
275
                
222
                
276
                self.printError()
223
            }
277
            }
Línea -... Línea 278...
-
 
278
        } else {
-
 
279
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_COMPANY)")
224
        } else {
280
            
225
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_COMPANY)")
281
            self.printError()
Línea 226... Línea 282...
226
            
282
            
227
        }
283
        }
Línea 237... Línea 293...
237
        sql = sql + Constants.TABLE_TOPIC_FIELD_POSITION + " INTEGER, "
293
        sql = sql + Constants.TABLE_TOPIC_FIELD_POSITION + " INTEGER, "
238
        sql = sql + Constants.TABLE_TOPIC_FIELD_ADDED_ON + " TEXT,"
294
        sql = sql + Constants.TABLE_TOPIC_FIELD_ADDED_ON + " TEXT,"
239
        sql = sql + Constants.TABLE_TOPIC_FIELD_UPDATED_ON + " TEXT "
295
        sql = sql + Constants.TABLE_TOPIC_FIELD_UPDATED_ON + " TEXT "
240
        sql = sql + ");"
296
        sql = sql + ");"
Línea 241... Línea -...
241
        
-
 
242
        let sql1 = "CREATE INDEX `idx_topics_company_uuid` ON `" +  Constants.TABLE_TOPIC + "` (`" +  Constants.TABLE_TOPIC_FIELD_COMPANY_UUID + "` );"
297
        
243
       
-
 
244
        let query = sql + sql1
298
 
Línea 245... Línea 299...
245
        var statement : OpaquePointer? = nil
299
        var statement : OpaquePointer? = nil
246
        
300
        
-
 
301
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
302
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
303
                
-
 
304
                let queries = [
-
 
305
                    "CREATE INDEX `idx_topics_company_uuid` ON `" +  Constants.TABLE_TOPIC + "` (`" +  Constants.TABLE_TOPIC_FIELD_COMPANY_UUID + "` );"
-
 
306
                ]
-
 
307
                
-
 
308
                executeMultiQuery(queries: queries)
247
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
309
                
-
 
310
            } else {
-
 
311
                print("No se pudo crear la tabla: \(Constants.TABLE_TOPIC)")
248
            if sqlite3_step(statement) != SQLITE_DONE {
312
                
249
                print("No se pudo crear la tabla: \(Constants.TABLE_TOPIC)")
313
                self.printError()
250
           }
314
           }
-
 
315
        } else {
-
 
316
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_TOPIC)")
-
 
317
            
251
        } else {
318
            
252
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_TOPIC)")
319
            self.printError()
Línea 253... Línea 320...
253
        }
320
        }
Línea 268... Línea 335...
268
        sql = sql + Constants.TABLE_CAPSULE_FIELD_TOTAL_RATING + " INTEGER, "
335
        sql = sql + Constants.TABLE_CAPSULE_FIELD_TOTAL_RATING + " INTEGER, "
269
        sql = sql + Constants.TABLE_CAPSULE_FIELD_ADDED_ON + " TEXT, "
336
        sql = sql + Constants.TABLE_CAPSULE_FIELD_ADDED_ON + " TEXT, "
270
        sql = sql + Constants.TABLE_CAPSULE_FIELD_UPDATED_ON  + " TEXT "
337
        sql = sql + Constants.TABLE_CAPSULE_FIELD_UPDATED_ON  + " TEXT "
271
        sql = sql + ");"
338
        sql = sql + ");"
Línea 272... Línea -...
272
        
-
 
273
        let sql1 = "CREATE INDEX `idx_capsules_topic_uuid` ON `" +  Constants.TABLE_CAPSULE + "` (`" +  Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + "` );"
339
        
274
        
-
 
275
        let query = sql + sql1
340
 
Línea 276... Línea 341...
276
        var statement : OpaquePointer? = nil
341
        var statement : OpaquePointer? = nil
277
        
342
        
-
 
343
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
344
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
345
                
-
 
346
                let queries = [
-
 
347
                    "CREATE INDEX `idx_capsules_topic_uuid` ON `" +  Constants.TABLE_CAPSULE + "` (`" +  Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + "` );"
-
 
348
               
-
 
349
                ]
-
 
350
                
-
 
351
                executeMultiQuery(queries: queries)
278
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
352
                
-
 
353
            } else {
-
 
354
                print("No se pudo crear la tabla: \(Constants.TABLE_CAPSULE)")
279
            if sqlite3_step(statement) != SQLITE_DONE {
355
                
280
                print("No se pudo crear la tabla: \(Constants.TABLE_CAPSULE)")
356
                self.printError()
281
           }
357
           }
-
 
358
        } else {
-
 
359
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_CAPSULE)")
282
        } else {
360
            
283
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_CAPSULE)")
361
            self.printError()
Línea 284... Línea 362...
284
        }
362
        }
285
    }
363
    }
Línea 297... Línea 375...
297
        sql = sql + Constants.TABLE_SLIDE_FIELD_BACKGROUND + " TEXT,"
375
        sql = sql + Constants.TABLE_SLIDE_FIELD_BACKGROUND + " TEXT,"
298
        sql = sql + Constants.TABLE_SLIDE_FIELD_POSITION + " INTEGER, "
376
        sql = sql + Constants.TABLE_SLIDE_FIELD_POSITION + " INTEGER, "
299
        sql = sql + Constants.TABLE_SLIDE_FIELD_ADDED_ON + " TEXT,"
377
        sql = sql + Constants.TABLE_SLIDE_FIELD_ADDED_ON + " TEXT,"
300
        sql = sql + Constants.TABLE_SLIDE_FIELD_UPDATED_ON + " TEXT);"
378
        sql = sql + Constants.TABLE_SLIDE_FIELD_UPDATED_ON + " TEXT);"
Línea 301... Línea -...
301
        
-
 
Línea 302... Línea -...
302
        let sql1 = "CREATE INDEX `idx_slides_quiz_uuid` ON `" +  Constants.TABLE_SLIDE + "` (`" +  Constants.TABLE_SLIDE_FIELD_QUIZ_UUID + "` );"
-
 
303
        
379
        
304
        let sql2 = "CREATE INDEX `idx_slides_capsule_uuid` ON `" +  Constants.TABLE_SLIDE + "` (`" +  Constants.TABLE_SLIDE_FIELD_CAPSULE_UUID + "` );"
-
 
305
       
-
 
306
        let sql3 = "CREATE INDEX `idx_slides_topic_uuid` ON `" +  Constants.TABLE_SLIDE + "` (`" +  Constants.TABLE_SLIDE_FIELD_TOPIC_UUID + "` );"
-
 
307
       
380
        
Línea 308... Línea 381...
308
        let query = sql + sql1 + sql2 + sql3
381
 
309
        var statement : OpaquePointer? = nil
382
        var statement : OpaquePointer? = nil
-
 
383
        
-
 
384
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
385
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
386
                
-
 
387
                let queries = [
-
 
388
                    "CREATE INDEX `idx_slides_quiz_uuid` ON `" +  Constants.TABLE_SLIDE + "` (`" +  Constants.TABLE_SLIDE_FIELD_QUIZ_UUID + "` );",
-
 
389
                
-
 
390
                    "CREATE INDEX `idx_slides_capsule_uuid` ON `" +  Constants.TABLE_SLIDE + "` (`" +  Constants.TABLE_SLIDE_FIELD_CAPSULE_UUID + "` );",
-
 
391
               
-
 
392
                    "CREATE INDEX `idx_slides_topic_uuid` ON `" +  Constants.TABLE_SLIDE + "` (`" +  Constants.TABLE_SLIDE_FIELD_TOPIC_UUID + "` );"
-
 
393
               
-
 
394
                ]
-
 
395
                
310
        
396
                executeMultiQuery(queries: queries)
-
 
397
                
-
 
398
            } else {
311
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
399
                print("No se pudo crear la tabla: \(Constants.TABLE_SLIDE)")
312
            if sqlite3_step(statement) != SQLITE_DONE {
400
                
313
                print("No se pudo crear la tabla: \(Constants.TABLE_SLIDE)")
401
                self.printError()
-
 
402
           }
-
 
403
        } else {
314
           }
404
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_SLIDE)")
315
        } else {
405
            
Línea 316... Línea 406...
316
            print("Fallo la preparación para crear la tabla: \(Constants.TABLE_SLIDE)")
406
            self.printError()
Línea 334... Línea 424...
334
        sql = sql + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED  + " INTEGER,"
424
        sql = sql + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED  + " INTEGER,"
335
        sql = sql + Constants.TABLE_PROGRESS_FIELD_COMPLETED  + " INTEGER,"
425
        sql = sql + Constants.TABLE_PROGRESS_FIELD_COMPLETED  + " INTEGER,"
336
        sql = sql + Constants.TABLE_PROGRESS_FIELD_ADDED_ON  + " TEXT,"
426
        sql = sql + Constants.TABLE_PROGRESS_FIELD_ADDED_ON  + " TEXT,"
337
        sql = sql + Constants.TABLE_PROGRESS_FIELD_UPDATED_ON  + " TEXT);"
427
        sql = sql + Constants.TABLE_PROGRESS_FIELD_UPDATED_ON  + " TEXT);"
Línea 338... Línea -...
338
       
-
 
339
        let sql1 = "CREATE INDEX `idx_progress_topic_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + "` );"
428
       
340
        
-
 
341
        let sql2 = "CREATE INDEX `idx_progress_capsule_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + "` );"
-
 
342
        
-
 
343
        let sql3 = "CREATE INDEX `idx_progress_slide_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + "` );"
-
 
344
        
-
 
Línea 345... Línea -...
345
        let sql4 = "CREATE INDEX `idx_progress_user_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "` );"
-
 
-
 
429
 
346
        
430
        
Línea 347... Línea 431...
347
        let query = sql + sql1 + sql2 + sql3 + sql4
431
 
348
        var statement : OpaquePointer? = nil
432
        var statement : OpaquePointer? = nil
-
 
433
        
-
 
434
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
435
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
436
                
-
 
437
                let queries = [
-
 
438
                    "CREATE INDEX `idx_progress_topic_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + "` );",
-
 
439
                
-
 
440
                    "CREATE INDEX `idx_progress_capsule_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + "` );",
-
 
441
                
-
 
442
                    "CREATE INDEX `idx_progress_slide_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + "` );",
-
 
443
                
-
 
444
                    "CREATE INDEX `idx_progress_user_uuid` ON `" +  Constants.TABLE_PROGRESS + "` (`" +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "` );"
-
 
445
                ]
-
 
446
                
349
        
447
                executeMultiQuery(queries: queries)
-
 
448
                
-
 
449
            } else {
350
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
450
                print("No se pudo crear la tabla: \(Constants.TABLE_PROGRESS)")
351
            if sqlite3_step(statement) != SQLITE_DONE {
451
               
352
                print("No se pudo crear la tabla: \(Constants.TABLE_PROGRESS)")
452
                self.printError()
-
 
453
           }
-
 
454
        } else {
353
           }
455
            print("Fallo la preparación para la creación de la tabla: \(Constants.TABLE_PROGRESS)")
354
        } else {
456
 
Línea 355... Línea 457...
355
            print("Fallo la preparación para la creación de la tabla: \(Constants.TABLE_PROGRESS)")
457
            self.printError()
356
        }
458
        }
Línea 366... Línea 468...
366
        sql = sql + Constants.TABLE_USER_LOG_FIELD_USER_UUID + " TEXT,"
468
        sql = sql + Constants.TABLE_USER_LOG_FIELD_USER_UUID + " TEXT,"
367
        sql = sql + Constants.TABLE_USER_LOG_FIELD_ACTIVITY + " TEXT,"
469
        sql = sql + Constants.TABLE_USER_LOG_FIELD_ACTIVITY + " TEXT,"
368
        sql = sql + Constants.TABLE_USER_LOG_FIELD_ADDED_ON + " TEXT"
470
        sql = sql + Constants.TABLE_USER_LOG_FIELD_ADDED_ON + " TEXT"
369
        sql = sql + ");"
471
        sql = sql + ");"
Línea 370... Línea -...
370
        
-
 
371
        let sql1 = "CREATE INDEX `idx_user_log_added_on` ON `" +  Constants.TABLE_USER_LOG + "` (`" +  Constants.TABLE_USER_LOG_FIELD_ADDED_ON + "` );"
472
        
372
        
-
 
373
        let query = sql + sql1
473
 
Línea 374... Línea 474...
374
        var statement : OpaquePointer? = nil
474
        var statement : OpaquePointer? = nil
375
        
475
        
-
 
476
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
477
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
478
                
-
 
479
                let queries = [
-
 
480
                    "CREATE INDEX `idx_user_log_user_uuid` ON `" +  Constants.TABLE_USER_LOG + "` (`" +  Constants.TABLE_USER_LOG_FIELD_USER_UUID + "` );",
-
 
481
                    
-
 
482
                    "CREATE INDEX `idx_user_log_added_on` ON `" +  Constants.TABLE_USER_LOG + "` (`" +  Constants.TABLE_USER_LOG_FIELD_ADDED_ON + "` );"
-
 
483
                ]
-
 
484
                
-
 
485
                executeMultiQuery(queries: queries)
376
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
486
                
-
 
487
            } else {
-
 
488
                print("No se pudo crear la tabla: \(Constants.TABLE_USER_LOG)")
377
            if sqlite3_step(statement) != SQLITE_DONE {
489
                
378
                print("No se pudo crear la tabla: \(Constants.TABLE_USER_LOG)")
490
                self.printError()
379
           }
491
           }
-
 
492
        } else {
-
 
493
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_USER_LOG)")
380
        } else {
494
            
381
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_USER_LOG)")
495
            self.printError()
Línea 394... Línea 508...
394
        sql = sql + Constants.TABLE_QUIZ_FIELD_POINTS + " INTEGER,"
508
        sql = sql + Constants.TABLE_QUIZ_FIELD_POINTS + " INTEGER,"
395
        sql = sql + Constants.TABLE_QUIZ_FIELD_MINIMUM_POINTS_REQUIRED + " INTEGER, "
509
        sql = sql + Constants.TABLE_QUIZ_FIELD_MINIMUM_POINTS_REQUIRED + " INTEGER, "
396
        sql = sql + Constants.TABLE_QUIZ_FIELD_MAX_TIME + " INTEGER, "
510
        sql = sql + Constants.TABLE_QUIZ_FIELD_MAX_TIME + " INTEGER, "
397
        sql = sql + Constants.TABLE_QUIZ_FIELD_ADDED_ON + " TEXT,"
511
        sql = sql + Constants.TABLE_QUIZ_FIELD_ADDED_ON + " TEXT,"
398
        sql = sql + Constants.TABLE_QUIZ_FIELD_UPDATED_ON + " TEXT);"
512
        sql = sql + Constants.TABLE_QUIZ_FIELD_UPDATED_ON + " TEXT);"
399
        
513
 
400
        let sql1 = "CREATE INDEX `idx_quizzes_company_uuid` ON `" +  Constants.TABLE_QUIZ + "` (`" +  Constants.TABLE_QUIZ_FIELD_COMPANY_UUID + "` );"
-
 
401
        
-
 
402
        let query = sql + sql1
-
 
Línea 403... Línea 514...
403
        
514
        
Línea 404... Línea 515...
404
        var statement : OpaquePointer? = nil
515
        var statement : OpaquePointer? = nil
405
        
516
        
-
 
517
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
518
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
519
                
-
 
520
                let queries = [
-
 
521
                    "CREATE INDEX `idx_quizzes_company_uuid` ON `" +  Constants.TABLE_QUIZ + "` (`" +  Constants.TABLE_QUIZ_FIELD_COMPANY_UUID + "` );"
-
 
522
                ]
-
 
523
                
-
 
524
                executeMultiQuery(queries: queries)
406
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
525
                
-
 
526
            } else {
-
 
527
                print("No se pudo crear la tabla: \(Constants.TABLE_QUIZ)")
407
            if sqlite3_step(statement) != SQLITE_DONE {
528
                
408
                print("No se pudo crear la tabla: \(Constants.TABLE_QUIZ)")
529
                self.printError()
409
           }
530
           }
-
 
531
        } else {
-
 
532
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_QUIZ)")
410
        } else {
533
            
Línea 411... Línea 534...
411
            print("Fallo la preparación de la creación de la tabla: \(Constants.TABLE_QUIZ)")
534
            self.printError()
Línea 412... Línea 535...
412
        }
535
        }
Línea 422... Línea 545...
422
        sql = sql + Constants.TABLE_QUESTION_FIELD_POINTS + " INTEGER,"
545
        sql = sql + Constants.TABLE_QUESTION_FIELD_POINTS + " INTEGER,"
423
        sql = sql + Constants.TABLE_QUESTION_FIELD_POSITION + " INTEGER, "
546
        sql = sql + Constants.TABLE_QUESTION_FIELD_POSITION + " INTEGER, "
424
        sql = sql + Constants.TABLE_QUESTION_FIELD_ADDED_ON + " TEXT,"
547
        sql = sql + Constants.TABLE_QUESTION_FIELD_ADDED_ON + " TEXT,"
425
        sql = sql + Constants.TABLE_QUESTION_FIELD_UPDATED_ON + " TEXT);"
548
        sql = sql + Constants.TABLE_QUESTION_FIELD_UPDATED_ON + " TEXT);"
Línea 426... Línea -...
426
        
-
 
427
        let sql1 = "CREATE INDEX `idx_questions_quiz_uuid` ON " +  Constants.TABLE_QUIZ + "` (`" +  Constants.TABLE_QUIZ_FIELD_UUID + "` );"
-
 
428
        
-
 
429
        let query = sql + sql1
-
 
430
        
549
        
Línea 431... Línea 550...
431
        var statement : OpaquePointer? = nil
550
        var statement : OpaquePointer? = nil
432
        
551
        
-
 
552
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
553
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
554
            
-
 
555
                let queries = [
-
 
556
                    "CREATE INDEX `idx_questions_quiz_uuid` ON " +  Constants.TABLE_QUIZ + "` (`" +  Constants.TABLE_QUIZ_FIELD_UUID + "` );"
-
 
557
                ]
-
 
558
                
433
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
559
                executeMultiQuery(queries: queries)
-
 
560
            } else {
-
 
561
                print("No se pudo crear la tabla: \(Constants.TABLE_QUESTION)")
434
            if sqlite3_step(statement) != SQLITE_DONE {
562
                
435
                print("No se pudo crear la tabla: \(Constants.TABLE_QUESTION)")
563
                self.printError()
436
           }
564
           }
-
 
565
        } else {
-
 
566
            print("Fallo la preparación de la creación  de la tabla: \(Constants.TABLE_QUESTION)")
437
        } else {
567
            
438
            print("Fallo la preparación de la creación  de la tabla: \(Constants.TABLE_QUESTION)")
568
            self.printError()
Línea 439... Línea 569...
439
        }
569
        }
440
    }
570
    }
Línea 447... Línea 577...
447
        sql = sql + Constants.TABLE_ANSWER_FIELD_POINTS + " INTEGER,"
577
        sql = sql + Constants.TABLE_ANSWER_FIELD_POINTS + " INTEGER,"
448
        sql = sql + Constants.TABLE_ANSWER_FIELD_CORRECT + " TEXT, "
578
        sql = sql + Constants.TABLE_ANSWER_FIELD_CORRECT + " TEXT, "
449
        sql = sql + Constants.TABLE_ANSWER_FIELD_ADDED_ON + " TEXT, "
579
        sql = sql + Constants.TABLE_ANSWER_FIELD_ADDED_ON + " TEXT, "
450
        sql = sql + Constants.TABLE_ANSWER_FIELD_UPDATED_ON + " TEXT); "
580
        sql = sql + Constants.TABLE_ANSWER_FIELD_UPDATED_ON + " TEXT); "
Línea 451... Línea -...
451
        
-
 
452
        let sql1 = "CREATE INDEX `idx_answers_question_uuid` ON `" +  Constants.TABLE_QUESTION + "` (`" +  Constants.TABLE_QUESTION_FIELD_UUID + "` );"
-
 
-
 
581
        
453
        let query = sql + sql1
582
 
Línea 454... Línea 583...
454
        var statement : OpaquePointer? = nil
583
        var statement : OpaquePointer? = nil
455
        
584
        
-
 
585
        if sqlite3_prepare_v2(self.conn, sql, -1, &statement, nil) == SQLITE_OK {
-
 
586
            if sqlite3_step(statement) == SQLITE_DONE {
-
 
587
                let queries = [
-
 
588
                    "CREATE INDEX `idx_answers_question_uuid` ON `" +  Constants.TABLE_QUESTION + "` (`" +  Constants.TABLE_QUESTION_FIELD_UUID + "` );"
-
 
589
                ]
-
 
590
                
-
 
591
                executeMultiQuery(queries: queries)
456
        if sqlite3_prepare_v2(self.db, query, -1, &statement, nil) == SQLITE_OK {
592
                
-
 
593
            } else {
-
 
594
                print("No se pudo crear la tabla: \(Constants.TABLE_ANSWER)")
457
            if sqlite3_step(statement) != SQLITE_DONE {
595
                
458
                print("No se pudo crear la tabla: \(Constants.TABLE_ANSWER)")
596
                self.printError()
459
           }
597
           }
-
 
598
        } else {
-
 
599
            print("Fallo la preparación para la creación de la tabla: \(Constants.TABLE_ANSWER)")
460
        } else {
600
            
461
            print("Fallo la preparación para la creación de la tabla: \(Constants.TABLE_ANSWER)")
601
            self.printError()