mirror of
https://fast.feibisi.com/https://github.com/parcelvoy/platform.git
synced 2025-09-04 12:56:14 +08:00
fix: user events, push count, error handling
This commit is contained in:
parent
02c452fd22
commit
2ef5d50953
8 changed files with 27 additions and 20 deletions
|
@ -27,7 +27,7 @@ export default class App {
|
|||
|
||||
static async init<T extends typeof App>(this: T, env: Env): Promise<InstanceType<T>> {
|
||||
|
||||
logger.info('parcelvoy initializing')
|
||||
logger.info('parcelvoy:initializing')
|
||||
|
||||
// Boot up error tracking
|
||||
const error = await loadError(env.error)
|
||||
|
@ -130,17 +130,25 @@ export default class App {
|
|||
delete this.#registered[key]
|
||||
}
|
||||
|
||||
async forceClose(signal: string, reason: string, error?: Error) {
|
||||
logger.error({ signal, error }, reason)
|
||||
await this.close()
|
||||
process.exit()
|
||||
}
|
||||
|
||||
unhandledErrorListener() {
|
||||
['exit', 'SIGINT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM'].forEach((eventType) => {
|
||||
['exit', 'beforeExit', 'SIGINT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM'].forEach((eventType) => {
|
||||
process.on(eventType, async () => {
|
||||
await this.close()
|
||||
process.exit()
|
||||
await this.forceClose(eventType, `received exit signal: ${eventType}`)
|
||||
})
|
||||
})
|
||||
|
||||
process.on('uncaughtException', async (error) => {
|
||||
logger.error(error, 'uncaught error')
|
||||
await this.close()
|
||||
process.exit()
|
||||
await this.forceClose('uncaughtException', 'uncaught error', error)
|
||||
})
|
||||
|
||||
process.on('unhandledRejection', async (error, promise) => {
|
||||
await this.forceClose('unhandledRejection', `uncaught error: ${promise}, reason: ${error}`)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,6 +160,7 @@ export default class LocalPushProvider extends PushProvider {
|
|||
success: true,
|
||||
response: response[0].message[0].messageId,
|
||||
invalidTokens,
|
||||
count: tokens.length - invalidTokens.length,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ export default class LoggerPushProvider extends PushProvider {
|
|||
success: true,
|
||||
response: '',
|
||||
invalidTokens: [],
|
||||
count: push.tokens.length,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,4 +10,5 @@ export interface PushResponse {
|
|||
success: boolean
|
||||
response?: string
|
||||
invalidTokens: string[]
|
||||
count: number
|
||||
}
|
||||
|
|
|
@ -29,8 +29,9 @@ export default class PushChannel {
|
|||
return {
|
||||
push,
|
||||
success: false,
|
||||
invalidTokens: [],
|
||||
response: 'No active devices with push enabled found.',
|
||||
invalidTokens: [],
|
||||
count: 0,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,15 +44,10 @@ export const createEvent = async (
|
|||
}
|
||||
|
||||
export const getUserEvents = async (id: number, params: PageParams, projectId: number) => {
|
||||
const searchClause = params.q ? ` AND \`name\` LIKE '%${params.q}%' ` : ''
|
||||
return await UserEvent.clickhouse().search(
|
||||
`
|
||||
SELECT * FROM user_events
|
||||
WHERE project_id = ${projectId}
|
||||
AND user_id = ${id}
|
||||
${searchClause}
|
||||
ORDER BY created_at DESC
|
||||
`,
|
||||
params,
|
||||
return await UserEvent.search(
|
||||
{ ...params, fields: ['name'] },
|
||||
b => b.where('project_id', projectId)
|
||||
.where('user_id', id)
|
||||
.orderBy('id', 'desc'),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -236,7 +236,7 @@ export interface Device {
|
|||
}
|
||||
|
||||
export interface UserEvent {
|
||||
uuid: string
|
||||
id: number
|
||||
name: string
|
||||
data: Record<string, any>
|
||||
created_at: string
|
||||
|
|
|
@ -32,7 +32,7 @@ export default function UserDetailEvents() {
|
|||
params={params}
|
||||
setParams={setParams}
|
||||
title={t('events')}
|
||||
itemKey={({ item }) => item.uuid}
|
||||
itemKey={({ item }) => item.id}
|
||||
columns={[
|
||||
{ key: 'name', title: t('name') },
|
||||
{ key: 'created_at', title: t('created_at') },
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue