Proyectos de Subversion Iphone Microlearning

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  SyncDao.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
6
//
7
 
8
 
9
import UIKit
10
import SQLite3
11
 
12
class SyncDao {
13
    let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
14
    var db = Database().open()
15
 
16
 
17
    func insert(record : SyncModel) -> Int {
18
        let query = "INSERT INTO " + Constants.TABLE_SYNC + " ( " + Constants.TABLE_SYNC_FIELD_TYPE + ", " + Constants.TABLE_SYNC_FIELD_DATA + " ) VALUES (?, ?);"
19
        var statement : OpaquePointer?
20
        var result = 0;
21
 
22
 
23
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
24
 
25
            sqlite3_bind_int(statement, 1, Int32(record.type))
26
            sqlite3_bind_text(statement, 2, record.data , -1, SQLITE_TRANSIENT)
27
           if (sqlite3_step(statement) == SQLITE_DONE) {
28
               result = Int(sqlite3_last_insert_rowid(db))
29
           } else {
30
                print("No se pudo insertar el registro ( type: \(record.type) data: \(record.data)   en la tabla: \(Constants.TABLE_SYNC)")
31
 
32
           }
33
 
34
        } else {
35
            print("Fallo la preparación del insert en la tabla: \(Constants.TABLE_SYNC)")
36
        }
37
 
38
        sqlite3_finalize(statement)
39
        return result
40
     }
41
 
42
    func selectOneByType(type: Int) -> SyncModel {
43
        var record = SyncModel()
44
 
45
        let query = "SELECT "
46
            + Constants.TABLE_SYNC_FIELD_ID + "  , "
47
            + Constants.TABLE_SYNC_FIELD_TYPE + " , "
48
            + Constants.TABLE_SYNC_FIELD_DATA
49
            + "  FROM " + Constants.TABLE_SYNC + " WHERE type = '\(type)' LIMIT 1; "
50
        var statement : OpaquePointer? = nil
51
 
52
 
53
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
54
            if (sqlite3_step(statement) == SQLITE_ROW) {
55
                record.id = Int(sqlite3_column_int(statement, 0))
56
                record.type = Int(sqlite3_column_int(statement, 1))
57
                record.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))
58
 
59
            }
60
        }
61
        sqlite3_finalize(statement)
62
        return record
63
    }
64
 
65
    func selectBatch()-> [SyncModel] {
66
        var records = [SyncModel]()
67
 
68
        let query = "SELECT "
69
            + Constants.TABLE_SYNC_FIELD_ID + "  , "
70
            + Constants.TABLE_SYNC_FIELD_TYPE + " , "
71
            + Constants.TABLE_SYNC_FIELD_DATA
72
            + "  FROM " + Constants.TABLE_SYNC + " LIMIT 5; "
73
        var statement : OpaquePointer? = nil
74
 
75
 
76
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
77
            if (sqlite3_step(statement) == SQLITE_ROW) {
78
                var model = SyncModel()
79
                model.id = Int(sqlite3_column_int(statement, 0))
80
                model.type = Int(sqlite3_column_int(statement, 1))
81
                model.data = String(describing: String(cString: sqlite3_column_text(statement, 2)))
82
 
83
                records.append(model)
84
            }
85
        }
86
        sqlite3_finalize(statement)
87
        return records
88
    }
89
 
90
    func remove(id : Int) {
91
        let query = "DELETE FROM " + Constants.TABLE_SYNC + " WHERE " + Constants.TABLE_SYNC_FIELD_ID + " = " + "\(id) ;"
92
        var statement : OpaquePointer? = nil
93
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
94
            if (sqlite3_step(statement) != SQLITE_DONE) {
95
                print("No se pudo borrar el ID: \(id) de la tabla: \(Constants.TABLE_SYNC)")
96
            }
97
        }
98
        sqlite3_finalize(statement)
99
    }
100
}
101
 
102