Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

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