from enum import StrEnum


class Action(StrEnum):
  # Keyword
  Any = "any"

  # ----------------------------
  # Common Actions
  # ----------------------------

  Create = "create"
  Read = "read"
  Update = "update"
  Delete = "delete"
  Restore = "restore"
  Destroy = "destroy"

  # ----------------------------
  # Special Actions
  # ----------------------------

  Add = "add"

  Send = "send"

  Search = "search"

  Init = "init"
  Verify = "verify"

  Start = "start"
  Abort = "abort"
  Commit = "commit"

  Share = "share"
  Upload = "upload"
  Download = "download"

  Collect = "collect"
  Payment = "payment"

  Resolve = "resolve"
  Generate = "generate"

  Publish = "publish"
  Subscribe = "subscribe"

  # ----------------------------
  # Scoped Actions
  # ----------------------------

  CreateOwn = "create:own"
  ReadOwn = "read:own"
  UpdateOwn = "update:own"
  DeleteOwn = "delete:own"
  RestoreOwn = "restore:own"
  DestroyOwn = "destroy:own"

  CreateShare = "create:share"
  ReadShare = "read:share"
  UpdateShare = "update:share"
  DeleteShare = "delete:share"
  RestoreShare = "restore:share"
  DestroyShare = "destroy:share"

  CreateGroup = "create:group"
  ReadGroup = "read:group"
  UpdateGroup = "update:group"
  DeleteGroup = "delete:group"
  RestoreGroup = "restore:group"
  DestroyGroup = "destroy:group"

  CreateClient = "create:client"
  ReadClient = "read:client"
  UpdateClient = "update:client"
  DeleteClient = "delete:client"
  RestoreClient = "restore:client"
  DestroyClient = "destroy:client"
