UNPKG

vrem

Version:

An open-source automatic time-tracker

57 lines (56 loc) 2.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEndEntryForTheCurrentProgram = exports.programLogTypes = exports.getProgramLogEntriesForDates = exports.getTaskLogEntriesForDates = void 0; const db_1 = __importDefault(require("./db")); const getTodayStart = () => { const date = new Date(); date.setHours(0, 0, 0, 0); return date; }; const getTodayEnd = () => { const date = new Date(); date.setHours(23, 59, 59, 999); return date; }; function getTaskLogEntriesForDates(from = getTodayStart(), to = new Date()) { const limits = { from: from.valueOf(), to: to.valueOf() }; const finished = db_1.default.prepare(` SELECT name, startTime, CASE WHEN endTime > :to THEN :to ELSE endTime END AS endTime FROM TaskLogs JOIN Tasks ON taskId = Tasks.id WHERE startTime >= :from AND startTime <= :to; `).all(limits); const current = db_1.default.prepare(` SELECT name, startTime, ? AS endTime FROM CurrentTask JOIN Tasks ON taskId = Tasks.id WHERE startTime >= :from AND startTime <= :to LIMIT 1; `).get(limits, Date.now()); if (current) finished.push({ ...current, current: true }); return finished; } exports.getTaskLogEntriesForDates = getTaskLogEntriesForDates; function getProgramLogEntriesForDates(from = getTodayStart(), to = new Date()) { return db_1.default.prepare(` SELECT timestamp, path, description, type FROM ProgramLogs LEFT JOIN Programs ON programId = Programs.id WHERE timestamp >= ? AND timestamp <= ? ORDER BY timestamp ASC; `).all(from.valueOf(), to.valueOf()); } exports.getProgramLogEntriesForDates = getProgramLogEntriesForDates; exports.programLogTypes = Object.freeze(JSON.parse(db_1.default.prepare('SELECT json_group_object(type, id) FROM ProgramLogTypes;').pluck().get())); function getEndEntryForTheCurrentProgram(logEntry) { if (logEntry.type !== exports.programLogTypes.program) return null; const lastActiveTimestamp = db_1.default.prepare(` SELECT lastActiveTimestamp FROM CurrentProgram JOIN Programs ON programId = Programs.id WHERE timestamp = ? AND path = ?; `).pluck().get(logEntry.timestamp, logEntry.path); return lastActiveTimestamp ? { timestamp: lastActiveTimestamp, type: exports.programLogTypes.end } : null; } exports.getEndEntryForTheCurrentProgram = getEndEntryForTheCurrentProgram;