Proyectos de Subversion Iphone Microlearning

Rev

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