refactor: change create feed event to local
This commit is contained in:
parent
b6bca6c250
commit
ab179e9af6
18
src/server/model/feed/event.ts
Normal file
18
src/server/model/feed/event.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import { Prisma } from '@prisma/client';
|
||||||
|
import { subscribeEventBus } from '../../ws/shared';
|
||||||
|
import { prisma } from '../_client';
|
||||||
|
import { serializeJSON } from '../../utils/json';
|
||||||
|
|
||||||
|
export async function createFeedEvent(
|
||||||
|
workspaceId: string,
|
||||||
|
eventData: Prisma.FeedEventCreateArgs['data']
|
||||||
|
) {
|
||||||
|
const event = await prisma.feedEvent.create({
|
||||||
|
data: eventData,
|
||||||
|
});
|
||||||
|
subscribeEventBus.emit(
|
||||||
|
'onReceiveFeedEvent',
|
||||||
|
workspaceId,
|
||||||
|
serializeJSON(event)
|
||||||
|
);
|
||||||
|
}
|
@ -2,10 +2,9 @@ import { z } from 'zod';
|
|||||||
import { OpenApiMetaInfo, publicProcedure, router } from '../../trpc';
|
import { OpenApiMetaInfo, publicProcedure, router } from '../../trpc';
|
||||||
import { prisma } from '../../../model/_client';
|
import { prisma } from '../../../model/_client';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { subscribeEventBus } from '../../../ws/shared';
|
|
||||||
import { OpenApiMeta } from 'trpc-openapi';
|
import { OpenApiMeta } from 'trpc-openapi';
|
||||||
import { OPENAPI_TAG } from '../../../utils/const';
|
import { OPENAPI_TAG } from '../../../utils/const';
|
||||||
import { serializeJSON } from '../../../utils/json';
|
import { createFeedEvent } from '../../../model/feed/event';
|
||||||
|
|
||||||
export const feedIntegrationRouter = router({
|
export const feedIntegrationRouter = router({
|
||||||
github: publicProcedure
|
github: publicProcedure
|
||||||
@ -55,24 +54,18 @@ export const feedIntegrationRouter = router({
|
|||||||
const senderId = String(_.get(data, 'sender.id'));
|
const senderId = String(_.get(data, 'sender.id'));
|
||||||
const senderName = String(_.get(data, 'sender.login'));
|
const senderName = String(_.get(data, 'sender.login'));
|
||||||
const url = String(_.get(data, 'compare'));
|
const url = String(_.get(data, 'compare'));
|
||||||
const event = await prisma.feedEvent.create({
|
|
||||||
data: {
|
await createFeedEvent(workspaceId, {
|
||||||
channelId: channelId,
|
channelId: channelId,
|
||||||
eventName: eventType,
|
eventName: eventType,
|
||||||
eventContent: `[${pusherName}](mailto:${pusherEmail}) push commit **${commits}** to **${ref}** in [${fullName}](${repoUrl})`,
|
eventContent: `[${pusherName}](mailto:${pusherEmail}) push commit **${commits}** to **${ref}** in [${fullName}](${repoUrl})`,
|
||||||
tags: [],
|
tags: [],
|
||||||
source: 'github',
|
source: 'github',
|
||||||
senderId,
|
senderId,
|
||||||
senderName,
|
senderName,
|
||||||
important: false,
|
important: false,
|
||||||
url,
|
url,
|
||||||
},
|
|
||||||
});
|
});
|
||||||
subscribeEventBus.emit(
|
|
||||||
'onReceiveFeedEvent',
|
|
||||||
workspaceId,
|
|
||||||
serializeJSON(event)
|
|
||||||
);
|
|
||||||
|
|
||||||
return 'ok';
|
return 'ok';
|
||||||
} else if (eventType === 'star') {
|
} else if (eventType === 'star') {
|
||||||
@ -83,24 +76,18 @@ export const feedIntegrationRouter = router({
|
|||||||
const senderName = String(_.get(data, 'sender.login'));
|
const senderName = String(_.get(data, 'sender.login'));
|
||||||
const senderUrl = String(_.get(data, 'sender.html_url'));
|
const senderUrl = String(_.get(data, 'sender.html_url'));
|
||||||
const url = String(_.get(data, 'compare'));
|
const url = String(_.get(data, 'compare'));
|
||||||
const event = await prisma.feedEvent.create({
|
|
||||||
data: {
|
await createFeedEvent(workspaceId, {
|
||||||
channelId: channelId,
|
channelId: channelId,
|
||||||
eventName: eventType,
|
eventName: eventType,
|
||||||
eventContent: `[${senderName}](${senderUrl}) star repo [${fullName}](${repoUrl}), now is ${starCount}.`,
|
eventContent: `[${senderName}](${senderUrl}) star repo [${fullName}](${repoUrl}), now is ${starCount}.`,
|
||||||
tags: [],
|
tags: [],
|
||||||
source: 'github',
|
source: 'github',
|
||||||
senderId,
|
senderId,
|
||||||
senderName,
|
senderName,
|
||||||
important: false,
|
important: false,
|
||||||
url,
|
url,
|
||||||
},
|
|
||||||
});
|
});
|
||||||
subscribeEventBus.emit(
|
|
||||||
'onReceiveFeedEvent',
|
|
||||||
workspaceId,
|
|
||||||
serializeJSON(event)
|
|
||||||
);
|
|
||||||
|
|
||||||
return 'ok';
|
return 'ok';
|
||||||
} else if (eventType === 'issues') {
|
} else if (eventType === 'issues') {
|
||||||
@ -124,24 +111,17 @@ export const feedIntegrationRouter = router({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (eventContent) {
|
if (eventContent) {
|
||||||
const event = await prisma.feedEvent.create({
|
await createFeedEvent(workspaceId, {
|
||||||
data: {
|
channelId: channelId,
|
||||||
channelId: channelId,
|
eventName: eventName,
|
||||||
eventName: eventName,
|
eventContent: `${senderName} star repo [${fullName}], now is ${starCount}.`,
|
||||||
eventContent: `${senderName} star repo [${fullName}], now is ${starCount}.`,
|
tags: [],
|
||||||
tags: [],
|
source: 'github',
|
||||||
source: 'github',
|
senderId,
|
||||||
senderId,
|
senderName,
|
||||||
senderName,
|
important: false,
|
||||||
important: false,
|
url,
|
||||||
url,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
subscribeEventBus.emit(
|
|
||||||
'onReceiveFeedEvent',
|
|
||||||
workspaceId,
|
|
||||||
serializeJSON(event)
|
|
||||||
);
|
|
||||||
|
|
||||||
return 'ok';
|
return 'ok';
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user