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 UIKit
import SQLite3
class CompanyDao {
private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
private var database = Database.sharedInstance
static let sharedInstance: CompanyDao = {
let instance = CompanyDao()
// setup code
return 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? = nil
if 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? = nil
if 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_COMPANY
query = 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? = nil
if 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? = nil
if 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)
}
}