db update
Former-commit-id: 227391acd445196d063c7e5424cbf5243ed34fff [formerly 227391acd445196d063c7e5424cbf5243ed34fff [formerly 227391acd445196d063c7e5424cbf5243ed34fff [formerly 227391acd445196d063c7e5424cbf5243ed34fff [formerly 09be4dfe2d27d6b5cae7f5229fd89e107df524d2 [formerly af907a0206a24d385946e44d22e9dc02e65c3d5d]]]]] Former-commit-id: 8c415cd0ae09c25683be79488e84cf39aa6143a7 Former-commit-id: 7e7392d78cdbd636dc856df3276ee66a2a14b9cb Former-commit-id: 4417f57b963cce4a8b24e6729c2f914505cfaf16 [formerly 0addaeab1e075b68324da0c7a29fcac878fb938a] Former-commit-id: 596cd1e5b343e096aa7974e42ff238138b45b65a Former-commit-id: 87e1da947c638b286f5a7e4d63ec99b063acdbbc Former-commit-id: f6b6ba6cb2a25ae7fabb657f0903e856058c1647 Former-commit-id: ce0fbdb1493e80b5afd920c95a78f1e919f221e4 Former-commit-id: df86d4b69730e071f71e34511d8fb6cc39664726
This commit is contained in:
@@ -1 +1 @@
|
||||
4fee0ebd82dca4d2b9cd0ff053df6807cfd880ac
|
||||
03c3404e1d1584485b9a7b73671b1dd1d17a0e14
|
||||
@@ -34,17 +34,6 @@ export default {
|
||||
}, { root: true })
|
||||
// 用户登陆后从数据库加载一系列的设置
|
||||
commit('d2admin/account/load', null, { root: true })
|
||||
// 测试
|
||||
// commit('d2admin/db/set', {
|
||||
// dbName: 'db',
|
||||
// path: 'log.login',
|
||||
// value: res.data.name
|
||||
// }, { root: true })
|
||||
commit('d2admin/db/push', {
|
||||
dbName: 'db',
|
||||
path: 'log.login',
|
||||
value: res.data.name
|
||||
}, { root: true })
|
||||
// 跳转路由
|
||||
vm.$router.push({
|
||||
name: 'index'
|
||||
|
||||
@@ -5,83 +5,50 @@ import util from '@/libs/util.js'
|
||||
* @description 检查路径是否存在 不存在的话初始化
|
||||
* @param {Object} param dbName {String} 数据库名称
|
||||
* @param {Object} param path {String} 路径
|
||||
* @param {Object} param user {Boolean} 区分用户
|
||||
* @param {Object} param validator {Function} 数据校验钩子 返回 true 表示验证通过
|
||||
* @param {Object} param defaultValue {*} 初始化默认值
|
||||
*/
|
||||
function pathInit ({
|
||||
dbName = 'db',
|
||||
path = '',
|
||||
user = true,
|
||||
validator = () => true,
|
||||
defaultValue = ''
|
||||
}) {
|
||||
const sys = db.get(dbName)
|
||||
const value = sys.get(path).value()
|
||||
const uuid = util.cookies.get('uuid') || 'ghost-uuid'
|
||||
const currentPath = `${user ? `user.${uuid}` : 'public'}.${path}`
|
||||
const value = sys.get(currentPath).value()
|
||||
if (!(value && validator(value))) {
|
||||
sys
|
||||
.set(path, defaultValue)
|
||||
.set(currentPath, defaultValue)
|
||||
.write()
|
||||
}
|
||||
return sys.get(path)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 检查路径下是否有当前用户的档案
|
||||
* @param {Object} param dbName {String} 数据库名称
|
||||
* @param {Object} param path {String} 路径
|
||||
*/
|
||||
function isRowExistByUser ({
|
||||
dbName = 'sys',
|
||||
path = ''
|
||||
}) {
|
||||
const sys = db.get(dbName)
|
||||
const row = sys
|
||||
.get(path)
|
||||
.find({
|
||||
uuid: util.cookies.get('uuid')
|
||||
})
|
||||
// 返回可以操作的 row 或者布尔值 false
|
||||
// 外部判断返回值的时候建议使用 if (!isRowExistByUser({}))
|
||||
if (row.value()) {
|
||||
return row
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
return `${dbName}.${currentPath}`
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
mutations: {
|
||||
/**
|
||||
* @description 将数据存储到指定位置 | 路径不存在会自动初始化 [不区分用户]
|
||||
* @description 将数据存储到指定位置 | 路径不存在会自动初始化
|
||||
* @description 效果类似于 dbName.path = value
|
||||
* @param {Object} state vuex state
|
||||
* @param {Object} param dbName {String} 数据库名称
|
||||
* @param {Object} param path {String} 存储路径
|
||||
* @param {Object} param value {*} 需要存储的值
|
||||
*/
|
||||
set (state, { dbName = 'db', path = '', value = '' }) {
|
||||
db
|
||||
.get(dbName)
|
||||
.set(path, value)
|
||||
.write()
|
||||
},
|
||||
/**
|
||||
* @description 将数据 push 到指定位置 | 路径不存在会自动初始化 [不区分用户]
|
||||
* @description 效果类似于 dbName.path.push(value)
|
||||
* @param {Object} state vuex state
|
||||
* @param {Object} param dbName {String} 数据库名称
|
||||
* @param {Object} param path {String} 存储路径
|
||||
* @param {Object} param value {*} 需要存储的值
|
||||
*/
|
||||
push (state, { dbName = 'db', path = '', value = '' }) {
|
||||
pathInit({
|
||||
set (state, {
|
||||
dbName = 'db',
|
||||
path = '',
|
||||
value = ''
|
||||
}) {
|
||||
db.set(pathInit({
|
||||
dbName,
|
||||
path,
|
||||
validator: value => Array.isArray(value),
|
||||
defaultValue: []
|
||||
})
|
||||
.push(value)
|
||||
.write()
|
||||
user: false
|
||||
}), value).write()
|
||||
},
|
||||
/**
|
||||
* @description 将数据存储到指定位置 | 路径不存在会自动初始化 [区分用户]
|
||||
@@ -96,24 +63,35 @@ export default {
|
||||
path = '',
|
||||
value = ''
|
||||
}) {
|
||||
// 得到路径在数据库中的对象 没有初始化会自动初始化
|
||||
// ByUser 类型的默认值设置为数组
|
||||
// 以后数组的每一项是一个用户的存档
|
||||
const currentPath = pathInit({ dbName, path, defaultValue: [] })
|
||||
// 得到当前用户在数据库此路径下的存档
|
||||
const row = isRowExistByUser({ dbName, path })
|
||||
// 合并 or 追加
|
||||
if (!row) {
|
||||
currentPath.push({
|
||||
uuid: util.cookies.get('uuid'),
|
||||
value
|
||||
}).write()
|
||||
} else {
|
||||
row.assign({ value }).write()
|
||||
}
|
||||
db.set(pathInit({
|
||||
dbName,
|
||||
path
|
||||
}), value).write()
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
/**
|
||||
* @description 获取数据
|
||||
* @description 效果类似于 dbName.path || defaultValue
|
||||
* @param {Object} state vuex state
|
||||
* @param {Object} param dbName {String} 数据库名称
|
||||
* @param {Object} param path {String} 存储路径
|
||||
* @param {Object} param defaultValue {*} 取值失败的默认值
|
||||
*/
|
||||
get (context, {
|
||||
dbName = 'db',
|
||||
path = '',
|
||||
defaultValue = ''
|
||||
}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
resolve(db.get(pathInit({
|
||||
dbName,
|
||||
path,
|
||||
user: false,
|
||||
defaultValue
|
||||
})).value())
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description 获取数据 [区分用户]
|
||||
* @description 效果类似于 dbName.path[user] || defaultValue
|
||||
@@ -128,10 +106,12 @@ export default {
|
||||
defaultValue = ''
|
||||
}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 得到当前用户在数据库此路径下的存档
|
||||
const row = isRowExistByUser({ path })
|
||||
// 返回存档或者默认值
|
||||
resolve(!row ? defaultValue : row.value().value)
|
||||
resolve(db.get(pathInit({
|
||||
dbName,
|
||||
path,
|
||||
user: true,
|
||||
defaultValue
|
||||
})).value())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,9 @@ export default {
|
||||
state.info = await this.dispatch('d2admin/db/getByUser', {
|
||||
dbName: 'sys',
|
||||
path: 'user.info',
|
||||
defaultValue: '请重新登陆'
|
||||
defaultValue: {
|
||||
name: 'Ghost'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user