Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

Rev 16 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  CompanyDao.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
6
//
7
 
17 efrain 8
import SwiftUI
1 efrain 9
import SQLite3
10
 
11
class CompanyDao {
17 efrain 12
    private var database = Environment(\.database).wrappedValue
1 efrain 13
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
14
 
17 efrain 15
 
1 efrain 16
   func selectAll()-> [CompanyModel] {
17 efrain 17
       let db = database.open()
1 efrain 18
        var records = [CompanyModel]()
19
 
20
        let query = "SELECT " +
21
             Constants.TABLE_COMPANY_FIELD_UUID + " , " +
22
             Constants.TABLE_COMPANY_FIELD_NAME + " , " +
23
             Constants.TABLE_COMPANY_FIELD_IMAGE +
24
            " FROM " +  Constants.TABLE_COMPANY + " ORDER BY " +   Constants.TABLE_COMPANY_FIELD_NAME + " ;"
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 = CompanyModel()
31
                model.uuid = String(describing: String(cString: sqlite3_column_text(statement, 0)))
32
                model.name = String(describing: String(cString: sqlite3_column_text(statement, 1)))
33
                model.image = String(describing: String(cString: sqlite3_column_text(statement, 2)))
34
 
35
 
36
                records.append(model)
37
                //print("\nSuccessfully get records")
38
 
39
            }
40
        } else {
15 efrain 41
 
1 efrain 42
        }
43
        sqlite3_finalize(statement)
44
        return records
45
    }
46
 
47
    func selectByUuid(uuid : String) -> CompanyModel {
17 efrain 48
        let db = database.open()
1 efrain 49
        var model = CompanyModel()
50
        let query = "SELECT " +
51
             Constants.TABLE_COMPANY_FIELD_UUID + " , " +
52
             Constants.TABLE_COMPANY_FIELD_NAME + " , " +
53
             Constants.TABLE_COMPANY_FIELD_IMAGE +
54
            " FROM " +  Constants.TABLE_COMPANY +
55
            " WHERE " +  Constants.TABLE_COMPANY_FIELD_UUID + " = '\(uuid)'  ;"
56
        var statement : OpaquePointer? = nil
57
 
58
 
59
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
60
            while sqlite3_step(statement) == SQLITE_ROW {
61
                model.uuid = String(describing: String(cString: sqlite3_column_text(statement, 0)))
62
                model.name = String(describing: String(cString: sqlite3_column_text(statement, 1)))
63
                model.image = String(describing: String(cString: sqlite3_column_text(statement, 2)))
64
 
65
               // print("Data selected success")
66
                break
67
 
68
            }
69
        } else {
15 efrain 70
 
1 efrain 71
        }
72
        sqlite3_finalize(statement)
73
 
74
        return model;
75
    }
76
 
77
    func insert(company : CompanyModel) {
17 efrain 78
        let db = database.open()
1 efrain 79
        let query = "INSERT INTO " + Constants.TABLE_COMPANY + " ( " +
80
            Constants.TABLE_COMPANY_FIELD_UUID + " , " +
81
            Constants.TABLE_COMPANY_FIELD_NAME + " , " +
82
            Constants.TABLE_COMPANY_FIELD_IMAGE + " ) VALUES (?, ?, ?);"
83
           var statement : OpaquePointer?
84
 
85
 
86
           if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK {
87
 
88
            sqlite3_bind_text(statement, 1, company.uuid, -1, SQLITE_TRANSIENT)
89
            sqlite3_bind_text(statement, 2, company.name , -1, SQLITE_TRANSIENT)
90
            sqlite3_bind_text(statement, 3, company.image , -1, SQLITE_TRANSIENT)
91
 
92
           if sqlite3_step(statement) != SQLITE_DONE {
93
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_COMPANY)")
15 efrain 94
 
1 efrain 95
           }
96
 
97
        } else {
98
            print("Fallo la preparación del insertar en la tabla \(Constants.TABLE_COMPANY) ")
15 efrain 99
 
1 efrain 100
        }
101
 
102
        sqlite3_finalize(statement)
103
     }
104
 
105
    func update(company : CompanyModel) {
17 efrain 106
        let db = database.open()
1 efrain 107
        var query = "UPDATE " + Constants.TABLE_COMPANY
108
        query = query + " SET " + Constants.TABLE_COMPANY_FIELD_NAME + " = '\(company.name)', "
109
        query = query + Constants.TABLE_COMPANY_FIELD_IMAGE + " = '\(company.image)' "
110
        query = query + " WHERE " + Constants.TABLE_COMPANY_FIELD_UUID + " = '\(company.uuid)' ;"
111
        var statement : OpaquePointer? = nil
112
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
113
            if sqlite3_step(statement) != SQLITE_DONE {
114
                print("No se pudo actualizar un registro en la tabla \(Constants.TABLE_COMPANY) ")
15 efrain 115
 
1 efrain 116
            }
117
        } else {
118
            print("Fallo la preparación de la actualización de la tabla \(Constants.TABLE_COMPANY)")
15 efrain 119
 
1 efrain 120
 
121
 
122
        }
123
        sqlite3_finalize(statement)
124
    }
125
 
126
    func removeAll() {
17 efrain 127
        let db = database.open()
1 efrain 128
        let query = "DELETE FROM " +  Constants.TABLE_COMPANY + ";"
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 pudieron borrar todos los registros de la tabla: \(Constants.TABLE_COMPANY)")
15 efrain 133
 
1 efrain 134
            }
135
        } else {
136
            print("Fallo la preparación para borrar todos los registros de la tabla: \(Constants.TABLE_COMPANY)")
15 efrain 137
 
1 efrain 138
        }
139
        sqlite3_finalize(statement)
140
    }
141
 
142
}