Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

Rev 16 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16 Rev 17
Línea 3... Línea 3...
3
//  twogetskills
3
//  twogetskills
4
//
4
//
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
6
//
6
//
Línea 7... Línea 7...
7
 
7
 
8
import UIKit
8
import SwiftUI
Línea 9... Línea 9...
9
import SQLite3
9
import SQLite3
-
 
10
 
10
 
11
class CapsuleDao {
11
class CapsuleDao {
-
 
-
 
12
    private var database = Environment(\.database).wrappedValue
Línea 12... Línea 13...
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    private var db : Database.sharedInstance.open()
-
 
-
 
14
    
14
    
15
    
15
    func getCountAll() -> Int {
16
    func getCountAll() -> Int {
Línea 16... Línea 17...
16
        
17
        let db = database.open()
Línea 29... Línea 30...
29
        sqlite3_finalize(statement)
30
        sqlite3_finalize(statement)
30
        return count
31
        return count
31
    }
32
    }
Línea 32... Línea 33...
32
        
33
        
33
    func getCountByTopicUuid(topicUuid: String) -> Int {
-
 
-
 
34
    func getCountByTopicUuid(topicUuid: String) -> Int {
34
        
35
        let db = database.open()
35
        var count = 0
36
        var count = 0
36
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_CAPSULE +
37
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_CAPSULE +
Línea 37... Línea 38...
37
            " WHERE " +  Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " = \(topicUuid) LIMIT 1"
38
            " WHERE " +  Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " = \(topicUuid) LIMIT 1"
Línea 48... Línea 49...
48
        sqlite3_finalize(statement)
49
        sqlite3_finalize(statement)
49
        return count
50
        return count
50
    }
51
    }
Línea 51... Línea 52...
51
    
52
    
52
    func selectAll() -> [CapsuleModel] {
-
 
-
 
53
    func selectAll() -> [CapsuleModel] {
53
        
54
        let db = database.open()
54
        var records = [CapsuleModel]()
55
        var records = [CapsuleModel]()
55
        var query = "SELECT "
56
        var query = "SELECT "
56
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
57
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
57
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
58
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 97... Línea 98...
97
        sqlite3_finalize(statement)
98
        sqlite3_finalize(statement)
98
        return records
99
        return records
99
    }
100
    }
Línea 100... Línea 101...
100
        
101
        
101
    func selectAllByTopicUuid(topicUuid: String)-> [CapsuleModel] {
-
 
-
 
102
    func selectAllByTopicUuid(topicUuid: String)-> [CapsuleModel] {
102
        
103
        let db = database.open()
103
        var records = [CapsuleModel]()
104
        var records = [CapsuleModel]()
104
        var query = "SELECT "
105
        var query = "SELECT "
105
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
106
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
106
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
107
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 147... Línea 148...
147
        sqlite3_finalize(statement)
148
        sqlite3_finalize(statement)
148
        return records
149
        return records
149
    }
150
    }
Línea 150... Línea 151...
150
    
151
    
151
    func selectLastPendingByUserUuid(userUuid: String)-> [CapsuleModel] {
-
 
-
 
152
    func selectLastPendingByUserUuid(userUuid: String)-> [CapsuleModel] {
152
        
153
        let db = database.open()
153
        var records = [CapsuleModel]()
154
        var records = [CapsuleModel]()
154
        var query = "SELECT "
155
        var query = "SELECT "
155
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
156
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
156
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
157
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 205... Línea 206...
205
        sqlite3_finalize(statement)
206
        sqlite3_finalize(statement)
206
        return records
207
        return records
207
    }
208
    }
Línea 208... Línea 209...
208
    
209
    
209
    func selectAllPendingByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
-
 
-
 
210
    func selectAllPendingByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
210
        
211
        let db = database.open()
211
        var records = [CapsuleModel]()
212
        var records = [CapsuleModel]()
212
        var query = "SELECT "
213
        var query = "SELECT "
213
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
214
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
214
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
215
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 270... Línea 271...
270
        sqlite3_finalize(statement)
271
        sqlite3_finalize(statement)
271
        return records
272
        return records
272
    }
273
    }
Línea 273... Línea 274...
273
    
274
    
274
    func selectAllInProgressByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
-
 
-
 
275
    func selectAllInProgressByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
275
        
276
        let db = database.open()
276
        var records = [CapsuleModel]()
277
        var records = [CapsuleModel]()
277
        var query = "SELECT "
278
        var query = "SELECT "
278
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
279
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
279
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
280
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 336... Línea 337...
336
        sqlite3_finalize(statement)
337
        sqlite3_finalize(statement)
337
        return records
338
        return records
338
    }
339
    }
Línea 339... Línea 340...
339
    
340
    
340
    func selectAllCompletedByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
-
 
-
 
341
    func selectAllCompletedByUserUuid(userUuid: String, search : String = "")-> [CapsuleModel] {
341
        
342
        let db = database.open()
342
        var records = [CapsuleModel]()
343
        var records = [CapsuleModel]()
343
        var query = "SELECT "
344
        var query = "SELECT "
344
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
345
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
345
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
346
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
Línea 403... Línea 404...
403
        sqlite3_finalize(statement)
404
        sqlite3_finalize(statement)
404
        return records
405
        return records
405
    }
406
    }
Línea 406... Línea 407...
406
    
407
    
407
    func selectLastInProgress(userUuid: String)-> CapsuleModel {
-
 
-
 
408
    func selectLastInProgress(userUuid: String)-> CapsuleModel {
408
        
409
        let db = database.open()
409
        var model = CapsuleModel()
410
        var model = CapsuleModel()
410
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
411
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
411
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
412
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
412
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
413
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
Línea 466... Línea 467...
466
     WHERE uuid IN (SELECT capsule_uuid FROM tb_progress WHERE type = 'c' AND user_uuid = '4cf9fb4b-0190-4bb4-9369-15eb68e9cace' AND completed = 0)
467
     WHERE uuid IN (SELECT capsule_uuid FROM tb_progress WHERE type = 'c' AND user_uuid = '4cf9fb4b-0190-4bb4-9369-15eb68e9cace' AND completed = 0)
467
     ORDER BY name
468
     ORDER BY name
468
     */
469
     */
Línea 469... Línea 470...
469
 
470
 
470
    func selectByUuid(uuid: String)-> CapsuleModel {
-
 
-
 
471
    func selectByUuid(uuid: String)-> CapsuleModel {
471
        
472
        let db = database.open()
472
        var model = CapsuleModel()
473
        var model = CapsuleModel()
473
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
474
        var query = "SELECT " + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
474
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
475
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + " , "
475
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
476
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + "  ,  "
Línea 512... Línea 513...
512
        sqlite3_finalize(statement)
513
        sqlite3_finalize(statement)
513
        return model
514
        return model
514
    }
515
    }
Línea 515... Línea 516...
515
        
516
        
516
    func insert(capsule: CapsuleModel) {
-
 
-
 
517
    func insert(capsule: CapsuleModel) {
517
        
518
        let db = database.open()
518
        var query = "INSERT INTO " + Constants.TABLE_CAPSULE + " ( "
519
        var query = "INSERT INTO " + Constants.TABLE_CAPSULE + " ( "
519
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
520
        query = query + Constants.TABLE_CAPSULE_FIELD_UUID + ", "
520
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + ", "
521
        query = query + Constants.TABLE_CAPSULE_FIELD_TOPIC_UUID + ", "
521
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + ", "
522
        query = query + Constants.TABLE_CAPSULE_FIELD_NAME + ", "
Línea 560... Línea 561...
560
       
561
       
561
        sqlite3_finalize(statement)
562
        sqlite3_finalize(statement)
Línea 562... Línea 563...
562
    }
563
    }
563
 
-
 
-
 
564
 
564
    func update(capsule : CapsuleModel) {
565
    func update(capsule : CapsuleModel) {
565
        
566
        let db = database.open()
566
        var query = "UPDATE " + Constants.TABLE_CAPSULE
567
        var query = "UPDATE " + Constants.TABLE_CAPSULE
567
        query = query + " SET " + Constants.TABLE_CAPSULE_FIELD_NAME + " = '\(capsule.name)', "
568
        query = query + " SET " + Constants.TABLE_CAPSULE_FIELD_NAME + " = '\(capsule.name)', "
568
        query = query + Constants.TABLE_CAPSULE_FIELD_DESCRIPTION + " = '\(capsule.description)', "
569
        query = query + Constants.TABLE_CAPSULE_FIELD_DESCRIPTION + " = '\(capsule.description)', "
Línea 591... Línea 592...
591
    }
592
    }
Línea 592... Línea 593...
592
    
593
    
593
 
-
 
-
 
594
 
594
 
595
 
595
    func remove(uuid: String) {
596
    func remove(uuid: String) {
596
        
597
        let db = database.open()
597
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE +
598
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE +
598
            " WHERE " + Constants.TABLE_CAPSULE_FIELD_UUID + " = " + "\(uuid) ;"
599
            " WHERE " + Constants.TABLE_CAPSULE_FIELD_UUID + " = " + "\(uuid) ;"
Línea 610... Línea 611...
610
        }
611
        }
611
        sqlite3_finalize(statement)
612
        sqlite3_finalize(statement)
612
    }
613
    }
Línea 613... Línea 614...
613
 
614
 
614
    func removeAll() {
-
 
-
 
615
    func removeAll() {
615
        
616
        let db = database.open()
616
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE + ";"
617
        let query = "DELETE FROM " + Constants.TABLE_CAPSULE + ";"
617
        var statement : OpaquePointer? = nil
618
        var statement : OpaquePointer? = nil
618
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
619
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
619
            if (sqlite3_step(statement) != SQLITE_DONE) {
620
            if (sqlite3_step(statement) != SQLITE_DONE) {