Database.swift 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  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. "'time_delivered' integer," +
  278. "'time_read' integer," +
  279. "'time_ack' integer," +
  280. "'longitude' text NOT NULL DEFAULT ''," +
  281. "'latitude' text NOT NULL DEFAULT ''," +
  282. "'location' text NOT NULL DEFAULT '')", values: nil)
  283. try fmdb.executeUpdate("CREATE INDEX IF NOT EXISTS MESSAGE_STATUS_UK1 on MESSAGE_STATUS (message_id)", values: nil)
  284. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'MESSAGE_SUMMARY' (" +
  285. "'l_pin' text NOT NULL DEFAULT ''," +
  286. "'message_id' text NOT NULL," +
  287. "'counter' integer NOT NULL default 0," +
  288. "PRIMARY KEY ('l_pin'))", values: nil)
  289. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'OUTGOING' (" +
  290. "'id' text PRIMARY KEY NOT NULL," +
  291. "'package' text," +
  292. "'message' text" +
  293. ")", values: nil)
  294. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'INQUIRY' (" +
  295. "'id' text PRIMARY KEY NOT NULL," +
  296. "'status' integer NOT NULL default 0," +
  297. "'message' text" +
  298. ")", values: nil)
  299. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'FOLLOW' (" +
  300. "'f_pin' text PRIMARY KEY NOT NULL" +
  301. ")", values: nil)
  302. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'MESSAGE_FAVORITE' (" +
  303. "'message_id' text PRIMARY KEY NOT NULL" +
  304. ")", values: nil)
  305. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'LINK_PREVIEW' (" +
  306. "'id' text PRIMARY KEY NOT NULL," +
  307. "'link' text NOT NULL UNIQUE," +
  308. "'data_link' text," +
  309. "'retry' integer DEFAULT 0" +
  310. ")", values: nil)
  311. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'PULL_DB' (" +
  312. "'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
  313. "'pull_type' text NOT NULL," +
  314. "'pull_key' text NOT NULL DEFAULT ('0')," +
  315. "'time' text" +
  316. ")", values: nil)
  317. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'PREFS' (" +
  318. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  319. "'key' text UNIQUE," +
  320. "'value' text" +
  321. ")", values: nil)
  322. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'CALL_CENTER_HISTORY' (" +
  323. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  324. "'type' integer NOT NULL," +
  325. "'title' text," +
  326. "'time' text," +
  327. "'f_pin' text," +
  328. "'data' text," +
  329. "'time_end' text," +
  330. "'complaint_id' text NOT NULL UNIQUE," +
  331. "'members' text," +
  332. "'requester' text" +
  333. ")", values: nil)
  334. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'FORM' (" +
  335. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  336. "'form_id' TEXT NOT NULL UNIQUE," +
  337. "'name' text," +
  338. "'created_date' text," +
  339. "'created_by' text," +
  340. "'sq_no' integer" +
  341. ")", values: nil)
  342. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'FORM_ITEM' (" +
  343. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  344. "'form_id' text," +
  345. "'key' text," +
  346. "'label' text," +
  347. "'value' text," +
  348. "'type' text," +
  349. "'sq_no' integer)", values: nil)
  350. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'SERVICE_BANK' (" +
  351. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  352. "'service_id' text NOT NULL UNIQUE," +
  353. "'service_name' text," +
  354. "'description' text," +
  355. "'parent' text," +
  356. "'is_tablet' text)", values: nil)
  357. try fmdb.executeUpdate("CREATE TABLE IF NOT EXISTS 'WORKING_AREA' (" +
  358. "'id' integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
  359. "'area_id' text NOT NULL UNIQUE," +
  360. "'name' text," +
  361. "'parent' text," +
  362. "'level' text)", values: nil)
  363. }
  364. public func executes(fmdb: FMDatabase, queries: [String]) {
  365. do {
  366. for sql in queries {
  367. try fmdb.executeUpdate(sql, values: nil)
  368. }
  369. } catch {
  370. print(error.localizedDescription)
  371. }
  372. }
  373. public func rawQuery(fmdb: FMDatabase, queries: String) {
  374. do {
  375. try fmdb.executeUpdate(queries, values: nil)
  376. } catch {
  377. print(error.localizedDescription)
  378. }
  379. }
  380. public func insertRecord(fmdb: FMDatabase, table: String, cvalues: [String:Any], replace: Bool) throws -> Int {
  381. var _result = 0
  382. var fields = ""
  383. var values = ""
  384. var delim = ""
  385. var data = [String]()
  386. for (key, value) in cvalues {
  387. fields += delim + key
  388. values += delim + "?"
  389. delim = ","
  390. if let stringval = value as? String{
  391. data.append(stringval)
  392. }
  393. else {
  394. let objval = String(describing: value)
  395. data.append(objval)
  396. }
  397. }
  398. try fmdb.executeUpdate((replace ? "replace" : "insert") + " into " + table + "(" + fields + ") values (" + values + ")", values: data)
  399. _result = 1
  400. return _result
  401. }
  402. public func getRecords(fmdb: FMDatabase, table: String, fields: [String], _where : String, group_by : String, order_by: String) -> FMResultSet? {
  403. var _result: FMResultSet? = nil
  404. do {
  405. var _fields = ""
  406. var delim = ""
  407. for field in fields {
  408. _fields += delim + field
  409. delim = ","
  410. }
  411. var _whereClause = ""
  412. if (!_where.isEmpty) {
  413. _whereClause = " where " + _where
  414. }
  415. if !group_by.isEmpty {
  416. _whereClause += " group by " + group_by
  417. }
  418. if !order_by.isEmpty {
  419. _whereClause += " order by " + order_by
  420. }
  421. _result = try fmdb.executeQuery("select " + _fields + " from " + table + _whereClause, values: nil)
  422. } catch {
  423. print(error.localizedDescription)
  424. }
  425. return _result
  426. }
  427. public func getRecords(fmdb: FMDatabase, query: String) -> FMResultSet? {
  428. var _result: FMResultSet? = nil
  429. do {
  430. _result = try fmdb.executeQuery(query, values: nil)
  431. } catch {
  432. print(error)
  433. }
  434. return _result
  435. }
  436. public func updateAllRecord(fmdb: FMDatabase, table: String, cvalues: [String:Any]) -> Int {
  437. var _result = 0
  438. do {
  439. var fields = ""
  440. var delim = ""
  441. var data = [Any]()
  442. for (key, value) in cvalues {
  443. fields += delim + key + " = ?"
  444. delim = ","
  445. data.append(value)
  446. }
  447. try fmdb.executeUpdate("update " + table + " set " + fields, values: data)
  448. _result = 1
  449. } catch {
  450. print(error.localizedDescription)
  451. }
  452. return _result
  453. }
  454. public func updateRecord(fmdb: FMDatabase, table: String, cvalues: [String:Any], _where: String) -> Int {
  455. var _result = 0
  456. do {
  457. var fields = ""
  458. var delim = ""
  459. var data = [Any]()
  460. for (key, value) in cvalues {
  461. fields += delim + key + " = ?"
  462. delim = ","
  463. data.append(value)
  464. }
  465. var _whereClause = ""
  466. if (!_where.isEmpty) {
  467. _whereClause = " where " + _where
  468. }
  469. try fmdb.executeUpdate("update " + table + " set " + fields + _whereClause, values: data)
  470. _result = 1
  471. } catch {
  472. print(error.localizedDescription)
  473. }
  474. return _result
  475. }
  476. public func deleteRecord(fmdb: FMDatabase, table: String, _where : String) -> Int {
  477. var _result = 0
  478. do {
  479. var _whereClause = ""
  480. if (!_where.isEmpty) {
  481. _whereClause = " where " + _where
  482. }
  483. try fmdb.executeUpdate("delete from " + table + _whereClause, values: nil)
  484. _result = 1
  485. } catch {
  486. print(error.localizedDescription)
  487. }
  488. return _result
  489. }
  490. }