import { Document, Types } from 'mongoose';
import { AuditFields } from '@/shared/types/common';
import { IPaginateModel } from '@/shared/interfaces/model.interface';
import { NotificationAppRedirect } from '../notification/notification.interface';

export interface IPushNotificationBase {
  title: string;
  description: string;
  image?: string;
  type: string;
  read?: boolean;
  receivedTo?: Types.ObjectId;
  appRedirect: NotificationAppRedirect;
}

export interface IPushNotification extends IPushNotificationBase, AuditFields {}

export interface IPushNotificationDoc extends IPushNotification, Document {}

export interface IPushNotificationModel extends IPaginateModel<IPushNotificationDoc> {}

export type NewCreatedPushNotification = IPushNotificationBase &
  Partial<Pick<AuditFields, 'createdBy' | 'updatedBy'>>;

export type UpdatePushNotificationBody = Partial<IPushNotification>;
