TimeChain/src/data/sqlite-electron-ipc.js
Jason Tudisco 11b15e1b9b Bug fixes to data layer.
Paste input now support images.
New static time stamp control.
Some more utility functions for converting data types.
New control for showing raw HTML data.
New control to show tags, to be expanded latter.
2022-02-07 04:42:42 -06:00

146 lines
3.8 KiB
JavaScript

const { ipcMain } = require('electron');
const {app} = require('electron');
//const config = app.getPath('userData');
const {TimeChainDataSqliteRecord,ConnectToDatabase, TimeChainDataSqliteFile, TimeChainDataSqliteTag, TimeChainDataSqliteTagLink} = require('./sqlite');
const appPath = app.getPath('userData');
const DBPath = appPath+"/timechain.db";
console.log(DBPath);
const DB = ConnectToDatabase(DBPath);
const DbRecord = new TimeChainDataSqliteRecord();
const DbFile = new TimeChainDataSqliteFile();
const DbTag = new TimeChainDataSqliteTag();
const DbTagLink = new TimeChainDataSqliteTagLink();
//const configDir = app.getPath('userData');
//const appPath = app.getPath('exe');
// ** Extra Data
ipcMain.handle('timechain-config-dir', (event,arg) => {
return false;
});
// ** RECORD **
console.log("Register timechain-record");
ipcMain.handle('timechain-record', async (event,arg) => {
let res = null;
switch(arg.func){
case 'add':
res = await DbRecord.add(arg.uuid, arg.timestamp, arg.content, arg.mime, arg.hash);
break;
case 'delete':
res = await DbRecord.delete(arg.uuid);
break;
case 'update':
res = await DbRecord.update(arg.uuid,arg.content,arg.mime,arg.hash);
break;
case 'find':
res = await DbRecord.find(arg.search,arg.sort,arg.limit,arg.offset);
break;
case 'get':
res = await DbRecord.get(arg.uuid);
break;
default:
res = new Error('unknown command');
}
return res;
})
// ** FILE **
ipcMain.handle('timechain-file', async (event, arg) => {
let res = null;
switch(arg.func){
case 'add':
res = await DbFile.add(arg.uuid_record,arg.uuid,arg.timestamp,arg.content,arg.mime,arg.hash);
break;
case 'update':
res = await DbFile.update(arg.uuid,arg.timestamp,arg.content,arg.mime,arg.hash);
break;
case 'get-record':
res = await DbFile.getByRecord(arg.uuid_record);
break;
case 'delete-record':
res = await DbFile.deleteRecord(arg.uuid_record);
break;
case 'get':
res = await DbFile.get(arg.uuid);
break;
case 'delete':
res = await DbFile.delete(arg.uuid);
break;
default:
res = new Error('Unknow a command');
}
return res;
});
// ** TAG **
ipcMain.handle('timechain-tag', async (event, arg) => {
let res = null;
switch(arg.func){
case 'add':
res = await DbTag.add(arg.tag);
break;
case 'delete':
res = await DbTag.delete(arg.tag);
break;
case 'has':
res = await DbTag.delete(arg.tag);
break;
default:
res = new Error('Command Unknown');
}
return res;
});
// TAG LINK
ipcMain.handle('timechain-taglink', async (event, arg) => {
let res = null;
switch(arg.func){
case 'add':
res = await DbTagLink.add(arg.uuid,arg.tag)
break;
case 'delete':
res = await DbTagLink.delete(arg.uuid,arg.tag);
break;
case 'delete-tag':
res = await DbTagLink.deleteTag(arg.tag);
break;
case 'delete-record':
res = await DbTagLink.deleteRecord(arg.uuid);
break;
case 'get-records':
res = await DbTagLink.getRecords(atg.tag);
break;
case 'get-tags':
res = await DbTagLink.getTags(atg.uuid);
break;
default:
res = Error("Commande not known");
}
return res;
});