mirror of
https://github.com/GiriNeko/YesPlayMusic.git
synced 2025-12-17 21:58:03 +00:00
feat: updates
This commit is contained in:
parent
ccebe0a67a
commit
9a52681687
37 changed files with 160 additions and 55332 deletions
|
|
@ -9,27 +9,32 @@ import netease from './routes/netease/netease'
|
|||
import appleMusic from './routes/r3play/appleMusic'
|
||||
import audio from './routes/r3play/audio'
|
||||
|
||||
const server = fastify({
|
||||
ignoreTrailingSlash: true,
|
||||
})
|
||||
|
||||
server.register(fastifyCookie)
|
||||
server.register(fastifyMultipart)
|
||||
if (isProd) {
|
||||
server.register(fastifyStatic, {
|
||||
root: path.join(__dirname, '../web'),
|
||||
const initAppServer = async () => {
|
||||
const server = fastify({
|
||||
ignoreTrailingSlash: true,
|
||||
})
|
||||
|
||||
server.register(fastifyCookie)
|
||||
server.register(fastifyMultipart)
|
||||
if (isProd) {
|
||||
server.register(fastifyStatic, {
|
||||
root: path.join(__dirname, '../web'),
|
||||
})
|
||||
}
|
||||
|
||||
server.register(netease)
|
||||
server.register(audio)
|
||||
server.register(appleMusic)
|
||||
|
||||
const port = Number(
|
||||
isProd
|
||||
? process.env.ELECTRON_WEB_SERVER_PORT || 42710
|
||||
: process.env.ELECTRON_DEV_NETEASE_API_PORT || 30001
|
||||
)
|
||||
await server.listen({ port })
|
||||
log.info(`[appServer] http server listening on port ${port}`)
|
||||
|
||||
return server
|
||||
}
|
||||
|
||||
server.register(netease)
|
||||
server.register(audio)
|
||||
server.register(appleMusic)
|
||||
|
||||
const port = Number(
|
||||
isProd
|
||||
? process.env.ELECTRON_WEB_SERVER_PORT || 42710
|
||||
: process.env.ELECTRON_DEV_NETEASE_API_PORT || 30001
|
||||
)
|
||||
server.listen({ port })
|
||||
|
||||
log.info(`[appServer] http server listening on port ${port}`)
|
||||
export default initAppServer
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ async function netease(fastify: FastifyInstance) {
|
|||
req: FastifyRequest<{ Querystring: { [key: string]: string } }>,
|
||||
reply: FastifyReply
|
||||
) => {
|
||||
// // Get track details from cache
|
||||
console.log(req.routerPath)
|
||||
// Get track details from cache
|
||||
if (name === CacheAPIs.Track) {
|
||||
const cacheData = await cache.get(name, req.query as any)
|
||||
if (cacheData) {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ import { createTaskbar, Thumbar } from './windowsTaskbar'
|
|||
import { createMenu } from './menu'
|
||||
import { isDev, isWindows, isLinux, isMac, appName } from './env'
|
||||
import store from './store'
|
||||
import './appServer/appServer'
|
||||
import initAppServer from './appServer/appServer'
|
||||
import { initDatabase } from './prisma'
|
||||
|
||||
class Main {
|
||||
win: BrowserWindow | null = null
|
||||
|
|
@ -32,8 +33,10 @@ class Main {
|
|||
process.exit(0)
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
app.whenReady().then(async () => {
|
||||
log.info('[index] App ready')
|
||||
await initDatabase()
|
||||
await initAppServer()
|
||||
this.createWindow()
|
||||
this.handleAppEvents()
|
||||
this.handleWindowEvents()
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
import { app } from 'electron'
|
||||
import path from 'path'
|
||||
import { PrismaClient } from '../prisma/client'
|
||||
import { isDev } from './env'
|
||||
import { isDev, isWindows } from './env'
|
||||
import log from './log'
|
||||
import { createFileIfNotExist, dirname, isFileExist } from './utils'
|
||||
import fs from 'fs'
|
||||
import { dialog } from 'electron'
|
||||
|
||||
export const dbPath = path.join(app.getPath('userData'), 'r3play.db')
|
||||
export const dbUrl = 'file://' + dbPath
|
||||
export const dbUrl = 'file:' + (isWindows ? '' : '//') + dbPath
|
||||
log.info('[prisma] dbUrl', dbUrl)
|
||||
|
||||
const extraResourcesPath = app.getAppPath().replace('app.asar', '') // impacted by extraResources setting in electron-builder.yml
|
||||
function getPlatformName(): string {
|
||||
|
|
@ -49,16 +51,9 @@ log.info('[prisma] dbUrl', dbUrl)
|
|||
// the dbUrl into the prisma client constructor in datasources.db.url
|
||||
process.env.DATABASE_URL = dbUrl
|
||||
|
||||
const isInitialized = isFileExist(dbPath)
|
||||
if (!isInitialized) {
|
||||
const from = isDev ? path.join(dirname, './prisma/r3play.db') : path.join(dirname, './r3play.db')
|
||||
log.info(`[prisma] copy r3play.db file from ${from} to ${dbPath}`)
|
||||
fs.copyFileSync(from, dbPath)
|
||||
log.info('[prisma] Database tables initialized.')
|
||||
} else {
|
||||
log.info('[prisma] Database tables already initialized before.')
|
||||
}
|
||||
createFileIfNotExist(dbPath)
|
||||
|
||||
// @ts-expect-error
|
||||
let prisma: PrismaClient = null
|
||||
try {
|
||||
prisma = new PrismaClient({
|
||||
|
|
@ -79,6 +74,29 @@ try {
|
|||
log.info('[prisma] prisma initialized')
|
||||
} catch (e) {
|
||||
log.error('[prisma] failed to init prisma', e)
|
||||
dialog.showErrorBox('Failed to init prisma', String(e))
|
||||
app.exit()
|
||||
}
|
||||
|
||||
export const initDatabase = async () => {
|
||||
try {
|
||||
const initSQLFile = fs
|
||||
.readFileSync(path.join(dirname, 'migrations/init.sql'), 'utf-8')
|
||||
.toString()
|
||||
const tables = initSQLFile.split(';')
|
||||
await Promise.all(
|
||||
tables.map(sql => {
|
||||
if (!sql.trim()) return
|
||||
return prisma.$executeRawUnsafe(sql.trim()).catch(() => {
|
||||
log.error('[prisma] failed to execute init sql >>> ', sql.trim())
|
||||
})
|
||||
})
|
||||
)
|
||||
} catch (e) {
|
||||
dialog.showErrorBox('Failed to init prisma database', String(e))
|
||||
app.exit()
|
||||
}
|
||||
log.info('[prisma] database initialized')
|
||||
}
|
||||
|
||||
export default prisma
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue