diff --git a/package.json b/package.json index 483f6fe..1fcd3c4 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,13 @@ }, "main": "background.js", "dependencies": { + "@types/nedb": "^1.8.9", "core-js": "^3.4.4", "element-ui": "^2.4.5", "flyio": "^0.6.14", + "localforage": "^1.7.3", + "nedb": "^1.8.0", + "uuidv4": "^6.0.1", "vue": "^2.6.10", "vue-class-component": "^7.0.2", "vue-property-decorator": "^8.3.0", diff --git a/src/App.vue b/src/App.vue index 661fb2e..29c7d26 100644 --- a/src/App.vue +++ b/src/App.vue @@ -40,7 +40,7 @@ const { ipcRenderer: ipc } = require('electron') export default Vue.extend({ data () { return { - Main: 'Star', + Main: 'Setting', drawer: false } }, diff --git a/src/page/setting.vue b/src/page/setting.vue index 4e9af3a..0163f18 100644 --- a/src/page/setting.vue +++ b/src/page/setting.vue @@ -34,7 +34,8 @@ diff --git a/src/plugins/localforage/index.ts b/src/plugins/localforage/index.ts new file mode 100644 index 0000000..8d3ab68 --- /dev/null +++ b/src/plugins/localforage/index.ts @@ -0,0 +1,36 @@ +import Nedb from 'nedb' +export default class { + db: any + constructor () { + this.db = null + } + + create (db: any) { + const name = process.env.NODE_ENV === 'development' ? 'ZY-dev' : 'ZY' + const database: any = {} + + database.setting = new Nedb({ + filename: name + db.setting, + autoload: true + }) + database.video = new Nedb({ + filename: name + db.video, + autoload: true + }) + + return database + } + + init () { + if (this.db) { + return this.db + } + + this.db = this.create({ + setting: '-setting', + video: '-video' + }) + + return this.db + } +} diff --git a/src/plugins/localforage/setting.ts b/src/plugins/localforage/setting.ts new file mode 100644 index 0000000..00cde35 --- /dev/null +++ b/src/plugins/localforage/setting.ts @@ -0,0 +1,9 @@ +// import { setting } from './index' + +// export default { +// add (data: any) { +// return new Promise((resolve, reject) => { +// // setting +// }) +// } +// } \ No newline at end of file diff --git a/src/plugins/localforage/video.ts b/src/plugins/localforage/video.ts new file mode 100644 index 0000000..091d05b --- /dev/null +++ b/src/plugins/localforage/video.ts @@ -0,0 +1,16 @@ +// import { video } from './index' +// // const id = require('nanoid') +// import { uuid } from 'uuidv4' + +// export default { +// add (key: string, value: any) { +// return new Promise((resolve, reject) => { +// value._id = uuid() +// video.setItem(key, value).then(res => { +// resolve(res) +// }).catch(err => { +// reject(err) +// }) +// }) +// } +// } diff --git a/src/plugins/tinydb/Table.ts b/src/plugins/tinydb/Table.ts deleted file mode 100644 index 8ef6cf7..0000000 --- a/src/plugins/tinydb/Table.ts +++ /dev/null @@ -1,133 +0,0 @@ -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 deleted file mode 100644 index b7ec246..0000000 --- a/src/plugins/tinydb/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import tiny from 'tinydb' - -const db = {} - -export default db diff --git a/src/plugins/tinydb/types.ts b/src/plugins/tinydb/types.ts deleted file mode 100644 index f828e6c..0000000 --- a/src/plugins/tinydb/types.ts +++ /dev/null @@ -1,34 +0,0 @@ -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 241b999..8374b00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -927,6 +927,13 @@ resolved "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz?cache=0&sync_timestamp=1572464707542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0= +"@types/nedb@^1.8.9": + version "1.8.9" + resolved "http://r.cnpmjs.org/@types/nedb/download/@types/nedb-1.8.9.tgz#3cb80a94dfe41bea1dc33c4ea39cd4e7f754abc4" + integrity sha1-PLgKlN/kG+odwzxOo5zU5/dUq8Q= + dependencies: + "@types/node" "*" + "@types/node@*": version "13.1.6" resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-13.1.6.tgz?cache=0&sync_timestamp=1578585994687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.1.6.tgz#076028d0b0400be8105b89a0a55550c86684ffec" @@ -1751,6 +1758,11 @@ async-validator@~1.8.1: dependencies: babel-runtime "6.x" +async@0.2.10: + version "0.2.10" + resolved "http://r.cnpmjs.org/async/download/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= + async@^2.0.0, async@^2.6.2: version "2.6.3" resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1902,6 +1914,13 @@ binary-extensions@^2.0.0: resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w= +binary-search-tree@0.2.5: + version "0.2.5" + resolved "http://r.cnpmjs.org/binary-search-tree/download/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" + integrity sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q= + dependencies: + underscore "~1.4.4" + bindings@^1.5.0: version "1.5.0" resolved "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -5957,6 +5976,13 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lie@3.1.1: + version "3.1.1" + resolved "http://r.cnpmjs.org/lie/download/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + lie@~3.3.0: version "3.3.0" resolved "https://registry.npm.taobao.org/lie/download/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" @@ -6022,6 +6048,13 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" +localforage@^1.3.0, localforage@^1.7.3: + version "1.7.3" + resolved "http://r.cnpmjs.org/localforage/download/localforage-1.7.3.tgz#0082b3ca9734679e1bd534995bdd3b24cf10f204" + integrity sha1-AIKzypc0Z54b1TSZW907JM8Q8gQ= + dependencies: + lie "3.1.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6551,6 +6584,17 @@ natural-compare@^1.4.0: resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +nedb@^1.8.0: + version "1.8.0" + resolved "http://r.cnpmjs.org/nedb/download/nedb-1.8.0.tgz#0e3502cd82c004d5355a43c9e55577bd7bd91d88" + integrity sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg= + dependencies: + async "0.2.10" + binary-search-tree "0.2.5" + localforage "^1.3.0" + mkdirp "~0.5.1" + underscore "~1.4.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -9543,6 +9587,11 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" +underscore@~1.4.4: + version "1.4.4" + resolved "http://r.cnpmjs.org/underscore/download/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" + integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -9772,11 +9821,23 @@ 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.4.0: + version "3.4.0" + resolved "http://r.cnpmjs.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4= + 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" integrity sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY= +uuidv4@^6.0.1: + version "6.0.1" + resolved "http://r.cnpmjs.org/uuidv4/download/uuidv4-6.0.1.tgz#dd28cbe6057186091925da2c327d75b51ffe3628" + integrity sha1-3SjL5gVxhgkZJdosMn11tR/+Nig= + dependencies: + uuid "3.4.0" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"