0% found this document useful (0 votes)
3 views8 pages

Database IPC Handlers for Electron

Node Code data base

Uploaded by

herusslnugr2
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views8 pages

Database IPC Handlers for Electron

Node Code data base

Uploaded by

herusslnugr2
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

/**

* Database IPC Handlers


* Handles all database-related IPC communication between main and renderer
processes
*/

import { ipcMain, BrowserWindow } from 'electron'


import { PrismaClient } from '@prisma/client'

// Initialize Prisma client


const prisma = new PrismaClient()

/**
* Register database-related IPC handlers
*/
export function registerDatabaseHandlers(
ipcMainInstance: typeof ipcMain,
mainWindow: BrowserWindow | null
): void {
/**
* Get database connection status
*/
[Link]('get-db-status', async () => {
try {
await prisma.$connect()

return {
success: true,
data: {
connected: true,
database: 'SQLite',
url: [Link].DATABASE_URL || 'file:./[Link]'
}
}
} catch (error) {
[Link]('Database connection failed:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Get cost presets
*/
[Link]('get-cost-presets', async (event, params) => {
try {
const { limit = 50, offset = 0 } = params

const presets = await [Link]({


take: limit,
skip: offset,
orderBy: { createdAt: 'desc' }
})

const total = await [Link]()

return {
success: true,
data: {
items: presets,
total,
limit,
offset
}
}
} catch (error) {
[Link]('Failed to get cost presets:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Create cost preset
*/
[Link]('create-cost-preset', async (event, params) => {
try {
const { name, tonerCostC, tonerCostM, tonerCostY, tonerCostK, paperCost,
maintenanceCost, pageYield } = params

const preset = await [Link]({


data: {
name,
tonerCostC,
tonerCostM,
tonerCostY,
tonerCostK,
paperCost,
maintenanceCost,
pageYield,
createdAt: new Date(),
updatedAt: new Date()
}
})

return {
success: true,
data: preset
}
} catch (error) {
[Link]('Failed to create cost preset:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Update cost preset
*/
[Link]('update-cost-preset', async (event, params) => {
try {
const { id, name, tonerCostC, tonerCostM, tonerCostY, tonerCostK, paperCost,
maintenanceCost, pageYield } = params

const preset = await [Link]({


where: { id },
data: {
name,
tonerCostC,
tonerCostM,
tonerCostY,
tonerCostK,
paperCost,
maintenanceCost,
pageYield,
updatedAt: new Date()
}
})

return {
success: true,
data: preset
}
} catch (error) {
[Link]('Failed to update cost preset:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Delete cost preset
*/
[Link]('delete-cost-preset', async (event, id) => {
try {
await [Link]({
where: { id }
})

return {
success: true,
data: { deleted: true }
}
} catch (error) {
[Link]('Failed to delete cost preset:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Get analysis history
*/
[Link]('get-analysis-history-db', async (event, params) => {
try {
const { limit = 50, offset = 0, startDate, endDate } = params
const where: any = {}

if (startDate || endDate) {
[Link] = {}
if (startDate) [Link] = new Date(startDate)
if (endDate) [Link] = new Date(endDate)
}

const history = await [Link]({


where,
take: limit,
skip: offset,
orderBy: { createdAt: 'desc' }
})

const total = await [Link]({ where })

return {
success: true,
data: {
items: history,
total,
limit,
offset
}
}
} catch (error) {
[Link]('Failed to get analysis history:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Create analysis history entry
*/
[Link]('create-analysis-history', async (event, params) => {
try {
const {
fileName,
fileSize,
settings,
results,
processingTime
} = params

const history = await [Link]({


data: {
fileName,
fileSize,
settings: [Link](settings),
results: [Link](results),
processingTime,
createdAt: new Date()
}
})
return {
success: true,
data: history
}
} catch (error) {
[Link]('Failed to create analysis history:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Get analysis history by ID
*/
[Link]('get-analysis-history-by-id', async (event, id) => {
try {
const history = await [Link]({
where: { id }
})

if (!history) {
throw new Error('Analysis history not found')
}

return {
success: true,
data: history
}
} catch (error) {
[Link]('Failed to get analysis history by ID:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Delete analysis history
*/
[Link]('delete-analysis-history', async (event, id) => {
try {
await [Link]({
where: { id }
})

return {
success: true,
data: { deleted: true }
}
} catch (error) {
[Link]('Failed to delete analysis history:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Get application settings
*/
[Link]('get-app-settings', async () => {
try {
const settings = await [Link]()

if (!settings) {
// Create default settings
const defaultSettings = await [Link]({
data: {
theme: 'light',
language: 'en',
autoSave: true,
notifications: true,
createdAt: new Date(),
updatedAt: new Date()
}
})

return {
success: true,
data: defaultSettings
}
}

return {
success: true,
data: settings
}
} catch (error) {
[Link]('Failed to get app settings:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Update application settings
*/
[Link]('update-app-settings', async (event, params) => {
try {
const {
theme,
language,
autoSave,
notifications
} = params

const settings = await [Link]({


where: { id: 'default' },
update: {
theme,
language,
autoSave,
notifications,
updatedAt: new Date()
},
create: {
id: 'default',
theme,
language,
autoSave,
notifications,
createdAt: new Date(),
updatedAt: new Date()
}
})

return {
success: true,
data: settings
}
} catch (error) {
[Link]('Failed to update app settings:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Database cleanup
*/
[Link]('cleanup-database', async (event, params) => {
try {
const { olderThanDays = 30 } = params

const cutoffDate = new Date()


[Link]([Link]() - olderThanDays)

const deleted = await [Link]({


where: {
createdAt: {
lt: cutoffDate
}
}
})

return {
success: true,
data: {
deletedCount: [Link],
cutoffDate
}
}
} catch (error) {
[Link]('Failed to cleanup database:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})

/**
* Get database statistics
*/
[Link]('get-db-stats', async () => {
try {
const [
analysisCount,
presetCount,
recentAnalysis,
oldestAnalysis
] = await [Link]([
[Link](),
[Link](),
[Link]({
orderBy: { createdAt: 'desc' }
}),
[Link]({
orderBy: { createdAt: 'asc' }
})
])

return {
success: true,
data: {
analysisCount,
presetCount,
recentAnalysis,
oldestAnalysis
}
}
} catch (error) {
[Link]('Failed to get database stats:', error)
return {
success: false,
error: error instanceof Error ? [Link] : 'Unknown error occurred'
}
}
})
}

You might also like