feature(queue): use postgres instead of redis for buffer
* wip(buffer): initial implementation of psql buffer * wip(buffer): add both profile and bots buffer
This commit is contained in:
committed by
Carl-Gerhard Lindesvärd
parent
2b5b8ce446
commit
71bf22af51
File diff suppressed because it is too large
Load Diff
@@ -184,6 +184,9 @@ async function createMock(file: string) {
|
||||
data: {
|
||||
organizationId: 'openpanel-dev',
|
||||
name: project.domain,
|
||||
cors: [project.domain],
|
||||
domain: project.domain,
|
||||
crossDomain: true,
|
||||
clients: {
|
||||
create: {
|
||||
organizationId: 'openpanel-dev',
|
||||
@@ -191,7 +194,6 @@ async function createMock(file: string) {
|
||||
secret: await hashPassword('secret'),
|
||||
id: project.clientId,
|
||||
type: ClientType.write,
|
||||
cors: project.domain,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -255,6 +257,10 @@ async function simultaneousRequests() {
|
||||
trackit(screenView);
|
||||
trackit(event);
|
||||
}
|
||||
const exit = async () => {
|
||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||
process.exit(1);
|
||||
};
|
||||
|
||||
async function main() {
|
||||
const [type, file = 'mock-basic.json'] = process.argv.slice(2);
|
||||
@@ -268,10 +274,10 @@ async function main() {
|
||||
break;
|
||||
case 'mock':
|
||||
await createMock(file);
|
||||
await exit();
|
||||
break;
|
||||
default:
|
||||
console.log('usage: jiti mock.ts send|mock|sim [file]');
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ export default function EventDetails({ id }: Props) {
|
||||
const event = query.data;
|
||||
|
||||
const common = [
|
||||
{
|
||||
name: 'Path',
|
||||
value: event.path,
|
||||
},
|
||||
{
|
||||
name: 'Origin',
|
||||
value: event.origin,
|
||||
|
||||
@@ -145,6 +145,7 @@ export async function createSessionEnd(
|
||||
...sessionStart,
|
||||
properties: {
|
||||
...sessionStart.properties,
|
||||
...(screenViews[0]?.properties ?? {}),
|
||||
__bounce: screenViews.length <= 1,
|
||||
},
|
||||
name: 'session_end',
|
||||
|
||||
@@ -2,6 +2,7 @@ import { getReferrerWithQuery, parseReferrer } from '@/utils/parse-referrer';
|
||||
import type { Job } from 'bullmq';
|
||||
import { omit } from 'ramda';
|
||||
|
||||
import { logger } from '@/utils/logger';
|
||||
import { createSessionEnd, getSessionEnd } from '@/utils/session-handler';
|
||||
import { isSameDomain, parsePath } from '@openpanel/common';
|
||||
import { parseUserAgent } from '@openpanel/common/server';
|
||||
@@ -20,7 +21,9 @@ const merge = <A, B>(a: Partial<A>, b: Partial<B>): A & B =>
|
||||
R.mergeDeepRight(a, R.reject(R.anyPass([R.isEmpty, R.isNil]))(b)) as A & B;
|
||||
|
||||
async function createEventAndNotify(payload: IServiceCreateEventPayload) {
|
||||
await checkNotificationRulesForEvent(payload);
|
||||
await checkNotificationRulesForEvent(payload).catch((e) => {
|
||||
logger.error('Error checking notification rules', { error: e });
|
||||
});
|
||||
return createEvent(payload);
|
||||
}
|
||||
|
||||
@@ -121,7 +124,7 @@ export async function incomingEvent(job: Job<EventsQueuePayloadIncomingEvent>) {
|
||||
referrer: sessionEnd.payload?.referrer,
|
||||
referrerName: sessionEnd.payload?.referrerName,
|
||||
referrerType: sessionEnd.payload?.referrerType,
|
||||
}) as IServiceCreateEventPayload
|
||||
}) as IServiceCreateEventPayload;
|
||||
|
||||
if (sessionEnd.notFound) {
|
||||
await createSessionEnd({ payload });
|
||||
|
||||
Reference in New Issue
Block a user