Sidebar chart display

This commit is contained in:
Geomitron
2020-02-07 21:40:35 -05:00
parent a682fa52c6
commit 749a132b4a
15 changed files with 200 additions and 33 deletions

View 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};
`
}
}

View File

@@ -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
})
}

View File

@@ -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.

View File

@@ -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[]
}
}

View 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
}