@eventualize/relational-storage-adapter 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/EvDbPrismaStorageAdapter.d.ts +92 -0
  2. package/dist/EvDbPrismaStorageAdapter.js +201 -0
  3. package/dist/EvDbPrismaStorageAdapter.js.map +1 -0
  4. package/dist/EvDbPrismaStorageAdmin.d.ts +10 -0
  5. package/dist/EvDbPrismaStorageAdmin.js +25 -0
  6. package/dist/EvDbPrismaStorageAdmin.js.map +1 -0
  7. package/dist/EvDbRelationalStorageAdapterQueries.d.ts +57 -0
  8. package/dist/EvDbRelationalStorageAdapterQueries.js +103 -0
  9. package/dist/EvDbRelationalStorageAdapterQueries.js.map +1 -0
  10. package/dist/generated/prisma/browser.d.ts +19 -0
  11. package/dist/generated/prisma/browser.js +18 -0
  12. package/dist/generated/prisma/browser.js.map +1 -0
  13. package/dist/generated/prisma/client.d.ts +36 -0
  14. package/dist/generated/prisma/client.js +33 -0
  15. package/dist/generated/prisma/client.js.map +1 -0
  16. package/dist/generated/prisma/commonInputTypes.d.ts +378 -0
  17. package/dist/generated/prisma/commonInputTypes.js +11 -0
  18. package/dist/generated/prisma/commonInputTypes.js.map +1 -0
  19. package/dist/generated/prisma/enums.d.ts +1 -0
  20. package/dist/generated/prisma/enums.js +11 -0
  21. package/dist/generated/prisma/enums.js.map +1 -0
  22. package/dist/generated/prisma/internal/class.d.ts +148 -0
  23. package/dist/generated/prisma/internal/class.js +41 -0
  24. package/dist/generated/prisma/internal/class.js.map +1 -0
  25. package/dist/generated/prisma/internal/prismaNamespace.d.ts +759 -0
  26. package/dist/generated/prisma/internal/prismaNamespace.js +144 -0
  27. package/dist/generated/prisma/internal/prismaNamespace.js.map +1 -0
  28. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +109 -0
  29. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +115 -0
  30. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js.map +1 -0
  31. package/dist/generated/prisma/models/events.d.ts +1178 -0
  32. package/dist/generated/prisma/models/events.js +2 -0
  33. package/dist/generated/prisma/models/events.js.map +1 -0
  34. package/dist/generated/prisma/models/outbox.d.ts +1261 -0
  35. package/dist/generated/prisma/models/outbox.js +2 -0
  36. package/dist/generated/prisma/models/outbox.js.map +1 -0
  37. package/dist/generated/prisma/models/snapshot.d.ts +1088 -0
  38. package/dist/generated/prisma/models/snapshot.js +2 -0
  39. package/dist/generated/prisma/models/snapshot.js.map +1 -0
  40. package/dist/generated/prisma/models.d.ts +4 -0
  41. package/dist/generated/prisma/models.js +2 -0
  42. package/dist/generated/prisma/models.js.map +1 -0
  43. package/package.json +29 -0
  44. package/prisma.config.d.ts +3 -0
  45. package/prisma.config.js +15 -0
  46. package/prisma.config.js.map +1 -0
  47. package/prisma.config.ts +16 -0
  48. package/src/EvDbPrismaStorageAdapter.ts +305 -0
  49. package/src/EvDbPrismaStorageAdmin.ts +27 -0
  50. package/src/EvDbRelationalStorageAdapterQueries.ts +118 -0
  51. package/src/generated/prisma/browser.ts +34 -0
  52. package/src/generated/prisma/client.ts +56 -0
  53. package/src/generated/prisma/commonInputTypes.ts +459 -0
  54. package/src/generated/prisma/enums.ts +15 -0
  55. package/src/generated/prisma/internal/class.ts +210 -0
  56. package/src/generated/prisma/internal/prismaNamespace.ts +1029 -0
  57. package/src/generated/prisma/internal/prismaNamespaceBrowser.ts +169 -0
  58. package/src/generated/prisma/models/events.ts +1339 -0
  59. package/src/generated/prisma/models/outbox.ts +1420 -0
  60. package/src/generated/prisma/models/snapshot.ts +1246 -0
  61. package/src/generated/prisma/models.ts +14 -0
  62. package/tsconfig.json +21 -0
@@ -0,0 +1,92 @@
1
+ import { IEvDbPayloadData } from '@eventualize/types/IEvDbEventPayload';
2
+ import IEvDbEventMetadata from '@eventualize/types/IEvDbEventMetadata';
3
+ import EvDbStreamCursor from '@eventualize/types/EvDbStreamCursor';
4
+ import EvDbMessage from '@eventualize/types/EvDbMessage';
5
+ import IEvDbStorageSnapshotAdapter from '@eventualize/types/IEvDbStorageSnapshotAdapter';
6
+ import IEvDbStorageStreamAdapter from '@eventualize/types/IEvDbStorageStreamAdapter';
7
+ import EvDbStreamAddress from '@eventualize/types/EvDbStreamAddress';
8
+ import EvDbViewAddress from '@eventualize/types/EvDbViewAddress';
9
+ import { EvDbStoredSnapshotResultRaw } from '@eventualize/types/EvDbStoredSnapshotResult';
10
+ import { EvDbStoredSnapshotData } from '@eventualize/types/EvDbStoredSnapshotData';
11
+ import EvDbEvent from '@eventualize/types/EvDbEvent';
12
+ import StreamStoreAffected from '@eventualize/types/StreamStoreAffected';
13
+ import EvDbContinuousFetchOptions from '@eventualize/types/EvDbContinuousFetchOptions';
14
+ import EvDbMessageFilter from '@eventualize/types/EvDbMessageFilter';
15
+ import { EvDbShardName } from '@eventualize/types/primitiveTypes';
16
+ export interface EvDbEventRecord extends IEvDbEventMetadata {
17
+ id: string;
18
+ payload: IEvDbPayloadData;
19
+ }
20
+ export interface EvDbSnapshotRecord {
21
+ id: string;
22
+ streamType: string;
23
+ streamId: string;
24
+ viewName: string;
25
+ offset: bigint;
26
+ state: IEvDbPayloadData;
27
+ }
28
+ export interface IEvDbOutboxTransformer {
29
+ transform(message: EvDbMessage): EvDbMessage;
30
+ }
31
+ export interface EvDbStorageContext {
32
+ schema?: string;
33
+ shortId: string;
34
+ id: string;
35
+ }
36
+ /**
37
+ * Prisma-based storage adapter for EvDb
38
+ * Replaces SQL Server-specific adapter with database-agnostic Prisma implementation
39
+ */
40
+ export declare class EvDbPrismaStorageAdapter implements IEvDbStorageSnapshotAdapter, IEvDbStorageStreamAdapter {
41
+ private readonly prisma;
42
+ private readonly queryProvider;
43
+ protected readonly databaseType: string;
44
+ constructor(prisma: any);
45
+ getFromOutbox(filter: EvDbMessageFilter, options?: EvDbContinuousFetchOptions | null): Promise<AsyncIterable<EvDbMessage>>;
46
+ getFromOutboxAsync(shard: EvDbShardName, filter: EvDbMessageFilter, options?: EvDbContinuousFetchOptions | null, cancellation?: AbortSignal): AsyncIterable<EvDbMessage>;
47
+ getRecordsFromOutboxAsync(filter: EvDbMessageFilter, options?: EvDbContinuousFetchOptions | null, cancellation?: AbortSignal): AsyncIterable<EvDbMessage>;
48
+ getRecordsFromOutboxAsync(shard: EvDbShardName, filter: EvDbMessageFilter, options?: EvDbContinuousFetchOptions | null, cancellation?: AbortSignal): AsyncIterable<EvDbMessage>;
49
+ subscribeToMessageAsync(handler: (message: EvDbMessage) => Promise<void>, filter: EvDbMessageFilter, options?: EvDbContinuousFetchOptions | null): Promise<void>;
50
+ subscribeToMessageAsync(handler: (message: EvDbMessage) => Promise<void>, shard: EvDbShardName, filter: EvDbMessageFilter, options?: EvDbContinuousFetchOptions | null): Promise<void>;
51
+ /**
52
+ * Store stream events in a transaction
53
+ */
54
+ storeStreamAsync(events: ReadonlyArray<EvDbEvent>, messages: ReadonlyArray<EvDbMessage>): Promise<StreamStoreAffected>;
55
+ /**
56
+ * Store outbox messages in a transaction
57
+ */
58
+ storeOutboxMessagesAsync(shardName: EvDbShardName, records: EvDbMessage[]): Promise<number>;
59
+ /**
60
+ * Get the last offset for a stream
61
+ */
62
+ getLastOffsetAsync(streamAddress: EvDbStreamAddress): Promise<number>;
63
+ /**
64
+ * Get events for a stream since a specific offset
65
+ */
66
+ getEventsAsync(streamCursor: EvDbStreamCursor, pageSize?: number): AsyncGenerator<EvDbEvent, void, undefined>;
67
+ /**
68
+ * Get messages from outbox with optional filtering
69
+ */
70
+ getMessagesAsync(shardName: EvDbShardName, sinceDate: Date, channels?: string[], messageTypes?: string[], cancellationToken?: AbortSignal): Promise<EvDbMessage[]>;
71
+ /**
72
+ * Get snapshot for a stream view
73
+ */
74
+ getSnapshotAsync(viewAddress: EvDbViewAddress): Promise<EvDbStoredSnapshotResultRaw>;
75
+ /**
76
+ * Save a snapshot
77
+ */
78
+ storeSnapshotAsync(record: EvDbStoredSnapshotData): Promise<void>;
79
+ /**
80
+ * Check if an exception is an optimistic concurrency conflict
81
+ */
82
+ private isOccException;
83
+ /**
84
+ * Get table name for shard
85
+ */
86
+ private getTableNameForShard;
87
+ /**
88
+ * Close the database connection
89
+ */
90
+ close(): Promise<void>;
91
+ }
92
+ export default EvDbPrismaStorageAdapter;
@@ -0,0 +1,201 @@
1
+ import EvDbStreamCursor from '@eventualize/types/EvDbStreamCursor';
2
+ import { EvDbStoredSnapshotResultRaw } from '@eventualize/types/EvDbStoredSnapshotResult';
3
+ import EvDbEvent from '@eventualize/types/EvDbEvent';
4
+ import StreamStoreAffected from '@eventualize/types/StreamStoreAffected';
5
+ import { PrismaQueryProvider } from './EvDbRelationalStorageAdapterQueries.js';
6
+ const serializePayload = (payload) => Buffer.from(JSON.stringify(payload), 'utf-8');
7
+ const deserializePayload = (payload) => {
8
+ if (!!payload && typeof payload == 'object') {
9
+ return payload;
10
+ }
11
+ return {};
12
+ };
13
+ /**
14
+ * Prisma-based storage adapter for EvDb
15
+ * Replaces SQL Server-specific adapter with database-agnostic Prisma implementation
16
+ */
17
+ export class EvDbPrismaStorageAdapter {
18
+ constructor(prisma) {
19
+ this.prisma = prisma;
20
+ this.databaseType = 'prisma';
21
+ this.queryProvider = new PrismaQueryProvider(prisma);
22
+ }
23
+ getFromOutbox(filter, options) {
24
+ throw new Error('Method not implemented.');
25
+ }
26
+ getFromOutboxAsync(shard, filter, options, cancellation) {
27
+ throw new Error('Method not implemented.');
28
+ }
29
+ getRecordsFromOutboxAsync(shard, filter, options, cancellation) {
30
+ throw new Error('Method not implemented.');
31
+ }
32
+ subscribeToMessageAsync(handler, shard, filter, options) {
33
+ throw new Error('Method not implemented.');
34
+ }
35
+ /**
36
+ * Store stream events in a transaction
37
+ */
38
+ async storeStreamAsync(events, messages) {
39
+ try {
40
+ const eventsToInsert = events.map((event) => {
41
+ const streamCursor = event.streamCursor;
42
+ return {
43
+ id: crypto.randomUUID(),
44
+ stream_type: streamCursor.streamType,
45
+ stream_id: streamCursor.streamId,
46
+ offset: streamCursor.offset,
47
+ event_type: event.eventType,
48
+ captured_by: event.capturedBy,
49
+ captured_at: event.capturedAt,
50
+ payload: event.payload,
51
+ };
52
+ });
53
+ const messagesToInsert = messages.map(message => {
54
+ const streamCursor = message.streamCursor;
55
+ return {
56
+ id: message.id,
57
+ stream_type: streamCursor.streamType,
58
+ stream_id: streamCursor.streamId,
59
+ offset: streamCursor.offset,
60
+ event_type: message.eventType,
61
+ channel: message.channel,
62
+ message_type: message.messageType,
63
+ captured_by: message.capturedBy,
64
+ captured_at: message.capturedAt,
65
+ stored_at: message.storedAt,
66
+ payload: message.payload,
67
+ serialize_type: 'json',
68
+ };
69
+ });
70
+ const storeEventsQuery = this.queryProvider.saveEvents(eventsToInsert);
71
+ const storeMessagesQuery = this.queryProvider.saveMessages(messagesToInsert);
72
+ const queryResult = await this.prisma.$transaction([
73
+ storeEventsQuery,
74
+ storeMessagesQuery
75
+ ]);
76
+ const numEvents = queryResult[0].count;
77
+ const numMessages = queryResult[1].count;
78
+ return new StreamStoreAffected(numEvents, numMessages);
79
+ }
80
+ catch (error) {
81
+ if (this.isOccException(error)) {
82
+ throw new Error('OPTIMISTIC_CONCURRENCY_VIOLATION');
83
+ }
84
+ throw error;
85
+ }
86
+ }
87
+ /**
88
+ * Store outbox messages in a transaction
89
+ */
90
+ async storeOutboxMessagesAsync(shardName, records) {
91
+ throw new Error('Method not implemented.');
92
+ }
93
+ /**
94
+ * Get the last offset for a stream
95
+ */
96
+ async getLastOffsetAsync(streamAddress) {
97
+ try {
98
+ const { streamType, streamId } = streamAddress;
99
+ const result = await this.queryProvider.getLastOffset(streamType, streamId);
100
+ return Number(result?.offset ?? -1);
101
+ }
102
+ catch (error) {
103
+ throw error;
104
+ }
105
+ }
106
+ /**
107
+ * Get events for a stream since a specific offset
108
+ */
109
+ async *getEventsAsync(streamCursor, pageSize = 100) {
110
+ const { streamType, streamId } = streamCursor;
111
+ let currentOffset = streamCursor.offset;
112
+ while (true) {
113
+ try {
114
+ const events = await this.queryProvider.getEvents(streamType, streamId, currentOffset);
115
+ if (events.length === 0) {
116
+ break;
117
+ }
118
+ for (const event of events) {
119
+ yield new EvDbEvent(event.event_type, new EvDbStreamCursor(event.stream_type, event.stream_id, Number(event.offset)), { payloadType: event.event_type, payload: deserializePayload(event.payload) }, event.captured_at, event.captured_by, event.stored_at);
120
+ currentOffset = Math.max(currentOffset, Number(event.offset));
121
+ }
122
+ if (events.length < pageSize) {
123
+ break; // Reached the end of the stream in the last page
124
+ }
125
+ }
126
+ catch (error) {
127
+ throw error;
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Get messages from outbox with optional filtering
133
+ */
134
+ async getMessagesAsync(shardName, sinceDate, channels, messageTypes, cancellationToken) {
135
+ try {
136
+ const tableName = this.getTableNameForShard(shardName);
137
+ const messages = await this.queryProvider.getMessages(tableName, sinceDate, channels, messageTypes);
138
+ return messages;
139
+ }
140
+ catch (error) {
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * Get snapshot for a stream view
146
+ */
147
+ async getSnapshotAsync(viewAddress) {
148
+ const { streamType, streamId, viewName } = viewAddress;
149
+ try {
150
+ const snapshot = await this.queryProvider.getSnapshot(streamType, streamId, viewName);
151
+ if (!snapshot)
152
+ return EvDbStoredSnapshotResultRaw.Empty;
153
+ return new EvDbStoredSnapshotResultRaw(Number(snapshot.offset), snapshot.stored_at, deserializePayload(snapshot.state));
154
+ }
155
+ catch (error) {
156
+ throw error;
157
+ }
158
+ }
159
+ /**
160
+ * Save a snapshot
161
+ */
162
+ async storeSnapshotAsync(record) {
163
+ try {
164
+ await this.queryProvider.saveSnapshot({
165
+ id: record.id,
166
+ stream_type: record.streamType,
167
+ stream_id: record.streamId,
168
+ view_name: record.viewName,
169
+ offset: record.offset,
170
+ state: record.state,
171
+ stored_at: new Date(),
172
+ });
173
+ }
174
+ catch (error) {
175
+ throw error;
176
+ }
177
+ }
178
+ /**
179
+ * Check if an exception is an optimistic concurrency conflict
180
+ */
181
+ isOccException(error) {
182
+ // P2002 = Unique constraint violation
183
+ // P2034 = Transaction conflict
184
+ const anyError = error;
185
+ return !!error && anyError?.code === 'P2002' || anyError.code === 'P2034';
186
+ }
187
+ /**
188
+ * Get table name for shard
189
+ */
190
+ getTableNameForShard(shardName) {
191
+ throw new Error('Method not implemented.');
192
+ }
193
+ /**
194
+ * Close the database connection
195
+ */
196
+ async close() {
197
+ await this.prisma.$disconnect();
198
+ }
199
+ }
200
+ export default EvDbPrismaStorageAdapter;
201
+ //# sourceMappingURL=EvDbPrismaStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvDbPrismaStorageAdapter.js","sourceRoot":"","sources":["../src/EvDbPrismaStorageAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import IEvDbStorageAdmin from "@eventualize/types/IEvDbStorageAdmin";
2
+ export default class EvDbPrismaStorageAdmin implements IEvDbStorageAdmin {
3
+ private prisma;
4
+ constructor(prisma: any);
5
+ clearEnvironmentAsync(): Promise<void>;
6
+ createEnvironmentAsync(): Promise<void>;
7
+ destroyEnvironmentAsync(): Promise<void>;
8
+ close(): Promise<void>;
9
+ disposeAsync(): Promise<void>;
10
+ }
@@ -0,0 +1,25 @@
1
+ export default class EvDbPrismaStorageAdmin {
2
+ constructor(prisma) {
3
+ this.prisma = prisma;
4
+ }
5
+ async clearEnvironmentAsync() {
6
+ await Promise.all([
7
+ this.prisma.events.deleteMany({}),
8
+ this.prisma.snapshot.deleteMany({}),
9
+ this.prisma.outbox.deleteMany({}),
10
+ ]);
11
+ }
12
+ createEnvironmentAsync() {
13
+ throw new Error("Method not implemented.");
14
+ }
15
+ destroyEnvironmentAsync() {
16
+ throw new Error('Method not implemented.');
17
+ }
18
+ async close() {
19
+ await this.prisma.$disconnect();
20
+ }
21
+ disposeAsync() {
22
+ throw new Error("Method not implemented.");
23
+ }
24
+ }
25
+ //# sourceMappingURL=EvDbPrismaStorageAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvDbPrismaStorageAdmin.js","sourceRoot":"","sources":["../src/EvDbPrismaStorageAdmin.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACvC,YAAoB,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;IAAI,CAAC;IACpC,KAAK,CAAC,qBAAqB;QACvB,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;SACpC,CAAC,CAAC;IACP,CAAC;IAED,sBAAsB;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,uBAAuB;QACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IACD,YAAY;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CAEJ"}
@@ -0,0 +1,57 @@
1
+ import { PrismaClient, Prisma } from './generated/prisma/client.js';
2
+ export declare class PrismaQueryProvider {
3
+ private prisma;
4
+ constructor(prisma: PrismaClient);
5
+ /**
6
+ * Get the last offset for a stream using Prisma
7
+ */
8
+ getLastOffset(stream_type: string, stream_id: string): Promise<{
9
+ offset: bigint;
10
+ } | null>;
11
+ /**
12
+ * Get events for a stream since an offset using Prisma
13
+ */
14
+ getEvents(stream_type: string, stream_id: string, since_offset: number, pageSize?: number): Promise<{
15
+ id: string;
16
+ stream_type: string;
17
+ stream_id: string;
18
+ offset: bigint;
19
+ event_type: string;
20
+ captured_by: string;
21
+ captured_at: Date;
22
+ stored_at: Date;
23
+ payload: import("@prisma/client/runtime/client.js").JsonValue;
24
+ }[]>;
25
+ /**
26
+ * Get messages with filtering using Prisma
27
+ */
28
+ getMessages(table_name: string, since_date: Date, channels?: string[], message_types?: string[]): Promise<unknown>;
29
+ /**
30
+ * Save events in batch using Prisma
31
+ */
32
+ saveEvents(events: Array<Prisma.eventsCreateInput>): Prisma.PrismaPromise<Prisma.BatchPayload>;
33
+ /**
34
+ * Save messages in batch using Prisma
35
+ */
36
+ saveMessages(messages: Array<Prisma.outboxCreateInput>): Prisma.PrismaPromise<Prisma.BatchPayload>;
37
+ /**
38
+ * Get snapshot using Prisma
39
+ */
40
+ getSnapshot(streamType: string, streamId: string, viewName: string): Promise<{
41
+ offset: bigint;
42
+ stored_at: Date;
43
+ state: import("@prisma/client/runtime/client.js").JsonValue;
44
+ } | null>;
45
+ /**
46
+ * Save snapshot using Prisma
47
+ */
48
+ saveSnapshot(data: Prisma.snapshotCreateInput): Promise<{
49
+ id: string;
50
+ stream_type: string;
51
+ stream_id: string;
52
+ offset: bigint;
53
+ stored_at: Date;
54
+ view_name: string;
55
+ state: import("@prisma/client/runtime/client.js").JsonValue;
56
+ }>;
57
+ }
@@ -0,0 +1,103 @@
1
+ // ============================================================================
2
+ // Prisma-based Query Methods (Type-safe alternatives to raw SQL)
3
+ // ============================================================================
4
+ export class PrismaQueryProvider {
5
+ constructor(prisma) {
6
+ this.prisma = prisma;
7
+ }
8
+ /**
9
+ * Get the last offset for a stream using Prisma
10
+ */
11
+ async getLastOffset(stream_type, stream_id) {
12
+ return this.prisma.events.findFirst({
13
+ where: { stream_type, stream_id },
14
+ select: { offset: true },
15
+ orderBy: { offset: 'desc' },
16
+ });
17
+ }
18
+ /**
19
+ * Get events for a stream since an offset using Prisma
20
+ */
21
+ async getEvents(stream_type, stream_id, since_offset, pageSize = 100) {
22
+ return this.prisma.events.findMany({
23
+ where: {
24
+ stream_type,
25
+ stream_id,
26
+ offset: { gte: since_offset },
27
+ },
28
+ select: {
29
+ id: true,
30
+ stream_type: true,
31
+ stream_id: true,
32
+ offset: true,
33
+ event_type: true,
34
+ captured_at: true,
35
+ captured_by: true,
36
+ payload: true,
37
+ stored_at: true
38
+ },
39
+ take: pageSize
40
+ });
41
+ }
42
+ /**
43
+ * Get messages with filtering using Prisma
44
+ */
45
+ async getMessages(table_name, since_date, channels, message_types) {
46
+ const now = new Date();
47
+ const oneSecondAgo = new Date(now.getTime() - 1000);
48
+ // Note: This assumes a dynamic table name approach
49
+ // In Prisma, you'd typically use $queryRawUnsafe for dynamic table names
50
+ const whereClause = {
51
+ stored_at: { gte: since_date, lt: oneSecondAgo },
52
+ };
53
+ if (channels && channels.length > 0) {
54
+ whereClause.channel = { in: channels };
55
+ }
56
+ if (message_types && message_types.length > 0) {
57
+ whereClause.messageType = { in: message_types };
58
+ }
59
+ // This would need to be adapted based on your actual Prisma schema
60
+ return this.prisma.$queryRawUnsafe(`SELECT * FROM ${table_name} WHERE stored_at >= $1 AND stored_at < $2`, since_date, oneSecondAgo);
61
+ }
62
+ /**
63
+ * Save events in batch using Prisma
64
+ */
65
+ saveEvents(events) {
66
+ return this.prisma.events.createMany({ data: events });
67
+ }
68
+ /**
69
+ * Save messages in batch using Prisma
70
+ */
71
+ saveMessages(messages) {
72
+ return this.prisma.outbox.createMany({ data: messages });
73
+ }
74
+ /**
75
+ * Get snapshot using Prisma
76
+ */
77
+ async getSnapshot(streamType, streamId, viewName) {
78
+ return this.prisma.snapshot.findFirst({
79
+ where: {
80
+ stream_type: streamType,
81
+ stream_id: streamId,
82
+ view_name: viewName,
83
+ },
84
+ select: {
85
+ state: true,
86
+ stored_at: true,
87
+ offset: true,
88
+ },
89
+ orderBy: {
90
+ offset: 'desc',
91
+ },
92
+ });
93
+ }
94
+ /**
95
+ * Save snapshot using Prisma
96
+ */
97
+ async saveSnapshot(data) {
98
+ return this.prisma.snapshot.create({
99
+ data,
100
+ });
101
+ }
102
+ }
103
+ //# sourceMappingURL=EvDbRelationalStorageAdapterQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvDbRelationalStorageAdapterQueries.js","sourceRoot":"","sources":["../src/EvDbRelationalStorageAdapterQueries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import * as Prisma from './internal/prismaNamespaceBrowser.js';
2
+ export { Prisma };
3
+ export * as $Enums from './enums.js';
4
+ export * from './enums.js';
5
+ /**
6
+ * Model events
7
+ * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
8
+ */
9
+ export type events = Prisma.eventsModel;
10
+ /**
11
+ * Model outbox
12
+ * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
13
+ */
14
+ export type outbox = Prisma.outboxModel;
15
+ /**
16
+ * Model snapshot
17
+ * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
18
+ */
19
+ export type snapshot = Prisma.snapshotModel;
@@ -0,0 +1,18 @@
1
+ /* !!! This is code generated by Prisma. Do not edit directly. !!! */
2
+ /* eslint-disable */
3
+ // biome-ignore-all lint: generated file
4
+ // @ts-nocheck
5
+ /*
6
+ * This file should be your main import to use Prisma-related types and utilities in a browser.
7
+ * Use it to get access to models, enums, and input types.
8
+ *
9
+ * This file does not contain a `PrismaClient` class, nor several other helpers that are intended as server-side only.
10
+ * See `client.ts` for the standard, server-side entry point.
11
+ *
12
+ * 🟢 You can import this file directly.
13
+ */
14
+ import * as Prisma from './internal/prismaNamespaceBrowser.js';
15
+ export { Prisma };
16
+ export * as $Enums from './enums.js';
17
+ export * from './enums.js';
18
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/generated/prisma/browser.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,oBAAoB;AACpB,wCAAwC;AACxC,eAAe;AACf;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,KAAK,MAAM,MAAM,YAAY,CAAA;AACpC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,36 @@
1
+ import * as runtime from "@prisma/client/runtime/client";
2
+ import * as $Class from "./internal/class.js";
3
+ import * as Prisma from "./internal/prismaNamespace.js";
4
+ export * as $Enums from './enums.js';
5
+ export * from "./enums.js";
6
+ /**
7
+ * ## Prisma Client
8
+ *
9
+ * Type-safe database client for TypeScript
10
+ * @example
11
+ * ```
12
+ * const prisma = new PrismaClient()
13
+ * // Fetch zero or more Events
14
+ * const events = await prisma.events.findMany()
15
+ * ```
16
+ *
17
+ * Read more in our [docs](https://pris.ly/d/client).
18
+ */
19
+ export declare const PrismaClient: $Class.PrismaClientConstructor;
20
+ export type PrismaClient<LogOpts extends Prisma.LogLevel = never, OmitOpts extends Prisma.PrismaClientOptions["omit"] = Prisma.PrismaClientOptions["omit"], ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = $Class.PrismaClient<LogOpts, OmitOpts, ExtArgs>;
21
+ export { Prisma };
22
+ /**
23
+ * Model events
24
+ * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
25
+ */
26
+ export type events = Prisma.eventsModel;
27
+ /**
28
+ * Model outbox
29
+ * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
30
+ */
31
+ export type outbox = Prisma.outboxModel;
32
+ /**
33
+ * Model snapshot
34
+ * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
35
+ */
36
+ export type snapshot = Prisma.snapshotModel;
@@ -0,0 +1,33 @@
1
+ /* !!! This is code generated by Prisma. Do not edit directly. !!! */
2
+ /* eslint-disable */
3
+ // biome-ignore-all lint: generated file
4
+ // @ts-nocheck
5
+ /*
6
+ * This file should be your main import to use Prisma. Through it you get access to all the models, enums, and input types.
7
+ * If you're looking for something you can import in the client-side of your application, please refer to the `browser.ts` file instead.
8
+ *
9
+ * 🟢 You can import this file directly.
10
+ */
11
+ import * as path from 'node:path';
12
+ import { fileURLToPath } from 'node:url';
13
+ globalThis['__dirname'] = path.dirname(fileURLToPath(import.meta.url));
14
+ import * as $Class from "./internal/class.js";
15
+ import * as Prisma from "./internal/prismaNamespace.js";
16
+ export * as $Enums from './enums.js';
17
+ export * from "./enums.js";
18
+ /**
19
+ * ## Prisma Client
20
+ *
21
+ * Type-safe database client for TypeScript
22
+ * @example
23
+ * ```
24
+ * const prisma = new PrismaClient()
25
+ * // Fetch zero or more Events
26
+ * const events = await prisma.events.findMany()
27
+ * ```
28
+ *
29
+ * Read more in our [docs](https://pris.ly/d/client).
30
+ */
31
+ export const PrismaClient = $Class.getPrismaClientClass();
32
+ export { Prisma };
33
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/generated/prisma/client.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,oBAAoB;AACpB,wCAAwC;AACxC,eAAe;AACf;;;;;GAKG;AAGH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAItE,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD,OAAO,KAAK,MAAM,MAAM,YAAY,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,CAAA"}