mirror of
https://github.com/Myxelium/Bridge-Multi.git
synced 2026-04-11 14:19:38 +00:00
Sidebar chart display
This commit is contained in:
22
src/electron/ipc/SongDetailsHandler.ipc.ts
Normal file
22
src/electron/ipc/SongDetailsHandler.ipc.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { IPCHandler } from '../shared/IPCHandler'
|
||||
import Database from '../shared/Database'
|
||||
import { VersionResult } from '../shared/interfaces/songDetails.interface'
|
||||
|
||||
export default class SongDetailsHandler implements IPCHandler<'song-details'> {
|
||||
event: 'song-details' = 'song-details'
|
||||
// TODO: add method documentation
|
||||
|
||||
async handler(songID: number) {
|
||||
const db = await Database.getInstance()
|
||||
|
||||
return db.sendQuery(this.getVersionQuery(songID)) as Promise<VersionResult[]>
|
||||
}
|
||||
|
||||
private getVersionQuery(songID: number) {
|
||||
return `
|
||||
SELECT *
|
||||
FROM VersionMetaFull
|
||||
WHERE songID = ${songID};
|
||||
`
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import * as url from 'url'
|
||||
|
||||
// IPC Handlers
|
||||
import { getIPCHandlers } from './shared/IPCHandler'
|
||||
import Database from './shared/Database'
|
||||
|
||||
let mainWindow: BrowserWindow
|
||||
const args = process.argv.slice(1)
|
||||
@@ -70,6 +71,7 @@ function createBridgeWindow() {
|
||||
}
|
||||
|
||||
mainWindow.on('closed', () => {
|
||||
Database.closeConnection()
|
||||
mainWindow = null // Dereference mainWindow when the window is closed
|
||||
})
|
||||
}
|
||||
|
||||
@@ -49,6 +49,12 @@ export default class Database {
|
||||
})
|
||||
}
|
||||
|
||||
static closeConnection() {
|
||||
if (this.database != undefined) {
|
||||
this.database.conn.destroy()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends <query> to the database.
|
||||
* @param query The query string to be sent.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import SearchHandler from '../ipc/SearchHandler.ipc'
|
||||
import { SongSearch, SongResult } from './interfaces/search.interface'
|
||||
import { VersionResult } from './interfaces/songDetails.interface'
|
||||
import SongDetailsHandler from '../ipc/SongDetailsHandler.ipc'
|
||||
|
||||
/**
|
||||
* To add a new IPC listener:
|
||||
@@ -11,7 +13,8 @@ import { SongSearch, SongResult } from './interfaces/search.interface'
|
||||
|
||||
export function getIPCHandlers(): IPCHandler<keyof IPCEvents>[] {
|
||||
return [
|
||||
new SearchHandler()
|
||||
new SearchHandler(),
|
||||
new SongDetailsHandler()
|
||||
]
|
||||
}
|
||||
|
||||
@@ -20,9 +23,9 @@ export type IPCEvents = {
|
||||
input: SongSearch
|
||||
output: SongResult[]
|
||||
}
|
||||
['test-event-B']: {
|
||||
input: number
|
||||
output: number
|
||||
['song-details']: {
|
||||
input: SongResult['id']
|
||||
output: VersionResult[]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
26
src/electron/shared/interfaces/songDetails.interface.ts
Normal file
26
src/electron/shared/interfaces/songDetails.interface.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
export interface VersionResult {
|
||||
versionID: number
|
||||
chartID: number
|
||||
songID: number
|
||||
latestVersionID: number
|
||||
latestSetlistVersionID: number
|
||||
icon: string
|
||||
name: string
|
||||
avTagName: string
|
||||
charters: string
|
||||
charterIDs: string
|
||||
tags: string | null
|
||||
downloadLink: string
|
||||
lastModified: number
|
||||
song_length: number
|
||||
diff_band: number
|
||||
diff_guitar: number
|
||||
diff_rhythm: number
|
||||
diff_bass: number
|
||||
diff_drums: number
|
||||
diff_keys: number
|
||||
diff_guitarghl: number
|
||||
diff_bassghl: number
|
||||
songDataIncorrect: boolean
|
||||
isUnusualAvTagName: boolean
|
||||
}
|
||||
Reference in New Issue
Block a user