diff --git a/package.json b/package.json index 92fdb3e..483f6fe 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "core-js": "^3.4.4", "element-ui": "^2.4.5", "flyio": "^0.6.14", - "pouchdb-adapter-idb": "^7.1.1", "vue": "^2.6.10", "vue-class-component": "^7.0.2", "vue-property-decorator": "^8.3.0", diff --git a/src/page/setting.vue b/src/page/setting.vue index 7954f27..4e9af3a 100644 --- a/src/page/setting.vue +++ b/src/page/setting.vue @@ -34,16 +34,24 @@ diff --git a/src/plugins/nedb/index.ts b/src/plugins/nedb/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/plugins/nedb/setting.ts b/src/plugins/nedb/setting.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/plugins/nedb/video.ts b/src/plugins/nedb/video.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/plugins/rxdb/index.ts b/src/plugins/rxdb/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/plugins/rxdb/schema.ts b/src/plugins/rxdb/schema.ts deleted file mode 100644 index 8733cb8..0000000 --- a/src/plugins/rxdb/schema.ts +++ /dev/null @@ -1,41 +0,0 @@ -const videoSchema = { - version: 0, - type: 'object', - properties: { - name: { - type: 'string' - }, - type: { - type: 'string' - }, - time: { - type: 'string' - }, - detail: { - type: 'string', - primary: true - }, - urls: { - type: 'array' - }, - index: { - type: 'number' - } - } -} - -const settingSchema = { - version: 0, - type: 'object', - properties: { - theme: { - type: 'string', - default: 'light' - } - } -} - -export { - videoSchema, - settingSchema -} diff --git a/src/plugins/tinydb/Table.ts b/src/plugins/tinydb/Table.ts new file mode 100644 index 0000000..8ef6cf7 --- /dev/null +++ b/src/plugins/tinydb/Table.ts @@ -0,0 +1,133 @@ +export class Table { + name: string + db: IDBDatabase + constructor (name: string, db:IDBDatabase) { + this.name = name + this.db = db + } + // create transaction + transaction (mode = true) { + return this.db.transaction([this.name], mode === true ? 'readwrite' : 'readonly') + } + // open or conntect this table + request () { + return this.transaction().objectStore(this.name) + } + // get + select (selector: any) { + let index: string + let indexValue: any + for (let name in selector) { + index = name + indexValue = selector[name] + } + return new Promise((resolve, reject) => { + const selectRequest = this.request().index(index).getAll(indexValue) + selectRequest.onsuccess = (e:any) => { + resolve(e.target.result) + } + selectRequest.onerror = (e:any) => { + reject(e.target.result) + } + }) + } + selectId (id:number) { + return new Promise((resolve, reject) => { + const selectRequest = this.request().get(id) + selectRequest.onsuccess = (e:any) => { + resolve(e.target.result) + } + selectRequest.onerror = (e:any) => { + reject(e.target.result) + } + }) + } + selectAll () { + return new Promise((resolve, reject) => { + const selectRequest = this.request().getAll() + selectRequest.onsuccess = (e:any) => { + resolve(e.target.result) + } + selectRequest.onerror = (e:any) => { + reject(e.target.result) + } + }) + } + // some + some (index: any, start:any, end:any) { + return new Promise((resolve, reject) => { + const temp:any = [] + const cursor = this.request().index(index) + const range = IDBKeyRange.bound(start, end) + cursor.openCursor(range).onsuccess = (ev:any) => { + const res = ev.target.result + if (res) { + temp.push(res.value) + res.continue() + } else { + resolve(temp) + } + } + cursor.openCursor(range).onerror = (ev: any) => { + reject(ev) + } + }) + } + // put + update (data: any) { + return new Promise((resolve, reject) => { + const updateRequest = this.request().put(data) + updateRequest.onsuccess = (e:any) => { + resolve(e) + } + updateRequest.onerror = (e:any) => { + reject(e) + } + }) + } + // add + insert (data: any) { + return new Promise((resolve, reject) => { + const addRequest = this.request().add(data) + addRequest.onsuccess = (e:any) => { + resolve(e) + } + addRequest.onerror = (e:any) => { + reject(e) + } + }) + } + // get -> delete + delete (selector: any) { + return new Promise((resolve, reject) => { + this.select(selector).then((res: any) => { + if (res.length) { + res.forEach((item: any, index: any, arr: any) => { + const request = this.request() + const keyPath = request.keyPath as string + const deleteRequest = request.delete(item[keyPath]) + deleteRequest.onsuccess = (e: any) => { + if (index === arr.length - 1) { + resolve(e) + } + } + deleteRequest.onerror = (e: any) => { + reject(e) + } + }) + } + }) + }) + } + clear () { + return new Promise((resolve, reject) => { + const deleteRequest = this.request().clear() + deleteRequest.onsuccess = (e: any) => { + resolve(e) + } + deleteRequest.onerror = (e: any) => { + reject(e) + } + }) + } +} diff --git a/src/plugins/tinydb/index.ts b/src/plugins/tinydb/index.ts new file mode 100644 index 0000000..b7ec246 --- /dev/null +++ b/src/plugins/tinydb/index.ts @@ -0,0 +1,5 @@ +import tiny from 'tinydb' + +const db = {} + +export default db diff --git a/src/plugins/tinydb/types.ts b/src/plugins/tinydb/types.ts new file mode 100644 index 0000000..f828e6c --- /dev/null +++ b/src/plugins/tinydb/types.ts @@ -0,0 +1,34 @@ +export interface Database { + databaseName: string + tables: Array + version?: number +} + +export interface DatabaseTable { + name: string + keyPath: string + autoIncrement: boolean + indexs: Array +} + +export interface RuleIndex { + index: string + relativeIndex: string + unique: boolean +} + +export interface TinyDBRule { + db: IDBDatabase + name: string + version: number + table: IDBObjectStore + tables: Array + connect(): Promise +} + +export interface TableFn { + select(): any + update(): any + insert(): any + delete(): any +} diff --git a/yarn.lock b/yarn.lock index 34c1b8f..241b999 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1626,11 +1626,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argsarray@0.0.1: - version "0.0.1" - resolved "http://r.cnpmjs.org/argsarray/download/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" - integrity sha1-bnIHtOzbObCviDA/pa4ivajfYcs= - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -2118,11 +2113,6 @@ buffer-fill@^1.0.0: resolved "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@1.1.0: - version "1.1.0" - resolved "http://r.cnpmjs.org/buffer-from/download/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" - integrity sha1-h/yqOimDWOCt5uRCz86EB0DRrQQ= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2575,11 +2565,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-buffer@1.0.0: - version "1.0.0" - resolved "http://r.cnpmjs.org/clone-buffer/download/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -5192,7 +5177,7 @@ ignore@^5.0.2: resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8= -immediate@3.0.6, immediate@~3.0.5: +immediate@~3.0.5: version "3.0.6" resolved "https://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= @@ -7669,84 +7654,6 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.2 source-map "^0.6.1" supports-color "^6.1.0" -pouchdb-adapter-idb@^7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-adapter-idb/download/pouchdb-adapter-idb-7.1.1.tgz#1c62edc4a0f5713422daa488ddcdcc5bfe68d130" - integrity sha1-HGLtxKD1cTQi2qSI3c3MW/5o0TA= - dependencies: - pouchdb-adapter-utils "7.1.1" - pouchdb-binary-utils "7.1.1" - pouchdb-collections "7.1.1" - pouchdb-errors "7.1.1" - pouchdb-json "7.1.1" - pouchdb-merge "7.1.1" - pouchdb-utils "7.1.1" - -pouchdb-adapter-utils@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-adapter-utils/download/pouchdb-adapter-utils-7.1.1.tgz#565e63e06ed69cbdc36bac358b0eef6ebbf9eb31" - integrity sha1-Vl5j4G7WnL3Da6w1iw7vbrv56zE= - dependencies: - pouchdb-binary-utils "7.1.1" - pouchdb-collections "7.1.1" - pouchdb-errors "7.1.1" - pouchdb-md5 "7.1.1" - pouchdb-merge "7.1.1" - pouchdb-utils "7.1.1" - -pouchdb-binary-utils@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-binary-utils/download/pouchdb-binary-utils-7.1.1.tgz#04f6c4d8385dbcead3e1023139a4d7586d2005df" - integrity sha1-BPbE2DhdvOrT4QIxOaTXWG0gBd8= - dependencies: - buffer-from "1.1.0" - -pouchdb-collections@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-collections/download/pouchdb-collections-7.1.1.tgz#4f7704896e4055ba354241c0fd75bbb7446a809f" - integrity sha1-T3cEiW5AVbo1QkHA/XW7t0RqgJ8= - -pouchdb-errors@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-errors/download/pouchdb-errors-7.1.1.tgz#799603a46e3dfc9ec9403fe11610236a46354cf6" - integrity sha1-eZYDpG49/J7JQD/hFhAjakY1TPY= - dependencies: - inherits "2.0.3" - -pouchdb-json@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-json/download/pouchdb-json-7.1.1.tgz#e248b7ee7cc8c30b121184bb64b477a9c67d2378" - integrity sha1-4ki37nzIwwsSEYS7ZLR3qcZ9I3g= - dependencies: - vuvuzela "1.0.3" - -pouchdb-md5@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-md5/download/pouchdb-md5-7.1.1.tgz#560e868ba1c16df6be5b2e1924af9df5a91ac669" - integrity sha1-Vg6Gi6HBbfa+Wy4ZJK+d9akaxmk= - dependencies: - pouchdb-binary-utils "7.1.1" - spark-md5 "3.0.0" - -pouchdb-merge@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-merge/download/pouchdb-merge-7.1.1.tgz#d05cd9b71faf4103107bc1b2771c9f508fa4ae1c" - integrity sha1-0FzZtx+vQQMQe8GydxyfUI+krhw= - -pouchdb-utils@7.1.1: - version "7.1.1" - resolved "http://r.cnpmjs.org/pouchdb-utils/download/pouchdb-utils-7.1.1.tgz#a6999f73c89f31afc43a71819cc0a82d95eb29fb" - integrity sha1-ppmfc8ifMa/EOnGBnMCoLZXrKfs= - dependencies: - argsarray "0.0.1" - clone-buffer "1.0.0" - immediate "3.0.6" - inherits "2.0.3" - pouchdb-collections "7.1.1" - pouchdb-errors "7.1.1" - pouchdb-md5 "7.1.1" - uuid "3.2.1" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -8811,11 +8718,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= -spark-md5@3.0.0: - version "3.0.0" - resolved "http://r.cnpmjs.org/spark-md5/download/spark-md5-3.0.0.tgz#3722227c54e2faf24b1dc6d933cc144e6f71bfef" - integrity sha1-NyIifFTi+vJLHcbZM8wUTm9xv+8= - spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -9870,11 +9772,6 @@ utils-merge@1.0.1: resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@3.2.1: - version "3.2.1" - resolved "http://r.cnpmjs.org/uuid/download/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - integrity sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ= - uuid@^3.0.1, uuid@^3.3.2: version "3.3.3" resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" @@ -10013,11 +9910,6 @@ vuex@^3.1.2: resolved "https://registry.npm.taobao.org/vuex/download/vuex-3.1.2.tgz#a2863f4005aa73f2587e55c3fadf3f01f69c7d4d" integrity sha1-ooY/QAWqc/JYflXD+t8/AfacfU0= -vuvuzela@1.0.3: - version "1.0.3" - resolved "http://r.cnpmjs.org/vuvuzela/download/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" - integrity sha1-O+FF5YJxxzylUnndhR8SpoIRSws= - watchpack@^1.6.0: version "1.6.0" resolved "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"