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 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 CapsuleDao {
11
class CapsuleDao {
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
-
 
14
    
-
 
15
    static let sharedInstance: CapsuleDao = {
-
 
16
           let instance = CapsuleDao()
-
 
17
           
-
 
18
           // setup code
-
 
19
           return instance
-
 
20
    }()
-
 
Línea 21... Línea 13...
21
    
13
    private let db : OpaquePointer?
22
    
-
 
-
 
14
    
23
    func getCountAll() -> Int {
15
    func getCountAll() -> Int {
24
        let db = database.open()
16
        
Línea 25... Línea 17...
25
        var count = 0
17
        var count = 0
Línea 37... Línea 29...
37
        sqlite3_finalize(statement)
29
        sqlite3_finalize(statement)
38
        return count
30
        return count
39
    }
31
    }
Línea 40... Línea 32...
40
        
32
        
41
    func getCountByTopicUuid(topicUuid: String) -> Int {
-
 
-
 
33
    func getCountByTopicUuid(topicUuid: String) -> Int {
42
        let db = database.open()
34
        
43
        var count = 0
35
        var count = 0
44
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_CAPSULE +
36
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_CAPSULE +
Línea 45... Línea 37...
45
            " WHERE " +  Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " = \(topicUuid) LIMIT 1"
37
            " WHERE " +  Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " = \(topicUuid) LIMIT 1"
Línea 55... Línea 47...
55
        }
47
        }
56
        sqlite3_finalize(statement)
48
        sqlite3_finalize(statement)
57
        return count
49
        return count
58
    }
50
    }
Línea 59... Línea 51...
59
    
51
    
60
    func selectAll()-> [CapsuleModel] {
-
 
-
 
52
    func selectAll() -> [CapsuleModel] {
61
        let db = database.open()
53
        
62
        var records = [CapsuleModel]()
54
        var records = [CapsuleModel]()
63
        var query = "SELECT "
55
        var query = "SELECT "
64
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
56
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
65
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
57
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 105... Línea 97...
105
        sqlite3_finalize(statement)
97
        sqlite3_finalize(statement)
106
        return records
98
        return records
107
    }
99
    }
Línea 108... Línea 100...
108
        
100
        
109
    func selectAllByTopicUuid(topicUuid: String)-> [CapsuleModel] {
-
 
-
 
101
    func selectAllByTopicUuid(topicUuid: String)-> [CapsuleModel] {
110
        let db = database.open()
102
        
111
        var records = [CapsuleModel]()
103
        var records = [CapsuleModel]()
112
        var query = "SELECT "
104
        var query = "SELECT "
113
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
105
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
114
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
106
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 155... Línea 147...
155
        sqlite3_finalize(statement)
147
        sqlite3_finalize(statement)
156
        return records
148
        return records
157
    }
149
    }
Línea 158... Línea 150...
158
    
150
    
159
    func selectLastPendingByUserUuid(userUuid: String)-> [CapsuleModel] {
-
 
-
 
151
    func selectLastPendingByUserUuid(userUuid: String)-> [CapsuleModel] {
160
        let db = database.open()
152
        
161
        var records = [CapsuleModel]()
153
        var records = [CapsuleModel]()
162
        var query = "SELECT "
154
        var query = "SELECT "
163
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
155
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
164
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
156
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 213... Línea 205...
213
        sqlite3_finalize(statement)
205
        sqlite3_finalize(statement)
214
        return records
206
        return records
215
    }
207
    }
Línea 216... Línea 208...
216
    
208
    
217
    func selectAllPendingByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
-
 
-
 
209
    func selectAllPendingByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
218
        let db = database.open()
210
        
219
        var records = [CapsuleModel]()
211
        var records = [CapsuleModel]()
220
        var query = "SELECT "
212
        var query = "SELECT "
221
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
213
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
222
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
214
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 278... Línea 270...
278
        sqlite3_finalize(statement)
270
        sqlite3_finalize(statement)
279
        return records
271
        return records
280
    }
272
    }
Línea 281... Línea 273...
281
    
273
    
282
    func selectAllInProgressByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
-
 
-
 
274
    func selectAllInProgressByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
283
        let db = database.open()
275
        
284
        var records = [CapsuleModel]()
276
        var records = [CapsuleModel]()
285
        var query = "SELECT "
277
        var query = "SELECT "
286
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
278
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
287
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
279
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 344... Línea 336...
344
        sqlite3_finalize(statement)
336
        sqlite3_finalize(statement)
345
        return records
337
        return records
346
    }
338
    }
Línea 347... Línea 339...
347
    
339
    
348
    func selectAllCompletedByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
-
 
-
 
340
    func selectAllCompletedByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
349
        let db = database.open()
341
        
350
        var records = [CapsuleModel]()
342
        var records = [CapsuleModel]()
351
        var query = "SELECT "
343
        var query = "SELECT "
352
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
344
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
353
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
345
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 411... Línea 403...
411
        sqlite3_finalize(statement)
403
        sqlite3_finalize(statement)
412
        return records
404
        return records
413
    }
405
    }
Línea 414... Línea 406...
414
    
406
    
415
    func selectLastInProgress(userUuid: String)-> CapsuleModel {
-
 
-
 
407
    func selectLastInProgress(userUuid: String)-> CapsuleModel {
416
        let db = database.open()
408
        
417
        var model = CapsuleModel()
409
        var model = CapsuleModel()
418
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
410
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
419
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
411
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
420
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
412
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
Línea 474... Línea 466...
474
     WHERE uuid IN (SELECT capsule_uuid FROM tb_progress WHERE type = 'c' AND user_uuid = '4cf9fb4b-0190-4bb4-9369-15eb68e9cace' AND completed = 0)
466
     WHERE uuid IN (SELECT capsule_uuid FROM tb_progress WHERE type = 'c' AND user_uuid = '4cf9fb4b-0190-4bb4-9369-15eb68e9cace' AND completed = 0)
475
     ORDER BY name
467
     ORDER BY name
476
     */
468
     */
Línea 477... Línea 469...
477
 
469
 
478
    func selectByUuid(uuid: String)-> CapsuleModel {
-
 
-
 
470
    func selectByUuid(uuid: String)-> CapsuleModel {
479
        let db = database.open()
471
        
480
        var model = CapsuleModel()
472
        var model = CapsuleModel()
481
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
473
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
482
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
474
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
483
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
475
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
Línea 513... Línea 505...
513
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 10)))
505
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 10)))
514
                model.updatedOn  = String(describing: String(cString: sqlite3_column_text(statement, 11)))
506
                model.updatedOn  = String(describing: String(cString: sqlite3_column_text(statement, 11)))
Línea 515... Línea 507...
515
                
507
                
516
            }
508
            }
517
        } else {
-
 
-
 
509
        } else {
518
            database.printError()
510
           
519
        }
511
        }
520
        sqlite3_finalize(statement)
512
        sqlite3_finalize(statement)
521
        return model
513
        return model
Línea 522... Línea 514...
522
    }
514
    }
523
        
-
 
-
 
515
        
524
    func insert(capsule: CapsuleModel) {
516
    func insert(capsule: CapsuleModel) {
525
        let db = database.open()
517
        
526
        var query = "INSERT INTO " + Constants.TABLE_CAPSULE + " ( "
518
        var query = "INSERT INTO " + Constants.TABLE_CAPSULE + " ( "
527
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
519
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
528
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + ", "
520
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + ", "
Línea 556... Línea 548...
556
            sqlite3_bind_text(statement, 12, capsule.updatedOn , -1, SQLITE_TRANSIENT)
548
            sqlite3_bind_text(statement, 12, capsule.updatedOn , -1, SQLITE_TRANSIENT)
Línea 557... Línea 549...
557
 
549
 
558
           if (sqlite3_step(statement) != SQLITE_DONE) {
550
           if (sqlite3_step(statement) != SQLITE_DONE) {
Línea 559... Línea -...
559
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
-
 
-
 
551
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
560
            
552
            
561
                database.printError()
553
               
562
           }
554
           }
Línea 563... Línea -...
563
        } else {
-
 
-
 
555
        } else {
564
            print("Fallo la prepración de insertar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
556
            print("Fallo la prepración de insertar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
Línea 565... Línea 557...
565
            
557
            
566
            database.printError()
558
           
Línea 567... Línea 559...
567
        }
559
        }
568
       
-
 
-
 
560
       
569
        sqlite3_finalize(statement)
561
        sqlite3_finalize(statement)
570
    }
562
    }
571
 
563
 
572
    func update(capsule : CapsuleModel) {
564
    func update(capsule : CapsuleModel) {
573
        let db = database.open()
565
        
Línea 586... Línea 578...
586
        var statement : OpaquePointer? = nil
578
        var statement : OpaquePointer? = nil
587
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
579
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
588
            if (sqlite3_step(statement) != SQLITE_DONE) {
580
            if (sqlite3_step(statement) != SQLITE_DONE) {
589
                print("No se pudo actualizar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
581
                print("No se pudo actualizar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
Línea 590... Línea -...
590
           
-
 
-
 
582
           
591
                database.printError()
583
               
592
            }
584
            }
593
        } else {
585
        } else {
Línea 594... Línea -...
594
            print("Fallo la preparación para actualizar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
-
 
-
 
586
            print("Fallo la preparación para actualizar un registro en la tabla: \(Constants.TABLE_CAPSULE)")
595
            
587
            
596
            database.printError()
588
           
597
        }
589
        }
Línea 598... Línea 590...
598
        sqlite3_finalize(statement)
590
        sqlite3_finalize(statement)
599
    }
-
 
-
 
591
    }
600
    
592
    
601
 
593
 
602
 
594
 
603
    func remove(uuid: String) {
595
    func remove(uuid: String) {
604
        let db = database.open()
596
        
605
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE +
597
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE +
Línea 606... Línea -...
606
            " WHERE " + Constants.TABLE_CAPSULE_FIELD_UUID + " = " + "\(uuid) ;"
-
 
-
 
598
            " WHERE " + Constants.TABLE_CAPSULE_FIELD_UUID + " = " + "\(uuid) ;"
607
        var statement : OpaquePointer? = nil
599
        var statement : OpaquePointer? = nil
608
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
600
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
609
            if (sqlite3_step(statement) != SQLITE_DONE) {
601
            if (sqlite3_step(statement) != SQLITE_DONE) {
Línea 610... Línea -...
610
                print("No se pudo borrar el registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_CAPSULE)")
-
 
-
 
602
                print("No se pudo borrar el registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_CAPSULE)")
611
                
603
                
612
                database.printError()
604
               
613
            }
605
            }
Línea 614... Línea 606...
614
        } else {
606
        } else {
615
            print("Fallo la preparación de borrar un registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_CAPSULE)")
-
 
-
 
607
            print("Fallo la preparación de borrar un registro con el uuid: \(uuid) en la tabla: \(Constants.TABLE_CAPSULE)")
616
            
608
            
617
            database.printError()
609
           
618
        }
610
        }
619
        sqlite3_finalize(statement)
611
        sqlite3_finalize(statement)
620
    }
612
    }
Línea 621... Línea -...
621
 
-
 
-
 
613
 
622
    func removeAll() {
614
    func removeAll() {
623
        let db = database.open()
615
        
624
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE + ";"
616
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE + ";"
Línea 625... Línea -...
625
        var statement : OpaquePointer? = nil
-
 
-
 
617
        var statement : OpaquePointer? = nil
626
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
618
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
627
            if (sqlite3_step(statement) != SQLITE_DONE) {
619
            if (sqlite3_step(statement) != SQLITE_DONE) {
628
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_CAPSULE)")
620
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_CAPSULE)")
Línea 629... Línea 621...
629
                
621