Autoría | Ultima modificación | Ver Log |
//// SyncDao.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/21/22.//import UIKitimport SQLite3class SyncDao {let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)var db = Database().open()func insert(record : SyncModel) -> Int {let query = "INSERT INTO " + Constants.TABLE_SYNC + " ( " + Constants.TABLE_SYNC_FIELD_TYPE + ", " + Constants.TABLE_SYNC_FIELD_DATA + " ) VALUES (?, ?);"var statement : OpaquePointer?var result = 0;if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {sqlite3_bind_int(statement, 1, Int32(record.type))sqlite3_bind_text(statement, 2, record.data , -1, SQLITE_TRANSIENT)if (sqlite3_step(statement) == SQLITE_DONE) {result = Int(sqlite3_last_insert_rowid(db))} else {print("No se pudo insertar el registro ( type: \(record.type) data: \(record.data) en la tabla: \(Constants.TABLE_SYNC)")}} else {print("Fallo la preparación del insert en la tabla: \(Constants.TABLE_SYNC)")}sqlite3_finalize(statement)return result}func selectOneByType(type: Int) -> SyncModel {var record = SyncModel()let query = "SELECT "+ Constants.TABLE_SYNC_FIELD_ID + " , "+ Constants.TABLE_SYNC_FIELD_TYPE + " , "+ Constants.TABLE_SYNC_FIELD_DATA+ " FROM " + Constants.TABLE_SYNC + " WHERE type = '\(type)' LIMIT 1; "var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {record.id = Int(sqlite3_column_int(statement, 0))record.type = Int(sqlite3_column_int(statement, 1))record.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))}}sqlite3_finalize(statement)return record}func selectBatch()-> [SyncModel] {var records = [SyncModel]()let query = "SELECT "+ Constants.TABLE_SYNC_FIELD_ID + " , "+ Constants.TABLE_SYNC_FIELD_TYPE + " , "+ Constants.TABLE_SYNC_FIELD_DATA+ " FROM " + Constants.TABLE_SYNC + " LIMIT 5; "var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {var model = SyncModel()model.id = Int(sqlite3_column_int(statement, 0))model.type = Int(sqlite3_column_int(statement, 1))model.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))records.append(model)}}sqlite3_finalize(statement)return records}func remove(id : Int) {let query = "DELETE FROM " + Constants.TABLE_SYNC + " WHERE " + Constants.TABLE_SYNC_FIELD_ID + " = " + "\(id) ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) != SQLITE_DONE) {print("No se pudo borrar el ID: \(id) de la tabla: \(Constants.TABLE_SYNC)")}}sqlite3_finalize(statement)}}