Autoría | Ultima modificación | Ver Log |
//
// SyncDao.swift
// twogetskills
//
// Created by Efrain Yanez Recanatini on 2/21/22.
//
import UIKit
import SQLite3
class 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? = nil
if (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? = nil
if (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? = nil
if (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)
}
}