// Generated by Create API
// https://github.com/CreateAPI/CreateAPI

import Foundation

public struct NotificationReactSchema: Codable, Equatable, Identifiable {
    public var createdAt: Date
    public var id: UUID
    public var isRead: Bool
    public var notificationType: NotificationType?
    /// MiniClipOrPlaylistSchema
    public var reactContent: MiniClipOrPlaylistSchema
    public var totalUsers: Int?
    public var userProfiles: [MiniProfileSchema]

    public struct NotificationType: RawRepresentable, Codable, Equatable {
        public let rawValue: String

        public init(rawValue: String) {
            self.rawValue = rawValue
        }

        public static let clipLike = Self(rawValue: "clip_like")
        public static let clipUnlike = Self(rawValue: "clip_unlike")
        public static let sceneLike = Self(rawValue: "scene_like")
        public static let sceneUnlike = Self(rawValue: "scene_unlike")
        public static let playlistLike = Self(rawValue: "playlist_like")
        public static let playlistUnlike = Self(rawValue: "playlist_unlike")
        public static let codeRedeem = Self(rawValue: "code_redeem")
    }

    public init(createdAt: Date, id: UUID, isRead: Bool? = nil, notificationType: NotificationType? = nil, reactContent: MiniClipOrPlaylistSchema, totalUsers: Int? = nil, userProfiles: [MiniProfileSchema]) {
        self.createdAt = createdAt
        self.id = id
        self.isRead = isRead ?? false
        self.notificationType = notificationType
        self.reactContent = reactContent
        self.totalUsers = totalUsers
        self.userProfiles = userProfiles
    }
}
