Rev 15 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// CompanyDao.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/21/22.//import UIKitimport SQLite3class CompanyDao {private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)private var database = Database.sharedInstancestatic let sharedInstance: CompanyDao = {let instance = CompanyDao()// setup codereturn instance}()func selectAll()-> [CompanyModel] {let db = database.open()var records = [CompanyModel]()let query = "SELECT " +Constants.TABLE_COMPANY_FIELD_UUID + " , " +Constants.TABLE_COMPANY_FIELD_NAME + " , " +Constants.TABLE_COMPANY_FIELD_IMAGE +" FROM " + Constants.TABLE_COMPANY + " ORDER BY " + Constants.TABLE_COMPANY_FIELD_NAME + " ;"var statement : OpaquePointer? = nilif sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{while sqlite3_step(statement) == SQLITE_ROW {var model = CompanyModel()model.uuid = String(describing: String(cString: sqlite3_column_text(statement, 0)))model.name = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.image = String(describing: String(cString: sqlite3_column_text(statement, 2)))records.append(model)//print("\nSuccessfully get records")}} else {database.printError()}sqlite3_finalize(statement)return records}func selectByUuid(uuid : String) -> CompanyModel {let db = database.open()var model = CompanyModel()let query = "SELECT " +Constants.TABLE_COMPANY_FIELD_UUID + " , " +Constants.TABLE_COMPANY_FIELD_NAME + " , " +Constants.TABLE_COMPANY_FIELD_IMAGE +" FROM " + Constants.TABLE_COMPANY +" WHERE " + Constants.TABLE_COMPANY_FIELD_UUID + " = '\(uuid)' ;"var statement : OpaquePointer? = nilif sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{while sqlite3_step(statement) == SQLITE_ROW {model.uuid = String(describing: String(cString: sqlite3_column_text(statement, 0)))model.name = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.image = String(describing: String(cString: sqlite3_column_text(statement, 2)))// print("Data selected success")break}} else {database.printError()}sqlite3_finalize(statement)return model;}func insert(company : CompanyModel) {let db = database.open()let query = "INSERT INTO " + Constants.TABLE_COMPANY + " ( " +Constants.TABLE_COMPANY_FIELD_UUID + " , " +Constants.TABLE_COMPANY_FIELD_NAME + " , " +Constants.TABLE_COMPANY_FIELD_IMAGE + " ) VALUES (?, ?, ?);"var statement : OpaquePointer?if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK {sqlite3_bind_text(statement, 1, company.uuid, -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 2, company.name , -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 3, company.image , -1, SQLITE_TRANSIENT)if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_COMPANY)")database.printError()}} else {print("Fallo la preparación del insertar en la tabla \(Constants.TABLE_COMPANY) ")database.printError()}sqlite3_finalize(statement)}func update(company : CompanyModel) {let db = database.open()var query = "UPDATE " + Constants.TABLE_COMPANYquery = query + " SET " + Constants.TABLE_COMPANY_FIELD_NAME + " = '\(company.name)', "query = query + Constants.TABLE_COMPANY_FIELD_IMAGE + " = '\(company.image)' "query = query + " WHERE " + Constants.TABLE_COMPANY_FIELD_UUID + " = '\(company.uuid)' ;"var statement : OpaquePointer? = nilif sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo actualizar un registro en la tabla \(Constants.TABLE_COMPANY) ")database.printError()}} else {print("Fallo la preparación de la actualización de la tabla \(Constants.TABLE_COMPANY)")database.printError()}sqlite3_finalize(statement)}func removeAll() {let db = database.open()let query = "DELETE FROM " + Constants.TABLE_COMPANY + ";"var statement : OpaquePointer? = nilif sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{if sqlite3_step(statement) != SQLITE_DONE {print("No se pudieron borrar todos los registros de la tabla: \(Constants.TABLE_COMPANY)")database.printError()}} else {print("Fallo la preparación para borrar todos los registros de la tabla: \(Constants.TABLE_COMPANY)")database.printError()}sqlite3_finalize(statement)}}