Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

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