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

import Foundation

public struct PersonaSchema: Codable, Equatable, Identifiable {
    /// PersonaClipSchema
    public var clip: PersonaClipSchema
    public var clipCount: Int?
    public var description: String?
    public var entityType: EntityType?
    public var id: String
    public var imageS3Id: String?
    public var imageUrl: String?
    public var isLoved: Bool
    public var isOwned: Bool
    public var isPublic: Bool
    public var isPublicApproved: Bool
    public var isSunoPersona: Bool
    public var isTrashed: Bool
    public var name: String
    public var rootClipId: String?
    public var userDisplayName: String?
    public var userHandle: String?
    public var userImageUrl: String?

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

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

        public static let personaSchema = Self(rawValue: "persona_schema")
    }

    public init(clip: PersonaClipSchema, clipCount: Int? = nil, description: String? = nil, entityType: EntityType? = nil, id: String, imageS3Id: String? = nil, imageUrl: String? = nil, isLoved: Bool? = nil, isOwned: Bool, isPublic: Bool, isPublicApproved: Bool, isSunoPersona: Bool, isTrashed: Bool, name: String, rootClipId: String? = nil, userDisplayName: String? = nil, userHandle: String? = nil, userImageUrl: String? = nil) {
        self.clip = clip
        self.clipCount = clipCount
        self.description = description
        self.entityType = entityType
        self.id = id
        self.imageS3Id = imageS3Id
        self.imageUrl = imageUrl
        self.isLoved = isLoved ?? false
        self.isOwned = isOwned
        self.isPublic = isPublic
        self.isPublicApproved = isPublicApproved
        self.isSunoPersona = isSunoPersona
        self.isTrashed = isTrashed
        self.name = name
        self.rootClipId = rootClipId
        self.userDisplayName = userDisplayName
        self.userHandle = userHandle
        self.userImageUrl = userImageUrl
    }
}
