Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

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