{-# LANGUAGE DeriveAnyClass #-}

-- | Open codebase error type.
module Unison.Codebase.Init.OpenCodebaseError
  ( OpenCodebaseError (..),
  )
where

import U.Codebase.Sqlite.DbId (SchemaVersion)
import Unison.Prelude

-- | An error that can occur when attempting to open a codebase.
data OpenCodebaseError
  = -- | The codebase doesn't exist.
    OpenCodebaseDoesntExist
  | -- | The codebase exists, but its schema version is unknown to this application.
    OpenCodebaseUnknownSchemaVersion SchemaVersion
  | OpenCodebaseFileLockFailed
  | -- | The codebase exists, but requires a migration before it can be used.
    OpenCodebaseRequiresMigration
      -- current version
      SchemaVersion
      -- required version
      SchemaVersion
  deriving stock (Int -> OpenCodebaseError -> ShowS
[OpenCodebaseError] -> ShowS
OpenCodebaseError -> String
(Int -> OpenCodebaseError -> ShowS)
-> (OpenCodebaseError -> String)
-> ([OpenCodebaseError] -> ShowS)
-> Show OpenCodebaseError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OpenCodebaseError -> ShowS
showsPrec :: Int -> OpenCodebaseError -> ShowS
$cshow :: OpenCodebaseError -> String
show :: OpenCodebaseError -> String
$cshowList :: [OpenCodebaseError] -> ShowS
showList :: [OpenCodebaseError] -> ShowS
Show, OpenCodebaseError -> OpenCodebaseError -> Bool
(OpenCodebaseError -> OpenCodebaseError -> Bool)
-> (OpenCodebaseError -> OpenCodebaseError -> Bool)
-> Eq OpenCodebaseError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OpenCodebaseError -> OpenCodebaseError -> Bool
== :: OpenCodebaseError -> OpenCodebaseError -> Bool
$c/= :: OpenCodebaseError -> OpenCodebaseError -> Bool
/= :: OpenCodebaseError -> OpenCodebaseError -> Bool
Eq)
  deriving anyclass (Show OpenCodebaseError
Typeable OpenCodebaseError
(Typeable OpenCodebaseError, Show OpenCodebaseError) =>
(OpenCodebaseError -> SomeException)
-> (SomeException -> Maybe OpenCodebaseError)
-> (OpenCodebaseError -> String)
-> Exception OpenCodebaseError
SomeException -> Maybe OpenCodebaseError
OpenCodebaseError -> String
OpenCodebaseError -> SomeException
forall e.
(Typeable e, Show e) =>
(e -> SomeException)
-> (SomeException -> Maybe e) -> (e -> String) -> Exception e
$ctoException :: OpenCodebaseError -> SomeException
toException :: OpenCodebaseError -> SomeException
$cfromException :: SomeException -> Maybe OpenCodebaseError
fromException :: SomeException -> Maybe OpenCodebaseError
$cdisplayException :: OpenCodebaseError -> String
displayException :: OpenCodebaseError -> String
Exception)