47 lines
1.3 KiB
Elm
47 lines
1.3 KiB
Elm
module Internal.Api.Ban.Main exposing (..)
|
|
|
|
import Internal.Api.Ban.Api as Api
|
|
import Internal.Tools.Context as Context exposing (Context, VBA)
|
|
import Internal.Tools.Exceptions as X
|
|
import Internal.Tools.VersionControl as VC
|
|
import Task exposing (Task)
|
|
|
|
|
|
ban : Context (VBA a) -> BanInput -> Task X.Error BanOutput
|
|
ban context input =
|
|
VC.withBottomLayer
|
|
{ current = Api.banV1
|
|
, version = "r0.0.0"
|
|
}
|
|
|> VC.sameForVersion "r0.0.1"
|
|
|> VC.sameForVersion "r0.1.0"
|
|
|> VC.sameForVersion "r0.2.0"
|
|
|> VC.sameForVersion "r0.3.0"
|
|
|> VC.sameForVersion "r0.4.0"
|
|
|> VC.sameForVersion "r0.5.0"
|
|
|> VC.sameForVersion "r0.6.0"
|
|
|> VC.sameForVersion "r0.6.1"
|
|
|> VC.addMiddleLayer
|
|
{ downcast = identity
|
|
, current = Api.banV2
|
|
, upcast = identity
|
|
, version = "v1.1"
|
|
}
|
|
|> VC.sameForVersion "v1.2"
|
|
|> VC.sameForVersion "v1.3"
|
|
|> VC.sameForVersion "v1.4"
|
|
|> VC.sameForVersion "v1.5"
|
|
|> VC.sameForVersion "v1.6"
|
|
|> VC.mostRecentFromVersionList (Context.getVersions context)
|
|
|> Maybe.withDefault (always <| always <| Task.fail X.UnsupportedSpecVersion)
|
|
|> (|>) input
|
|
|> (|>) context
|
|
|
|
|
|
type alias BanInput =
|
|
Api.BanInputV1
|
|
|
|
|
|
type alias BanOutput =
|
|
Api.BanOutputV1
|