database done

This commit is contained in:
Hunlongyu
2019-12-10 14:09:00 +08:00
parent d7af49d4ee
commit 45603a95c0
7 changed files with 86 additions and 48 deletions

View File

@@ -1,5 +1,5 @@
<template>
<div id="app" :class="getTheme">
<div id="app" :class="getTheme.color">
<Layout class="box">
<Sider class="sider" width="70"><ZYSider /></Sider>
<Layout>
@@ -15,6 +15,7 @@
import { mapGetters, mapActions } from 'vuex'
import ZYSider from '@/components/zy_sider.vue'
import ZYHeader from '@/components/zy_header.vue'
import setting from './plugin/nedb/setting'
export default {
name: 'app',
data () {
@@ -36,13 +37,15 @@ export default {
},
beforeCreate () {},
created () {
// db.find('theme').then(e => {
// if (!e) {
// this.changeTheme('light')
// } else {
// this.changeTheme(e)
// }
// })
setting.find({ $or: [{ theme: 'light' }, { theme: 'dark' }] }).then(e => {
if (e.length <= 0) {
setting.add({ theme: 'light' }).then(res => {
this.changeTheme({ id: res._id, color: res.theme })
})
} else {
this.changeTheme({ id: e[0]._id, color: e[0].theme })
}
})
}
}
</script>

View File

@@ -26,6 +26,7 @@ function createWindow () {
}
})
if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
win.loadURL(process.env.WEBPACK_DEV_SERVER_URL)

View File

@@ -1,42 +1,20 @@
import jetpack from 'fs-jetpack'
import fs from 'fs'
import Nedb from 'nedb'
import { remote } from 'electron'
export default class {
constructor () {
this.db = null
this.dataDir = jetpack.cwd(remote.app.getPath('appData'))
}
createOrReadDB (db) {
const dirName = process.env.NODE_ENV === 'development' ? '.ZY-dev' : '.ZY'
const existsDir = jetpack.exists(this.dataDir.path(dirName))
if (!existsDir) {
fs.mkdir(this.dataDir.path(`${dirName}`), (err) => {
if (err) console.log(err)
})
}
const eSetting = fs.existsSync(this.dataDir.path(`${dirName}/${db.setting}`))
const eVideo = fs.existsSync(this.dataDir.path(`${dirName}/${db.video}`))
let database = {}
if (!eSetting) {
this.dataDir.write(this.dataDir.path(`${dirName}/${db.setting}`), '')
}
if (!eVideo) {
this.dataDir.write(this.dataDir.path(`${dirName}/${db.video}`), '')
}
create (db) {
const name = process.env.NODE_ENV === 'development' ? 'ZY-dev' : 'ZY'
const database = {}
database.setting = new Nedb({
filename: this.dataDir.path(`${dirName}/${db.setting}`),
filename: name + db.setting,
autoload: true
})
database.video = new Nedb({
filename: this.dataDir.path(`${dirName}/${db.video}`),
filename: name + db.video,
autoload: true
})
@@ -48,9 +26,9 @@ export default class {
return this.db
}
this.db = this.createOrReadDB({
setting: 'setting.db',
video: 'video.db'
this.db = this.create({
setting: '-setting',
video: '-video'
})
return this.db

View File

@@ -4,8 +4,6 @@ const db = new DB()
const connect = db.init()
const setting = connect.setting
console.log(setting, 'setting')
export default {
add (data) {
return new Promise((resolve, reject) => {
@@ -25,7 +23,7 @@ export default {
},
update (id, data) {
return new Promise((resolve, reject) => {
setting.find({ _id: id }, { $set: data }, (err, docs) => {
setting.update({ _id: id }, { $set: data }, (err, docs) => {
if (err) { reject(err) }
resolve(docs)
})

View File

@@ -0,0 +1,49 @@
// import DB from './index'
import DB from './index'
const db = new DB()
const connect = db.init()
const video = connect.video
export default {
add (data) {
return new Promise((resolve, reject) => {
video.insert(data, (err, docs) => {
if (err) { reject(err) }
resolve(docs)
})
})
},
find (data) {
return new Promise((resolve, reject) => {
video.find(data, (err, docs) => {
if (err) { reject(err) }
resolve(docs)
})
})
},
update (id, data) {
return new Promise((resolve, reject) => {
video.find({ _id: id }, { $set: data }, (err, docs) => {
if (err) { reject(err) }
resolve(docs)
})
})
},
remove (id) {
return new Promise((resolve, reject) => {
video.remove({ _id: id }, {}, (err, docs) => {
if (err) { reject(err) }
resolve(docs)
})
})
},
removeAll () {
return new Promise((resolve, reject) => {
video.remove({}, { multi: true }, (err, docs) => {
if (err) { reject(err) }
resolve(docs)
})
})
}
}

View File

@@ -1,11 +1,15 @@
import Vue from 'vue'
import Vuex from 'vuex'
import setting from '@/plugin/nedb/setting'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
theme: 'light',
theme: {
id: '',
color: 'light'
},
iconActive: 'search',
video: {}
},
@@ -36,9 +40,9 @@ export default new Vuex.Store({
// localStorage.collection = payload
},
changeTheme: ({ commit }, payload) => {
// setting.set('theme', payload).then(e => {
// commit('SET_THEME', e)
// })
setting.update(payload.id, { theme: payload.color }).then(res => {
commit('SET_THEME', payload)
})
}
}
})

View File

@@ -1,15 +1,20 @@
<template>
<Row>
<Button type="primary" @click="changeTheme('light')">light</Button>
<Button type="primary" @click="changeTheme('dark')">Dark</Button>
<Button type="primary" @click="changeTheme({ id: getTheme.id, color: 'light' })">light</Button>
<Button type="primary" @click="changeTheme({ id: getTheme.id, color: 'dark' })">Dark</Button>
<Button type="primary" @click="add()">Add</Button>
</Row>
</template>
<script>
import { mapActions } from 'vuex'
import { mapGetters, mapActions } from 'vuex'
import settingDB from '@/plugin/nedb/setting'
export default {
name: 'settings',
computed: {
...mapGetters([
'getTheme'
])
},
methods: {
...mapActions([
'changeTheme'