Skip to main content
Glama
database.js3.28 kB
import fs from 'fs/promises'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const DATABASE_PATH = path.join(__dirname, '..', 'data', 'database.json'); /** * Veritabanını okur */ export async function readDatabase() { try { const data = await fs.readFile(DATABASE_PATH, 'utf8'); return JSON.parse(data); } catch (error) { console.error('Veritabanı okuma hatası:', error); throw new Error('Veritabanı okunamadı'); } } /** * Veritabanını günceller */ export async function writeDatabase(data) { try { await fs.writeFile(DATABASE_PATH, JSON.stringify(data, null, 2), 'utf8'); return true; } catch (error) { console.error('Veritabanı yazma hatası:', error); throw new Error('Veritabanı güncellenemedi'); } } /** * Yeni ID oluşturur */ export function generateId(items) { if (!items || items.length === 0) return 1; return Math.max(...items.map(item => item.id)) + 1; } /** * Kullanıcı arar (ad, email, departman, pozisyona göre) */ export function searchUsers(users, query) { const searchTerm = query.toLowerCase(); return users.filter(user => user.name.toLowerCase().includes(searchTerm) || user.email.toLowerCase().includes(searchTerm) || user.department.toLowerCase().includes(searchTerm) || user.position.toLowerCase().includes(searchTerm) ); } /** * Departman istatistikleri hesaplar */ export function calculateDepartmentStats(users, departments) { const stats = {}; departments.forEach(dept => { const deptUsers = users.filter(user => user.department === dept.name); const salaries = deptUsers.map(user => user.salary || 0); stats[dept.name] = { employeeCount: deptUsers.length, totalSalary: salaries.reduce((sum, salary) => sum + salary, 0), averageSalary: salaries.length > 0 ? salaries.reduce((sum, salary) => sum + salary, 0) / salaries.length : 0, minSalary: salaries.length > 0 ? Math.min(...salaries) : 0, maxSalary: salaries.length > 0 ? Math.max(...salaries) : 0 }; }); return stats; } /** * Maaş analizi yapar */ export function analyzeSalaries(users, department = null) { let targetUsers = users; if (department) { targetUsers = users.filter(user => user.department === department); } const salaries = targetUsers.map(user => user.salary || 0).filter(salary => salary > 0); if (salaries.length === 0) { return { department: department || 'Tüm Şirket', employeeCount: 0, averageSalary: 0, minSalary: 0, maxSalary: 0, totalSalaryBudget: 0 }; } return { department: department || 'Tüm Şirket', employeeCount: salaries.length, averageSalary: salaries.reduce((sum, salary) => sum + salary, 0) / salaries.length, minSalary: Math.min(...salaries), maxSalary: Math.max(...salaries), totalSalaryBudget: salaries.reduce((sum, salary) => sum + salary, 0) }; }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yusuferenkt/mcp-database'

If you have feedback or need assistance with the MCP directory API, please join our Discord server