vintasend-prisma 0.1.10 → 0.1.13

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.
@@ -1,10 +1,9 @@
1
1
  import type { BaseNotificationBackend } from 'vintasend/dist/services/notification-backends/base-notification-backend';
2
- import type { ContextGenerator } from 'vintasend/dist/services/notification-context-registry';
3
2
  import type { InputJsonValue, JsonValue } from 'vintasend/dist/types/json-values';
4
3
  import type { DatabaseNotification, Notification, NotificationInput } from 'vintasend/dist/types/notification';
5
4
  import type { NotificationStatus } from 'vintasend/dist/types/notification-status';
6
5
  import type { NotificationType } from 'vintasend/dist/types/notification-type';
7
- import type { Identifier } from 'vintasend/dist/types/identifier';
6
+ import type { BaseNotificationTypeConfig } from 'vintasend/dist/types/notification-type-config';
8
7
  export declare const NotificationStatusEnum: {
9
8
  readonly PENDING_SEND: "PENDING_SEND";
10
9
  readonly SENT: "SENT";
@@ -132,27 +131,27 @@ export interface BaseNotificationUpdateInput<UserIdType> {
132
131
  sentAt?: Date | null;
133
132
  readAt?: Date | null;
134
133
  }
135
- export declare class PrismaNotificationBackend<Client extends NotificationPrismaClientInterface<NotificationIdType, UserIdType>, AvailableContexts extends Record<string, ContextGenerator>, NotificationIdType extends Identifier = Identifier, UserIdType extends Identifier = Identifier> implements BaseNotificationBackend<AvailableContexts, NotificationIdType, UserIdType> {
134
+ export declare class PrismaNotificationBackend<Client extends NotificationPrismaClientInterface<Config['NotificationIdType'], Config['UserIdType']>, Config extends BaseNotificationTypeConfig> implements BaseNotificationBackend<Config> {
136
135
  private prismaClient;
137
136
  constructor(prismaClient: Client);
138
- serializeNotification(notification: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>): DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>;
139
- deserializeNotification(notification: NotificationInput<AvailableContexts, UserIdType>): BaseNotificationCreateInput<UserIdType>;
140
- deserializeNotificationForUpdate(notification: Partial<Notification<AvailableContexts, NotificationIdType, UserIdType>>): Partial<Parameters<typeof this.prismaClient.notification.update>[0]['data']>;
141
- getAllPendingNotifications(): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
142
- getPendingNotifications(): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
143
- getAllFutureNotifications(): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
144
- getFutureNotifications(): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
145
- getAllFutureNotificationsFromUser(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId']): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
146
- getFutureNotificationsFromUser(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId']): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
147
- persistNotification(notification: NotificationInput<AvailableContexts, UserIdType>): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>>;
148
- persistNotificationUpdate(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], notification: Partial<Omit<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>, 'id'>>): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>>;
149
- markPendingAsSent(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id']): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>>;
150
- markPendingAsFailed(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id']): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>>;
151
- markSentAsRead(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id']): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>>;
137
+ serializeNotification(notification: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>): DatabaseNotification<Config>;
138
+ deserializeNotification(notification: NotificationInput<Config>): BaseNotificationCreateInput<Config['UserIdType']>;
139
+ deserializeNotificationForUpdate(notification: Partial<Notification<Config>>): Partial<Parameters<typeof this.prismaClient.notification.update>[0]['data']>;
140
+ getAllPendingNotifications(): Promise<DatabaseNotification<Config>[]>;
141
+ getPendingNotifications(): Promise<DatabaseNotification<Config>[]>;
142
+ getAllFutureNotifications(): Promise<DatabaseNotification<Config>[]>;
143
+ getFutureNotifications(): Promise<DatabaseNotification<Config>[]>;
144
+ getAllFutureNotificationsFromUser(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId']): Promise<DatabaseNotification<Config>[]>;
145
+ getFutureNotificationsFromUser(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId']): Promise<DatabaseNotification<Config>[]>;
146
+ persistNotification(notification: NotificationInput<Config>): Promise<DatabaseNotification<Config>>;
147
+ persistNotificationUpdate(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], notification: Partial<Omit<DatabaseNotification<Config>, 'id'>>): Promise<DatabaseNotification<Config>>;
148
+ markAsSent(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], checkIsPending?: boolean): Promise<DatabaseNotification<Config>>;
149
+ markAsFailed(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], checkIsPending?: boolean): Promise<DatabaseNotification<Config>>;
150
+ markAsRead(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], checkIsSent?: boolean): Promise<DatabaseNotification<Config>>;
152
151
  cancelNotification(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id']): Promise<void>;
153
- getNotification(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], _forUpdate: boolean): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType> | null>;
154
- filterAllInAppUnreadNotifications(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId']): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
155
- filterInAppUnreadNotifications(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId'], page: number, pageSize: number): Promise<DatabaseNotification<AvailableContexts, NotificationIdType, UserIdType>[]>;
152
+ getNotification(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], _forUpdate: boolean): Promise<DatabaseNotification<Config> | null>;
153
+ filterAllInAppUnreadNotifications(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId']): Promise<DatabaseNotification<Config>[]>;
154
+ filterInAppUnreadNotifications(userId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['userId'], page: number, pageSize: number): Promise<DatabaseNotification<Config>[]>;
156
155
  getUserEmailFromNotification(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id']): Promise<string | undefined>;
157
156
  storeContextUsed(notificationId: NonNullable<Awaited<ReturnType<typeof this.prismaClient.notification.findUnique>>>['id'], context: InputJsonValue): Promise<void>;
158
157
  }
@@ -170,10 +170,11 @@ class PrismaNotificationBackend {
170
170
  data: this.deserializeNotificationForUpdate(notification),
171
171
  }));
172
172
  }
173
- async markPendingAsSent(notificationId) {
173
+ async markAsSent(notificationId, checkIsPending = true) {
174
174
  return this.serializeNotification(await this.prismaClient.notification.update({
175
175
  where: {
176
176
  id: notificationId,
177
+ ...(checkIsPending ? { status: exports.NotificationStatusEnum.PENDING_SEND } : {}),
177
178
  },
178
179
  data: {
179
180
  status: exports.NotificationStatusEnum.SENT,
@@ -181,10 +182,11 @@ class PrismaNotificationBackend {
181
182
  },
182
183
  }));
183
184
  }
184
- async markPendingAsFailed(notificationId) {
185
+ async markAsFailed(notificationId, checkIsPending = true) {
185
186
  return this.serializeNotification(await this.prismaClient.notification.update({
186
187
  where: {
187
188
  id: notificationId,
189
+ ...(checkIsPending ? { status: exports.NotificationStatusEnum.PENDING_SEND } : {}),
188
190
  },
189
191
  data: {
190
192
  status: exports.NotificationStatusEnum.FAILED,
@@ -192,10 +194,11 @@ class PrismaNotificationBackend {
192
194
  },
193
195
  }));
194
196
  }
195
- async markSentAsRead(notificationId) {
197
+ async markAsRead(notificationId, checkIsSent = true) {
196
198
  return this.serializeNotification(await this.prismaClient.notification.update({
197
199
  where: {
198
200
  id: notificationId,
201
+ ...(checkIsSent ? { status: exports.NotificationStatusEnum.SENT } : {}),
199
202
  },
200
203
  data: {
201
204
  status: 'READ',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vintasend-prisma",
3
- "version": "0.1.10",
3
+ "version": "0.1.13",
4
4
  "description": "VintaSend Backend implementation for Prisma",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "@prisma/client": "^6.3.1",
20
20
  "prisma": "^6.3.1",
21
- "vintasend": "^0.1.10"
21
+ "vintasend": "^0.1.13"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/jest": "^29.5.14",