mirror of
https://github.com/Ride-The-Lightning/RTL.git
synced 2026-08-13 12:33:07 +02:00
Updated channels response columns and migrated pagesettings
This commit is contained in:
parent
168aa3bc90
commit
36e1d39170
21 changed files with 195 additions and 80 deletions
|
|
@ -19,14 +19,12 @@ export const simplifyAllChannels = (selNode: CommonSelectedNode, channels) => {
|
|||
nodeId: channel.nodeId ? channel.nodeId : '',
|
||||
channelId: channel.channelId ? channel.channelId : '',
|
||||
state: channel.state ? channel.state : '',
|
||||
announceChannel: channel.data && channel.data.commitments && channel.data.commitments.channelFlags && channel.data.commitments.channelFlags.announceChannel ? channel.data.commitments.channelFlags.announceChannel : false,
|
||||
toLocal: (channel.data.commitments.localCommit.spec.toLocal) ? Math.round(+channel.data.commitments.localCommit.spec.toLocal / 1000) : 0,
|
||||
toRemote: (channel.data.commitments.localCommit.spec.toRemote) ? Math.round(+channel.data.commitments.localCommit.spec.toRemote / 1000) : 0,
|
||||
announceChannel: channel.data && channel.data.commitments && channel.data.commitments.params && channel.data.commitments.params.channelFlags && channel.data.commitments.params.channelFlags.announceChannel ? channel.data.commitments.params.channelFlags.announceChannel : false,
|
||||
toLocal: (channel.data.commitments.active[0].localCommit.spec.toLocal) ? Math.round(+channel.data.commitments.active[0].localCommit.spec.toLocal / 1000) : 0,
|
||||
toRemote: (channel.data.commitments.active[0].localCommit.spec.toRemote) ? Math.round(+channel.data.commitments.active[0].localCommit.spec.toRemote / 1000) : 0,
|
||||
shortChannelId: channel.data && channel.data.channelUpdate && channel.data.channelUpdate.shortChannelId ? channel.data.channelUpdate.shortChannelId : '',
|
||||
isFunder: channel.data && channel.data.commitments && channel.data.commitments.localParams && channel.data.commitments.localParams.isFunder ? channel.data.commitments.localParams.isFunder : false,
|
||||
buried: channel.data && channel.data.buried ? channel.data.buried : false,
|
||||
isInitiator: channel.data && channel.data.commitments && channel.data.commitments.params && channel.data.commitments.params.localParams && channel.data.commitments.params.localParams.isInitiator ? channel.data.commitments.params.localParams.isInitiator : false,
|
||||
feeBaseMsat: channel.data && channel.data.channelUpdate && channel.data.channelUpdate.feeBaseMsat ? channel.data.channelUpdate.feeBaseMsat : 0,
|
||||
feeRatePerKw: (channel.data.commitments.localCommit.spec.feeratePerKw) ? channel.data.commitments.localCommit.spec.feeratePerKw : 0,
|
||||
feeProportionalMillionths: channel.data && channel.data.channelUpdate && channel.data.channelUpdate.feeProportionalMillionths ? channel.data.channelUpdate.feeProportionalMillionths : 0,
|
||||
alias: ''
|
||||
});
|
||||
|
|
@ -155,8 +153,6 @@ export const closeChannel = (req, res, next) => {
|
|||
});
|
||||
};
|
||||
|
||||
// options.form = { sourceNodeId: req.params.source, targetNodeId: req.params.target, amountMsat: req.params.amount, ignoreNodeIds: req.params.ignore };
|
||||
|
||||
export const circularRebalance = (req, res, next) => {
|
||||
const crInvDescription = 'Circular rebalancing invoice for ' + (req.body.amountMsat / 1000) + ' Sats';
|
||||
options = common.getOptions(req);
|
||||
|
|
|
|||
|
|
@ -154,3 +154,26 @@ export const CollectionFieldsEnum = { ...OfferFieldsEnum, ...PageSettingsFieldsE
|
|||
export const LNDCollection = [CollectionsEnum.PAGE_SETTINGS];
|
||||
export const ECLCollection = [CollectionsEnum.PAGE_SETTINGS];
|
||||
export const CLNCollection = [CollectionsEnum.PAGE_SETTINGS, CollectionsEnum.OFFERS];
|
||||
|
||||
export const ECL_UPDATED_DB = [
|
||||
{
|
||||
pageId: 'peers_channels',
|
||||
tables: [
|
||||
{
|
||||
tableId: 'open_channels',
|
||||
removed: ['buried', 'feeRatePerKw'],
|
||||
renamed: ['isFunder:isInitiator']
|
||||
},
|
||||
{
|
||||
tableId: 'pending_channels',
|
||||
removed: ['buried', 'feeRatePerKw'],
|
||||
renamed: ['isFunder:isInitiator']
|
||||
},
|
||||
{
|
||||
tableId: 'inactive_channels',
|
||||
removed: ['buried', 'feeRatePerKw'],
|
||||
renamed: ['isFunder:isInitiator']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import sharedRoutes from '../routes/shared/index.js';
|
|||
import lndRoutes from '../routes/lnd/index.js';
|
||||
import clnRoutes from '../routes/cln/index.js';
|
||||
import eclRoutes from '../routes/eclair/index.js';
|
||||
import { Database, DatabaseService } from './database.js';
|
||||
import { Common, CommonService } from './common.js';
|
||||
import { Logger, LoggerService } from './logger.js';
|
||||
import { CLWSClient, CLWebSocketClient } from '../controllers/cln/webSocketClient.js';
|
||||
|
|
@ -27,6 +28,7 @@ export class ExpressApplication {
|
|||
public eclWsClient: ECLWebSocketClient = ECLWSClient;
|
||||
public clWsClient: CLWebSocketClient = CLWSClient;
|
||||
public lndWsClient: LNDWebSocketClient = LNDWSClient;
|
||||
public databaseService: DatabaseService = Database;
|
||||
public directoryName = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
constructor() {
|
||||
|
|
@ -40,6 +42,7 @@ export class ExpressApplication {
|
|||
this.setCORS();
|
||||
this.setCSRF();
|
||||
this.setApplicationRoutes();
|
||||
this.databaseService.migrateDatabase();
|
||||
}
|
||||
|
||||
public getApp = () => this.app;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import * as fs from 'fs';
|
|||
import { join, sep } from 'path';
|
||||
import { Common, CommonService } from '../utils/common.js';
|
||||
import { Logger, LoggerService } from '../utils/logger.js';
|
||||
import { Collections, CollectionsEnum, validateDocument, LNDCollection, ECLCollection, CLNCollection } from '../models/database.model.js';
|
||||
import { Collections, CollectionsEnum, validateDocument, LNDCollection, ECLCollection, CLNCollection, ECL_UPDATED_DB } from '../models/database.model.js';
|
||||
import { CommonSelectedNode } from '../models/config.model.js';
|
||||
|
||||
export class DatabaseService {
|
||||
|
|
@ -14,6 +14,58 @@ export class DatabaseService {
|
|||
|
||||
constructor() { }
|
||||
|
||||
migrateDatabase() {
|
||||
this.common.nodes?.map((node: any) => {
|
||||
if (node.ln_implementation === 'ECL') {
|
||||
this.nodeDatabase[node.index] = { adapter: null, data: {} };
|
||||
this.nodeDatabase[node.index].adapter = new DatabaseAdapter(this.dbDirectory, node);
|
||||
this.fetchNodeData(node);
|
||||
if (this.nodeDatabase[node.index].data.PageSettings) {
|
||||
try {
|
||||
const currPageSettings = JSON.parse(JSON.stringify(this.nodeDatabase[node.index].data.PageSettings));
|
||||
ECL_UPDATED_DB.forEach((updatePage) => {
|
||||
const foundPageDB = this.nodeDatabase[node.index].data.PageSettings.find((currPage) => currPage.pageId === updatePage.pageId);
|
||||
if (foundPageDB) {
|
||||
updatePage.tables.forEach((updateTable) => {
|
||||
const foundTableDB = foundPageDB.tables.find((currTable) => currTable.tableId === updateTable.tableId);
|
||||
if (foundTableDB) {
|
||||
updateTable.removed.forEach((colToBeRemoved) => {
|
||||
const foundIndex = foundTableDB.columnSelection.findIndex((col) => col === colToBeRemoved);
|
||||
const foundIndexSM = foundTableDB.columnSelectionSM.findIndex((col) => col === colToBeRemoved);
|
||||
if (foundIndex >= 0) {
|
||||
foundTableDB.columnSelection?.splice(foundIndex, 1);
|
||||
}
|
||||
if (foundIndexSM >= 0) {
|
||||
foundTableDB.columnSelectionSM?.splice(foundIndexSM, 1);
|
||||
}
|
||||
});
|
||||
updateTable.renamed.forEach((colToBeRenamed) => {
|
||||
const [oldName, newName] = colToBeRenamed.split(':');
|
||||
const foundIndex = foundTableDB.columnSelection.findIndex((col) => col === oldName);
|
||||
const foundIndexSM = foundTableDB.columnSelectionSM.findIndex((col) => col === oldName);
|
||||
if (foundIndex >= 0) {
|
||||
foundTableDB.columnSelection?.splice(foundIndex, 1, newName);
|
||||
}
|
||||
if (foundIndexSM >= 0) {
|
||||
foundTableDB.columnSelectionSM?.splice(foundIndexSM, 1, newName);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
if (currPageSettings !== this.nodeDatabase[node.index].data.PageSettings) {
|
||||
this.saveDatabase(node, CollectionsEnum.PAGE_SETTINGS);
|
||||
}
|
||||
} catch (err) {
|
||||
this.logger.log({ selectedNode: node, level: 'ERROR', fileName: 'Database', msg: 'Database Migration Error', error: err });
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
loadDatabase(session: any) {
|
||||
const { id, selectedNode } = session;
|
||||
try {
|
||||
|
|
@ -198,7 +250,7 @@ export class DatabaseAdapter {
|
|||
private dbFilePath = '';
|
||||
private userSessions = [];
|
||||
|
||||
constructor(public dbDirectoryPath: string, private selNode: CommonSelectedNode = null, private id: string = '') {
|
||||
constructor(public dbDirectoryPath: string, public selNode: CommonSelectedNode = null, public id: string = '') {
|
||||
this.dbFilePath = dbDirectoryPath + sep + 'node-' + selNode.index;
|
||||
// For backward compatibility Start
|
||||
const oldFilePath = dbDirectoryPath + sep + 'rtldb-node-' + selNode.index + '.json';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue