Database.swift 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. //
  2. // Database.swift
  3. // Runner
  4. //
  5. // Created by Yayan Dwi on 15/04/20.
  6. // Copyright © 2020 The Chromium Authors. All rights reserved.
  7. //
  8. import Foundation
  9. import FMDB
  10. public class Database {
  11. public init() {}
  12. public static let shared = Database()
  13. public let database = FMDatabaseQueue(path: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "/PalioLite.sqlite")
  14. func openDatabase() {
  15. database?.inDatabase({(fmdb) in
  16. fmdb.setKey("lumia")
  17. print("Open Done")
  18. })
  19. database?.inTransaction({(fmdb, rollback) in
  20. do {
  21. try createDatabase(fmdb: fmdb)
  22. print("Create Done")
  23. } catch {
  24. }
  25. })
  26. }
  27. func createDatabase(fmdb:FMDatabase) throws -> Void{
  28. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'BUDDY' (" +
  29. "'_id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
  30. "'f_pin' text NOT NULL UNIQUE," +
  31. "'upline_pin' text," +
  32. "'first_name' text," +
  33. "'last_name' text," +
  34. "'image_id' TEXT," +
  35. "'user_id' TEXT," +
  36. "'quote' TEXT," +
  37. "'connected' TEXT DEFAULT (0)," +
  38. "'last_update' TEXT," +
  39. "'latitude' text," +
  40. "'longitude' text," +
  41. "'altitude' text," +
  42. "'cell' text," +
  43. "'last_loc_update' text," +
  44. "'type' text," +
  45. "'empty_2' text," +
  46. "'timezone' text," +
  47. "'privacy_flag' text," +
  48. "'msisdn' text," +
  49. "'email' text," +
  50. "'created_date' text," +
  51. "'offline_mode' text DEFAULT (0)," +
  52. "'network_type' text DEFAULT (0)," +
  53. "'ex_block' TEXT DEFAULT (0)," +
  54. "'ex_follow' TEXT DEFAULT (0)," +
  55. "'ex_offmp' TEXT DEFAULT (0)," +
  56. "'ex_follower' TEXT DEFAULT (0)," +
  57. "'ex_status' TEXT DEFAULT (0)," +
  58. "'auto_quote' TEXT ," +
  59. "'auto_quote_type' TEXT ," +
  60. "'ex_broadcasting' TEXT DEFAULT (0) ," +
  61. "'indicator_status' TEXT DEFAULT (0)," +
  62. "'muted' TEXT DEFAULT (0)," +
  63. "'pos_flag' TEXT DEFAULT (0)," +
  64. "'shop_code' TEXT DEFAULT (0)," +
  65. "'shop_name' TEXT DEFAULT (0)," +
  66. "'android_version' INTEGER DEFAULT 0," +
  67. "'device_id' TEXT DEFAULT (0)," +
  68. "'extension' TEXT DEFAULT (0)," +
  69. "'auto_quote_status' TEXT DEFAULT (0)," +
  70. "'connection_speed' TEXT DEFAULT (0)," +
  71. "'be_info' TEXT," +
  72. "'org_id' TEXT," +
  73. "'org_name' TEXT," +
  74. "'org_thumb' TEXT," +
  75. "'card_type' TEXT," +
  76. "'card_id' TEXT," +
  77. "'gender' TEXT," +
  78. "'birthdate' TEXT," +
  79. "'type_ads' TEXT DEFAULT (0)," +
  80. "'type_lp' TEXT DEFAULT (0)," +
  81. "'type_post' TEXT DEFAULT (0)," +
  82. "'address' TEXT," +
  83. "'bidang_industri' TEXT," +
  84. "'visi' TEXT," +
  85. "'misi' TEXT," +
  86. "'company_lat' TEXT," +
  87. "'company_lng' TEXT," +
  88. "'web' TEXT," +
  89. "'certificate_image' TEXT," +
  90. "'official_account' TEXT DEFAULT (0)," +
  91. "'user_type' TEXT DEFAULT (0)," +
  92. "'real_name' TEXT," +
  93. "'is_sub_account' TEXT DEFAULT (0)," +
  94. "'last_sign' TEXT," +
  95. "'android_id' TEXT," +
  96. "'is_change_profile' TEXT DEFAULT (0)," +
  97. "'area' TEXT DEFAULT (0)," +
  98. "'is_second_layer' TEXT DEFAULT (0)" +
  99. ")", values: nil)
  100. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_message_id on BUDDY (msisdn)", values: nil)
  101. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_f_pin on BUDDY (f_pin)", values: nil)
  102. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_user_id on BUDDY (user_id)", values: nil)
  103. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_ex_status on BUDDY (ex_status)", values: nil)
  104. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_first_name on BUDDY (first_name)", values: nil)
  105. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_extension on BUDDY (extension)", values: nil)
  106. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'GROUPZ' (" +
  107. "'_id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
  108. "'group_id' text NOT NULL UNIQUE," +
  109. "'f_name' text," +
  110. "'scope_id' text," +
  111. "'image_id' TEXT," +
  112. "'quote' text," +
  113. "'last_update' text," +
  114. "'created_by' text," +
  115. "'created_date' text," +
  116. "'ex_block' TEXT DEFAULT (0)," +
  117. "'folder_id' TEXT," +
  118. "'chat_modifier' INTEGER DEFAULT 1," +
  119. "'group_type' INTEGER DEFAULT 0," +
  120. "'parent' text," +
  121. "'level' text," +
  122. "'muted' INTEGER DEFAULT 0," +
  123. "'is_open' INTEGER DEFAULT 0," +
  124. "'official' INTEGER DEFAULT 0," +
  125. "'level_edu' INTEGER DEFAULT -1," +
  126. "'materi_edu' INTEGER DEFAULT -1," +
  127. "'is_education' INTEGER DEFAULT 0)", values: nil)
  128. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'MESSAGE' (" +
  129. "'message_id' TEXT NOT NULL UNIQUE," +
  130. "'f_pin' TEXT," +
  131. "'l_pin' TEXT," +
  132. "'message_scope_id' TEXT," +
  133. "'server_date' INTEGER," +
  134. "'status' TEXT," +
  135. "'message_text' TEXT," +
  136. "'audio_id' TEXT," +
  137. "'video_id' TEXT," +
  138. "'image_id' TEXT," +
  139. "'thumb_id' TEXT," +
  140. "'opposite_pin' TEXT," +
  141. "'lock' TEXT," +
  142. "'format' TEXT," +
  143. "'broadcast_flag' INTEGER DEFAULT 0," +
  144. "'blog_id' TEXT," +
  145. "'f_user_id' TEXT," +
  146. "'l_user_id' TEXT," +
  147. "'read_receipts' INTEGER DEFAULT 0," +
  148. "'chat_id' TEXT," +
  149. "'file_id' TEXT," +
  150. "'delivery_receipts' INTEGER DEFAULT 0," +
  151. "'account_type' TEXT," +
  152. "'contact' TEXT," +
  153. "'credential' TEXT," +
  154. "'attachment_flag' INTEGER DEFAULT 0," +
  155. "'is_stared' INTEGER DEFAULT 0," +
  156. "'f_display_name' TEXT," +
  157. "'reff_id' TEXT," +
  158. "'sent_qty' INTEGER DEFAULT 0," +
  159. "'delivered_qty' INTEGER DEFAULT 0," +
  160. "'read_qty' INTEGER DEFAULT 0," +
  161. "'ack_qty' INTEGER DEFAULT 0," +
  162. "'read_local_qty' INTEGER DEFAULT 0," +
  163. "'delivered_pin' TEXT," +
  164. "'read_pin' TEXT," +
  165. "'ack_pin' TEXT," +
  166. "'read_local_pin' TEXT," +
  167. "'expired_qty' TEXT," +
  168. "'message_large_text' TEXT," +
  169. "'tag_forum' TEXT," +
  170. "'tag_activity' TEXT," +
  171. "'unk_numbers' INTEGER DEFAULT 0," +
  172. "'conn_state' INTEGER DEFAULT 1," +
  173. "'tag_client' TEXT," +
  174. "'tag_subactivity' TEXT," +
  175. "'messagenumber' INTEGER DEFAULT 0," +
  176. "'mail_account' TEXT," +
  177. "'message_text_plain' TEXT," +
  178. "'local_timestamp' TEXT," +
  179. "'is_consult' INTEGER DEFAULT 0," +
  180. "'is_call_center' INTEGER DEFAULT 0," +
  181. "'call_center_id' TEXT" +
  182. ")", values: nil)
  183. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_opposite on MESSAGE (opposite_pin, chat_id)", values: nil)
  184. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_chat_id on MESSAGE (chat_id)", values: nil)
  185. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_server_date on MESSAGE (server_date)", values: nil)
  186. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_account_type on MESSAGE (account_type)", values: nil)
  187. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_mail_account on MESSAGE (mail_account)", values: nil)
  188. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_reff_id on MESSAGE (reff_id)", values: nil)
  189. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_local_timestamp on MESSAGE (local_timestamp)", values: nil)
  190. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS index_m_is_call_center on MESSAGE (is_call_center)", values: nil)
  191. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'GROUPZ_MEMBER' (" +
  192. "'group_id' TEXT NOT NULL," +
  193. "'f_pin' TEXT NOT NULL," +
  194. "'position' TEXT DEFAULT (0)," +
  195. "'user_id' NOT NULL DEFAULT '-'," +
  196. "'ac' NOT NULL DEFAULT '-'," +
  197. "'ac_desc' NOT NULL DEFAULT '-'," +
  198. "'first_name' TEXT NOT NULL," +
  199. "'last_name' TEXT NOT NULL," +
  200. "'msisdn' TEXT NOT NULL," +
  201. "'thumb_id' TEXT NOT NULL," +
  202. "'created_date' TEXT DEFAULT (0)," +
  203. "PRIMARY KEY ('group_id', 'f_pin'))", values: nil)
  204. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'DISCUSSION_FORUM' (" +
  205. "'_id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  206. "'chat_id' text UNIQUE," +
  207. "'title' text," +
  208. "'group_id' text," +
  209. "'anonym' text," +
  210. "'scope_id' text," +
  211. "'thumb' text," +
  212. "'category' text," +
  213. "'activity' text," +
  214. "'milis' text," +
  215. "'sharing_flag' text," +
  216. "'clients' text," +
  217. "'owner' text," +
  218. "'follow' integer NOT NULL default 0," +
  219. "'raci_r' text," +
  220. "'raci_a' text," +
  221. "'raci_c' text," +
  222. "'raci_i' text," +
  223. "'act_thumb' text," +
  224. "'client_thumb' text)", values: nil)
  225. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'POST' (" +
  226. "'post_id' TEXT NOT NULL UNIQUE," +
  227. "'author_f_pin' TEXT NOT NULL," +
  228. "'author_name' TEXT NOT NULL," +
  229. "'author_thumbnail' TEXT NOT NULL," +
  230. "'type' INTEGER DEFAULT '0'," +
  231. "'created_date' TEXT DEFAULT ''," +
  232. "'title' TEXT DEFAULT ''," +
  233. "'description' TEXT DEFAULT ''," +
  234. "'privacy' INTEGER DEFAULT '1'," +
  235. "'audition_date' TEXT DEFAULT '0'," +
  236. "'total_comment' INTEGER DEFAULT '0'," +
  237. "'total_like' INTEGER DEFAULT '0'," +
  238. "'total_dislike' INTEGER DEFAULT '0'," +
  239. "'last_update' TEXT DEFAULT '0'," +
  240. "'file_type' INTEGER DEFAULT '0'," +
  241. "'thumb_id' TEXT DEFAULT ''," +
  242. "'file_id' TEXT DEFAULT ''," +
  243. "'video_duration' INTEGER DEFAULT '0'," +
  244. "'category_id' INTEGER DEFAULT '0'," +
  245. "'like_flag' INTEGER DEFAULT '0'," +
  246. "'report_flag' TEXT DEFAULT '0'," +
  247. "'last_edit' INTEGER DEFAULT '0'," +
  248. "'post_id_participate' TEXT," +
  249. "'participate_date' INTEGER DEFAULT '0'," +
  250. "'certificates' TEXT," +
  251. "'participate_size' INTEGER," +
  252. "'total_view' INTEGER DEFAULT '0'," +
  253. "'view_flag' INTEGER DEFAULT '0'," +
  254. "'total_followers' INTEGER DEFAULT '0'," +
  255. "'score' INTEGER DEFAULT '0'," +
  256. "'share_sosmed_type' INTEGER DEFAULT '0'," +
  257. "'link' TEXT DEFAULT ''," +
  258. "'category_flag' TEXT DEFAULT ''," +
  259. "'official_account' INTEGER DEFAULT '0'," +
  260. "'roc_date' INTEGER DEFAULT '0'," +
  261. "'roc_size' INTEGER DEFAULT '0'," +
  262. "'level_edu' INTEGER DEFAULT '0'," +
  263. "'materi_edu' INTEGER DEFAULT '0'," +
  264. "'finaltest_edu' INTEGER DEFAULT '0'," +
  265. "'file_summarization' TEXT DEFAULT ''," +
  266. "'target' INTEGER DEFAULT '0'," +
  267. "'pricing' INTEGER DEFAULT '0'," +
  268. "'pricing_money' TEXT DEFAULT ''" +
  269. ")", values: nil)
  270. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'MESSAGE_STATUS' (" +
  271. "'_id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  272. "'message_id' text NOT NULL," +
  273. "'status' integer NOT NULL DEFAULT 0," +
  274. "'f_pin' text NOT NULL DEFAULT ''," +
  275. "'user_id' text NOT NULL DEFAULT ''," +
  276. "'last_update' integer," +
  277. "'longitude' text NOT NULL DEFAULT ''," +
  278. "'latitude' text NOT NULL DEFAULT ''," +
  279. "'location' text NOT NULL DEFAULT '')", values: nil)
  280. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS MESSAGE_STATUS_UK1 on MESSAGE_STATUS (message_id)", values: nil)
  281. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'MESSAGE_SUMMARY' (" +
  282. "'l_pin' text NOT NULL DEFAULT ''," +
  283. "'message_id' text NOT NULL," +
  284. "'counter' integer NOT NULL default 0," +
  285. "PRIMARY KEY ('l_pin'))", values: nil)
  286. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'OUTGOING' (" +
  287. "'id' text PRIMARY KEY NOT NULL," +
  288. "'package' text," +
  289. "'message' text" +
  290. ")", values: nil)
  291. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'FOLLOW' (" +
  292. "'f_pin' text PRIMARY KEY NOT NULL" +
  293. ")", values: nil)
  294. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'MESSAGE_FAVORITE' (" +
  295. "'message_id' text PRIMARY KEY NOT NULL" +
  296. ")", values: nil)
  297. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'LINK_PREVIEW' (" +
  298. "'id' text PRIMARY KEY NOT NULL," +
  299. "'link' text NOT NULL UNIQUE," +
  300. "'data_link' text," +
  301. "'retry' integer DEFAULT 0" +
  302. ")", values: nil)
  303. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'PULL_DB' (" +
  304. "'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
  305. "'pull_type' text NOT NULL," +
  306. "'pull_key' text NOT NULL DEFAULT ('0')," +
  307. "'time' text" +
  308. ")", values: nil)
  309. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'PREFS' (" +
  310. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  311. "'key' text UNIQUE," +
  312. "'value' text" +
  313. ")", values: nil)
  314. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'CALL_CENTER_HISTORY' (" +
  315. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  316. "'type' integer NOT NULL," +
  317. "'title' text," +
  318. "'time' text," +
  319. "'f_pin' text," +
  320. "'data' text," +
  321. "'time_end' text," +
  322. "'complaint_id' text NOT NULL UNIQUE," +
  323. "'members' text," +
  324. "'requester' text" +
  325. ")", values: nil)
  326. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'FORM' (" +
  327. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  328. "'form_id' TEXT NOT NULL UNIQUE," +
  329. "'name' text," +
  330. "'created_date' text," +
  331. "'created_by' text," +
  332. "'sq_no' integer" +
  333. ")", values: nil)
  334. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'FORM_ITEM' (" +
  335. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  336. "'form_id' text," +
  337. "'key' text," +
  338. "'label' text," +
  339. "'value' text," +
  340. "'type' text," +
  341. "'sq_no' integer)", values: nil)
  342. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'SERVICE_BANK' (" +
  343. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  344. "'service_id' text NOT NULL UNIQUE," +
  345. "'service_name' text," +
  346. "'description' text," +
  347. "'parent' text," +
  348. "'is_tablet' text)", values: nil)
  349. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'WORKING_AREA' (" +
  350. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  351. "'area_id' text NOT NULL UNIQUE," +
  352. "'name' text," +
  353. "'parent' text," +
  354. "'level' text)", values: nil)
  355. }
  356. public func executes(fmdb: FMDatabase, queries: [String]) {
  357. do {
  358. for sql in queries {
  359. try fmdb.executeUpdate(sql, values: nil)
  360. }
  361. } catch {
  362. print(error.localizedDescription)
  363. }
  364. }
  365. public func rawQuery(fmdb: FMDatabase, queries: String) {
  366. do {
  367. try fmdb.executeUpdate(queries, values: nil)
  368. } catch {
  369. print(error.localizedDescription)
  370. }
  371. }
  372. public func insertRecord(fmdb: FMDatabase, table: String, cvalues: [String:Any], replace: Bool) throws -> Int {
  373. var _result = 0
  374. var fields = ""
  375. var values = ""
  376. var delim = ""
  377. var data = [String]()
  378. for (key, value) in cvalues {
  379. fields += delim + key
  380. values += delim + "?"
  381. delim = ","
  382. if let stringval = value as? String{
  383. data.append(stringval)
  384. }
  385. else {
  386. let objval = String(describing: value)
  387. data.append(objval)
  388. }
  389. }
  390. try fmdb.executeUpdate((replace ? "replace" : "insert") + " into " + table + "(" + fields + ") values (" + values + ")", values: data)
  391. _result = 1
  392. return _result
  393. }
  394. public func getRecords(fmdb: FMDatabase, table: String, fields: [String], _where : String, group_by : String, order_by: String) -> FMResultSet? {
  395. var _result: FMResultSet? = nil
  396. do {
  397. var _fields = ""
  398. var delim = ""
  399. for field in fields {
  400. _fields += delim + field
  401. delim = ","
  402. }
  403. var _whereClause = ""
  404. if (!_where.isEmpty) {
  405. _whereClause = " where " + _where
  406. }
  407. if !group_by.isEmpty {
  408. _whereClause += " group by " + group_by
  409. }
  410. if !order_by.isEmpty {
  411. _whereClause += " order by " + order_by
  412. }
  413. _result = try fmdb.executeQuery("select " + _fields + " from " + table + _whereClause, values: nil)
  414. } catch {
  415. print(error.localizedDescription)
  416. }
  417. return _result
  418. }
  419. public func getRecords(fmdb: FMDatabase, query: String) -> FMResultSet? {
  420. var _result: FMResultSet? = nil
  421. do {
  422. _result = try fmdb.executeQuery(query, values: nil)
  423. } catch {
  424. print(error)
  425. }
  426. return _result
  427. }
  428. public func updateAllRecord(fmdb: FMDatabase, table: String, cvalues: [String:Any]) -> Int {
  429. var _result = 0
  430. do {
  431. var fields = ""
  432. var delim = ""
  433. var data = [Any]()
  434. for (key, value) in cvalues {
  435. fields += delim + key + " = ?"
  436. delim = ","
  437. data.append(value)
  438. }
  439. try fmdb.executeUpdate("update " + table + " set " + fields, values: data)
  440. _result = 1
  441. } catch {
  442. print(error.localizedDescription)
  443. }
  444. return _result
  445. }
  446. public func updateRecord(fmdb: FMDatabase, table: String, cvalues: [String:Any], _where: String) -> Int {
  447. var _result = 0
  448. do {
  449. var fields = ""
  450. var delim = ""
  451. var data = [Any]()
  452. for (key, value) in cvalues {
  453. fields += delim + key + " = ?"
  454. delim = ","
  455. data.append(value)
  456. }
  457. var _whereClause = ""
  458. if (!_where.isEmpty) {
  459. _whereClause = " where " + _where
  460. }
  461. try fmdb.executeUpdate("update " + table + " set " + fields + _whereClause, values: data)
  462. _result = 1
  463. } catch {
  464. print(error.localizedDescription)
  465. }
  466. return _result
  467. }
  468. public func deleteRecord(fmdb: FMDatabase, table: String, _where : String) -> Int {
  469. var _result = 0
  470. do {
  471. var _whereClause = ""
  472. if (!_where.isEmpty) {
  473. _whereClause = " where " + _where
  474. }
  475. try fmdb.executeUpdate("delete from " + table + _whereClause, values: nil)
  476. _result = 1
  477. } catch {
  478. print(error.localizedDescription)
  479. }
  480. return _result
  481. }
  482. }