# coding: utf-8

"""
Immich

Immich API

The version of the OpenAPI document: 2.4.1
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
"""  # noqa: E501

from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class JobName(str, Enum):
    """
    JobName
    """

    """
    allowed enum values
    """
    ASSETDELETE = "AssetDelete"
    ASSETDELETECHECK = "AssetDeleteCheck"
    ASSETDETECTFACESQUEUEALL = "AssetDetectFacesQueueAll"
    ASSETDETECTFACES = "AssetDetectFaces"
    ASSETDETECTDUPLICATESQUEUEALL = "AssetDetectDuplicatesQueueAll"
    ASSETDETECTDUPLICATES = "AssetDetectDuplicates"
    ASSETENCODEVIDEOQUEUEALL = "AssetEncodeVideoQueueAll"
    ASSETENCODEVIDEO = "AssetEncodeVideo"
    ASSETEMPTYTRASH = "AssetEmptyTrash"
    ASSETEXTRACTMETADATAQUEUEALL = "AssetExtractMetadataQueueAll"
    ASSETEXTRACTMETADATA = "AssetExtractMetadata"
    ASSETFILEMIGRATION = "AssetFileMigration"
    ASSETGENERATETHUMBNAILSQUEUEALL = "AssetGenerateThumbnailsQueueAll"
    ASSETGENERATETHUMBNAILS = "AssetGenerateThumbnails"
    AUDITLOGCLEANUP = "AuditLogCleanup"
    AUDITTABLECLEANUP = "AuditTableCleanup"
    DATABASEBACKUP = "DatabaseBackup"
    FACIALRECOGNITIONQUEUEALL = "FacialRecognitionQueueAll"
    FACIALRECOGNITION = "FacialRecognition"
    FILEDELETE = "FileDelete"
    FILEMIGRATIONQUEUEALL = "FileMigrationQueueAll"
    LIBRARYDELETECHECK = "LibraryDeleteCheck"
    LIBRARYDELETE = "LibraryDelete"
    LIBRARYREMOVEASSET = "LibraryRemoveAsset"
    LIBRARYSCANASSETSQUEUEALL = "LibraryScanAssetsQueueAll"
    LIBRARYSYNCASSETS = "LibrarySyncAssets"
    LIBRARYSYNCFILESQUEUEALL = "LibrarySyncFilesQueueAll"
    LIBRARYSYNCFILES = "LibrarySyncFiles"
    LIBRARYSCANQUEUEALL = "LibraryScanQueueAll"
    MEMORYCLEANUP = "MemoryCleanup"
    MEMORYGENERATE = "MemoryGenerate"
    NOTIFICATIONSCLEANUP = "NotificationsCleanup"
    NOTIFYUSERSIGNUP = "NotifyUserSignup"
    NOTIFYALBUMINVITE = "NotifyAlbumInvite"
    NOTIFYALBUMUPDATE = "NotifyAlbumUpdate"
    USERDELETE = "UserDelete"
    USERDELETECHECK = "UserDeleteCheck"
    USERSYNCUSAGE = "UserSyncUsage"
    PERSONCLEANUP = "PersonCleanup"
    PERSONFILEMIGRATION = "PersonFileMigration"
    PERSONGENERATETHUMBNAIL = "PersonGenerateThumbnail"
    SESSIONCLEANUP = "SessionCleanup"
    SENDMAIL = "SendMail"
    SIDECARQUEUEALL = "SidecarQueueAll"
    SIDECARCHECK = "SidecarCheck"
    SIDECARWRITE = "SidecarWrite"
    SMARTSEARCHQUEUEALL = "SmartSearchQueueAll"
    SMARTSEARCH = "SmartSearch"
    STORAGETEMPLATEMIGRATION = "StorageTemplateMigration"
    STORAGETEMPLATEMIGRATIONSINGLE = "StorageTemplateMigrationSingle"
    TAGCLEANUP = "TagCleanup"
    VERSIONCHECK = "VersionCheck"
    OCRQUEUEALL = "OcrQueueAll"
    OCR = "Ocr"
    WORKFLOWRUN = "WorkflowRun"

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of JobName from a JSON string"""
        return cls(json.loads(json_str))
