Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

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