Proyectos de Subversion Iphone Microlearning

Rev

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