/**
 * 缓存操作
 *
 */

import config from '@/config'

/**
 * 获取缓存 key
 */
function _key(key) {
  return `${config.prefix}${key}`
}

/**
 * 获取缓存时间 key
 */
function _expKey(key) {
  return `${config.prefix}${key}_exptime`
}

/**
 * 获取缓存
 *
 * key    键名
 * def    为空时默认数据
 */
export function get(key, def = null) {
  const value = uni.getStorageSync(_key(key))
  const exptime = Number(uni.getStorageSync(_expKey(key)))
  if (!exptime || exptime > new Date().getTime()) {
    return value || def
  }
  return def
}

/**
 * 设置缓存
 *
 * key    键名
 * value  键值
 * sec    缓存时间（秒）
 */
export function set(key, value, sec = 0) {
  uni.setStorageSync(_key(key), value)
  if (sec > 0) {
    uni.setStorageSync(_expKey(key), new Date().getTime() + sec * 1000)
  } else {
    uni.removeStorageSync(_expKey(key))
  }
}

/**
 * 移除缓存
 *
 * key    键名
 */
export function remove(key) {
  uni.removeStorageSync(_key(key))
  uni.removeStorageSync(_expKey(key))
}

/**
 * 清空缓存
 */
export function clear() {
  uni.clearStorageSync()
}

export default { get, set, remove, clear }
