db.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. var PouchDB = require('pouchdb').default
  2. var db = new PouchDB('myuser')
  3. const get = function (id) {
  4. return db.get(id)
  5. }
  6. const save = function (data, id) {
  7. data.id = id
  8. return db.put(data)
  9. }
  10. const getWithDefault = function (id, _default) {
  11. return new Promise((resolve, reject) => {
  12. db.get(id)
  13. .then((data) => { resolve(data) })
  14. .catch((err) => {
  15. if (err.status === 404) {
  16. resolve(_default)
  17. }
  18. else {
  19. reject(err)
  20. }
  21. })
  22. })
  23. }
  24. // const get = function (id) {
  25. // return getWithDefault(id, {_id: id})
  26. // }
  27. const getLang = function () {
  28. return getWithDefault('lang', {_id: 'lang', lang: window.navigator.language.toUpperCase() })
  29. }
  30. const saveLang = function (lang) {
  31. return new Promise((resolve, reject) => {
  32. getLang()
  33. .then(data => {
  34. data.lang = lang
  35. db.put(data)
  36. .then(data => resolve(data))
  37. .catch(err => reject(err))
  38. })
  39. .catch(err => reject(err))
  40. })
  41. }
  42. const getToken = function () {
  43. return getWithDefault('token',{'_id': 'token', 'token': 'any'})
  44. }
  45. const saveToken = function (token) {
  46. return new Promise((resolve, reject) => {
  47. getWithDefault('token', {_id: 'token'})
  48. .then(data => {
  49. data.token = token
  50. db.put(data)
  51. .then(data => resolve(data))
  52. .catch(err => reject(err))
  53. })
  54. .catch(err => reject(err))
  55. })
  56. }
  57. // const save = function (id, data) { }
  58. const getDataInternal = function (id) {
  59. return getWithDefault(id, {'_id': id})
  60. }
  61. const saveData = function (id, data) {
  62. return new Promise((resolve, reject) => {
  63. getDataInternal(id)
  64. .catch(err => { reject(err) })
  65. .then((result) => {
  66. result.data = data
  67. save(result, id)
  68. .then(() => resolve(result))
  69. .catch(err => reject(err))
  70. })
  71. })
  72. }
  73. const getData = function (id) {
  74. return new Promise((resolve, reject) => {
  75. getDataInternal(id)
  76. .then(data => { resolve(data.data) })
  77. .catch(err => { reject(err) })
  78. })
  79. }
  80. const getSelectedCameraIndex = function () {
  81. return getWithDefault('camera_index', {index: 0, _id: 'camera_index'})
  82. }
  83. const setSelectedCameraIndex = function (index) {
  84. return new Promise((resolve, reject) => {
  85. getSelectedCameraIndex()
  86. .then(data => {
  87. data.index = index
  88. db.put(data)
  89. .then(data => resolve(data))
  90. .catch(err => reject(err))
  91. })
  92. .catch(err => reject(err))
  93. })
  94. }
  95. export {
  96. saveToken,
  97. getToken,
  98. getLang,
  99. saveLang,
  100. db,
  101. save,
  102. get,
  103. getData,
  104. saveData,
  105. getWithDefault,
  106. setSelectedCameraIndex,
  107. getSelectedCameraIndex
  108. }