UNPKG

oimi-helper

Version:

this is a helper for ffandown

107 lines (106 loc) 3.57 kB
const { SysDownloadDb, sequelize } = require('./entity') const { Op } = require('sequelize') const dbOperation = { async sync () { try { await sequelize.sync() console.log('\x1b[32m[ffandown] Database synced successfully\x1b[0m') } catch (e) { console.log('\x1b[31m[ffandown] Database synced failed:' + String(e).trim() + '\x1b[0m') } }, /** * @description create download record * @param {*} param {uid, name, url, percent, filePath, status, speed} * @returns */ async create (body) { try { const time = new Date().toLocaleString() const download = await SysDownloadDb.create({ ...body, crt_tm: time, upd_tm: time }) return Promise.resolve(download) } catch (e) { return Promise.reject(e) } }, async delete (uid) { try { const deletedRes = await SysDownloadDb.destroy({ where: { uid } }) return Promise.resolve(deletedRes) } catch (e) { return Promise.reject(e) } }, async update (uid, body) { try { const mission = body if (!mission.upd_tm) mission.upd_tm = new Date().toLocaleString() const download = await SysDownloadDb.update(mission, { where: { uid } }) return Promise.resolve(download) } catch (e) { return Promise.reject(e) } }, async getAll () { try { const all = await SysDownloadDb.findAll() return Promise.resolve(all) } catch (e) { return Promise.reject(e) } }, async queryOne (uid) { try { const mission = await SysDownloadDb.findOne({ where: { uid } }) return Promise.resolve(mission) } catch (e) { return Promise.reject(e) } }, async queryByPage ({ pageNumber = 1, pageSize = 1, sortField = 'crt_tm', sortOrder = 'ASC', status = '1' }) { try { const statusList = String(status || '1').split(',').map(item => Number(item.trim())) const offset = (pageNumber - 1) * pageSize const options = { limit: pageSize, offset, order: [[sortField, sortOrder]], where: { status: { [Op.in]: statusList }, }, } const allMissions = await SysDownloadDb.findAndCountAll(options) return allMissions } catch (e) { return Promise.reject(e) } }, // 获取等待中的下载任务 async queryMissionByType (type = 'waiting') { const statusMap = { waiting: ['5'], downloading: ['0', '1', '2'], finished: ['3', '4'], needResume: ['5'], // 可以恢复下载或者初始化时等待下载的任务 3/4不需要管 } try { const allMissions = await SysDownloadDb.findAll({ where: { status: { [Op.in]: statusMap[type] } }, order: [['crt_tm', 'ASC']] }) return Promise.resolve(allMissions) } catch (e) { return Promise.reject(e) } }, // 批量删除下载任务 async batchDelete (uids) { try { return await SysDownloadDb.destroy({ where: { uid: uids, }, }) } catch (e) { return Promise.reject(e) } }, } module.exports = dbOperation