Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

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