telex-server-monitor-sdk
Version:
SDK for Telex Server Monitor - A lightweight agent that collects and reports server CPU metrics to the Telex monitoring platform
80 lines (79 loc) • 2.41 kB
JavaScript
import fs from "fs";
import { logger } from "./logger.js";
import { AppConstants } from "../index.js";
// Ensure store directory exists
function ensureStoreExists() {
if (!fs.existsSync(AppConstants.Package.BaseDir)) {
fs.mkdirSync(AppConstants.Package.BaseDir, { recursive: true });
}
}
/**
* Clear the entire store
*/
export function clearStore() {
try {
if (fs.existsSync(AppConstants.Package.StoreFile)) {
fs.unlinkSync(AppConstants.Package.StoreFile);
}
}
catch (error) {
logger.error(`Failed to clear store: ${error.message}`);
throw error;
}
}
/**
* Save data to the store
* @param data The data to save
*/
export function saveStoreData(data) {
try {
ensureStoreExists();
let store = {};
if (fs.existsSync(AppConstants.Package.StoreFile)) {
store = JSON.parse(fs.readFileSync(AppConstants.Package.StoreFile, "utf-8"));
}
// Merge new data with existing store
const updatedStore = { ...store, ...data };
fs.writeFileSync(AppConstants.Package.StoreFile, JSON.stringify(updatedStore, null, 2));
}
catch (error) {
logger.error(`Failed to save store data: ${error.message}`);
throw error;
}
}
/**
* Get data from the store
* @returns The stored data or undefined if the file does not exist
*/
export function getStoreData() {
try {
if (!fs.existsSync(AppConstants.Package.StoreFile)) {
return undefined;
}
return JSON.parse(fs.readFileSync(AppConstants.Package.StoreFile, "utf-8"));
}
catch (error) {
logger.error(`Failed to read store data: ${error.message}`);
throw error;
}
}
/**
* Update data in the store
* @param updater The function to update the store
*/
export function updateStoreData(updater) {
try {
ensureStoreExists();
let store = {};
if (fs.existsSync(AppConstants.Package.StoreFile)) {
store = JSON.parse(fs.readFileSync(AppConstants.Package.StoreFile, "utf-8"));
}
const updatedData = updater(store);
const updatedStore = { ...store, ...updatedData };
fs.writeFileSync(AppConstants.Package.StoreFile, JSON.stringify(updatedStore, null, 2));
}
catch (error) {
logger.error(`Failed to update store data: ${error.message}`);
throw error;
}
}