Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 1 | Rev 19 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  UserExtendedDao.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 3/1/22.
6
//
7
 
8
import UIKit
9
import SQLite3
10
 
11
class UserExtendedDao {
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    private var db : OpaquePointer?
14
 
15
    static let sharedInstance: UserExtendedDao = {
16
           let instance = UserExtendedDao()
17
 
18
           // setup code
19
           return instance
20
    }()
21
 
22
    init() {
23
        self.db = Database.sharedInstance.open()
24
    }
25
 
26
    func selectAll()-> [UserExtendedModel] {
27
         var records = [UserExtendedModel]()
28
 
29
         let query = "SELECT " +
30
              Constants.TABLE_USER_EXTENDED_FIELD_UUID + " , " +
31
              Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + " , " +
32
              Constants.TABLE_USER_EXTENDED_FIELD_LABEL + " , " +
33
              Constants.TABLE_USER_EXTENDED_FIELD_VALUE +
34
             " FROM " +  Constants.TABLE_USER_EXTENDED + " ORDER BY " +   Constants.TABLE_USER_EXTENDED_FIELD_LABEL + " ;"
35
         var statement : OpaquePointer? = nil
36
 
37
 
38
         if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
39
             while sqlite3_step(statement) == SQLITE_ROW {
40
                 var model = UserExtendedModel()
41
                 model.uuid = String(describing: String(cString: sqlite3_column_text(statement, 0)))
42
                 model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
43
                 model.label = String(describing: String(cString: sqlite3_column_text(statement, 2)))
44
                 model.value = String(describing: String(cString: sqlite3_column_text(statement,3)))
45
 
46
 
47
                 records.append(model)
11 efrain 48
                 //print("\nSuccessfully get records")
1 efrain 49
 
50
             }
51
         }
52
         sqlite3_finalize(statement)
53
         return records
54
     }
55
 
56
 
57
    func selectAllByCompanyUuid(companyUuid : String)-> [UserExtendedModel] {
58
         var records = [UserExtendedModel]()
59
 
60
         var query = "SELECT "
61
         query = query + Constants.TABLE_USER_EXTENDED_FIELD_UUID + " , "
62
         query = query + Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + " , "
63
         query = query + Constants.TABLE_USER_EXTENDED_FIELD_LABEL + " , "
64
         query = query + Constants.TABLE_USER_EXTENDED_FIELD_VALUE
65
         query = query + " FROM " +  Constants.TABLE_USER_EXTENDED
66
         query = query + " WHERE " + Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + " = '\(companyUuid)' "
67
         query = query + " ORDER BY " +   Constants.TABLE_USER_EXTENDED_FIELD_LABEL + " ;"
68
         var statement : OpaquePointer? = nil
69
 
70
 
71
         if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
72
             while sqlite3_step(statement) == SQLITE_ROW {
73
                 var model = UserExtendedModel()
74
                 model.uuid = String(describing: String(cString: sqlite3_column_text(statement, 0)))
75
                 model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
76
                 model.label = String(describing: String(cString: sqlite3_column_text(statement, 2)))
77
                 model.value = String(describing: String(cString: sqlite3_column_text(statement,3)))
78
 
79
 
80
                 records.append(model)
11 efrain 81
                 //print("\nSuccessfully get records")
1 efrain 82
 
83
             }
84
         }
85
         sqlite3_finalize(statement)
86
         return records
87
     }
88
 
89
    func insert(record : UserExtendedModel) {
90
        var query = "INSERT INTO " + Constants.TABLE_USER_EXTENDED + " ( "
91
        query = query + Constants.TABLE_USER_EXTENDED_FIELD_UUID + " , "
92
        query = query + Constants.TABLE_USER_EXTENDED_FIELD_COMPANY_UUID + " , "
93
        query = query + Constants.TABLE_USER_EXTENDED_FIELD_LABEL + ", "
94
        query = query + Constants.TABLE_USER_EXTENDED_FIELD_VALUE + " ) "
95
        query = query + " VALUES (?, ?, ?, ?);"
96
 
97
        var statement : OpaquePointer?
98
 
99
 
100
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
101
 
102
            sqlite3_bind_text(statement, 1, record.uuid, -1, SQLITE_TRANSIENT )
103
            sqlite3_bind_text(statement, 2, record.companyUuid, -1, SQLITE_TRANSIENT )
104
            sqlite3_bind_text(statement, 3, record.label, -1, SQLITE_TRANSIENT )
105
            sqlite3_bind_text(statement, 4, record.value, -1, SQLITE_TRANSIENT)
106
 
107
            if (sqlite3_step(statement) != SQLITE_DONE) {
108
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_USER_EXTENDED)")
109
            } else {
110
                print("Insertamos un registo en la tabla: \(Constants.TABLE_USER_EXTENDED)")
111
            }
112
        } else {
113
            print("Fallo la preparación en el insertar un registro en la tabla: \(Constants.TABLE_USER_EXTENDED)")
114
        }
115
 
116
        sqlite3_finalize(statement)
117
    }
118
 
119
 
120
    func removeAll() {
121
        let query = "DELETE FROM " + Constants.TABLE_USER_EXTENDED + ";"
122
        var statement : OpaquePointer? = nil
123
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
124
            if sqlite3_step(statement) != SQLITE_DONE {
125
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_USER_EXTENDED)")            }
126
        } else {
127
            print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_USER_EXTENDED)")
128
        }
129
        sqlite3_finalize(statement)
130
    }
131
 
132
 
133
}