rename collection(item) types
This commit is contained in:
@@ -25,7 +25,7 @@ data Args = Args
|
|||||||
args :: O.Parser Args
|
args :: O.Parser Args
|
||||||
args = Args <$> cmd_
|
args = Args <$> cmd_
|
||||||
|
|
||||||
data Cmd = Collection CollectionCmd
|
data Cmd = CollectionCmd CollectionCmd
|
||||||
|
|
||||||
cmd_ :: O.Parser Cmd
|
cmd_ :: O.Parser Cmd
|
||||||
cmd_ =
|
cmd_ =
|
||||||
@@ -35,36 +35,36 @@ cmd_ =
|
|||||||
]
|
]
|
||||||
|
|
||||||
data CollectionCmd
|
data CollectionCmd
|
||||||
= CollectionAdd CollectionName
|
= CollectionAdd Collection
|
||||||
| CollectionView CollectionPath
|
| CollectionView CollectionItem
|
||||||
| CollectionEdit CollectionPath
|
| CollectionEdit CollectionItem
|
||||||
| CollectionDelete CollectionPath
|
| CollectionDelete CollectionItem
|
||||||
|
|
||||||
newtype CollectionName = CollectionName T.Text
|
newtype Collection = Collection T.Text
|
||||||
deriving (Read)
|
deriving (Read)
|
||||||
|
|
||||||
data CollectionPath = CollectionPath
|
data CollectionItem = CollectionItem
|
||||||
{ collectionName :: CollectionName,
|
{ collectionName :: Collection,
|
||||||
fileName :: T.Text
|
fileName :: T.Text
|
||||||
}
|
}
|
||||||
|
|
||||||
instance Read CollectionPath where
|
instance Read CollectionItem where
|
||||||
readPrec = R.lift do
|
readPrec = R.lift do
|
||||||
(CollectionName . T.pack -> collectionName) <- R.munch (/= '/')
|
(Collection . T.pack -> collectionName) <- R.munch (/= '/')
|
||||||
_ <- R.string "/"
|
_ <- R.string "/"
|
||||||
(T.pack -> fileName) <- do
|
(T.pack -> fileName) <- do
|
||||||
fileName <- R.munch (liftA2 (&&) (/= '.') (/= '/'))
|
fileName <- R.munch (liftA2 (&&) (/= '.') (/= '/'))
|
||||||
fileExt <- R.string ".json"
|
fileExt <- R.string ".json"
|
||||||
pure (fileName <> fileExt)
|
pure (fileName <> fileExt)
|
||||||
pure CollectionPath {..}
|
pure CollectionItem {..}
|
||||||
|
|
||||||
instance Show CollectionPath where
|
instance Show CollectionItem where
|
||||||
show (CollectionPath {collectionName = CollectionName cn, fileName}) =
|
show (CollectionItem {collectionName = Collection cn, fileName}) =
|
||||||
show (cn <> "/" <> fileName)
|
show (cn <> "/" <> fileName)
|
||||||
|
|
||||||
collectionCmd :: O.Parser Cmd
|
collectionCmd :: O.Parser Cmd
|
||||||
collectionCmd = do
|
collectionCmd = do
|
||||||
fmap Collection . O.hsubparser . mconcat $
|
fmap CollectionCmd . O.hsubparser . mconcat $
|
||||||
[ O.command "add" . O.info (CollectionAdd <$> collectionNameArg) $
|
[ O.command "add" . O.info (CollectionAdd <$> collectionNameArg) $
|
||||||
O.progDesc "Add an entity"
|
O.progDesc "Add an entity"
|
||||||
, O.command "view" . O.info (CollectionView <$> collectionPathArg) $
|
, O.command "view" . O.info (CollectionView <$> collectionPathArg) $
|
||||||
@@ -75,32 +75,32 @@ collectionCmd = do
|
|||||||
O.progDesc "Delete an entity"
|
O.progDesc "Delete an entity"
|
||||||
]
|
]
|
||||||
|
|
||||||
collectionPathArg :: O.Parser CollectionPath
|
collectionPathArg :: O.Parser CollectionItem
|
||||||
collectionPathArg =
|
collectionPathArg =
|
||||||
O.argument O.auto (O.metavar "COLLECTION_PATH")
|
O.argument O.auto (O.metavar "COLLECTION_PATH")
|
||||||
|
|
||||||
collectionNameArg :: O.Parser CollectionName
|
collectionNameArg :: O.Parser Collection
|
||||||
collectionNameArg =
|
collectionNameArg =
|
||||||
CollectionName . T.pack <$> O.strArgument (O.metavar "COLLECTION_NAME")
|
Collection . T.pack <$> O.strArgument (O.metavar "COLLECTION_NAME")
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main =
|
main =
|
||||||
O.execParser (O.info (args <**> O.helper) O.idm) >>= \case
|
O.execParser (O.info (args <**> O.helper) O.idm) >>= \case
|
||||||
Args
|
Args
|
||||||
{ cmd = Collection cmd
|
{ cmd = CollectionCmd cmd
|
||||||
} -> case cmd of
|
} -> case cmd of
|
||||||
CollectionAdd (CollectionName cn) -> do
|
CollectionAdd (Collection cn) -> do
|
||||||
print
|
print
|
||||||
=<< ACMS.API.REST.Collection.create cn
|
=<< ACMS.API.REST.Collection.create cn
|
||||||
=<< J.throwDecode
|
=<< J.throwDecode
|
||||||
=<< LB.getContents
|
=<< LB.getContents
|
||||||
CollectionView CollectionPath {collectionName = CollectionName cn, fileName} ->
|
CollectionView CollectionItem {collectionName = Collection cn, fileName} ->
|
||||||
print
|
print
|
||||||
=<< ACMS.API.REST.Collection.read cn fileName
|
=<< ACMS.API.REST.Collection.read cn fileName
|
||||||
CollectionDelete CollectionPath {collectionName = CollectionName cn, fileName}->
|
CollectionDelete CollectionItem {collectionName = Collection cn, fileName}->
|
||||||
print
|
print
|
||||||
=<< ACMS.API.REST.Collection.delete cn fileName
|
=<< ACMS.API.REST.Collection.delete cn fileName
|
||||||
CollectionEdit CollectionPath {collectionName = CollectionName cn, fileName}->
|
CollectionEdit CollectionItem {collectionName = Collection cn, fileName}->
|
||||||
print
|
print
|
||||||
=<< ACMS.API.REST.Collection.update cn fileName
|
=<< ACMS.API.REST.Collection.update cn fileName
|
||||||
=<< J.throwDecode
|
=<< J.throwDecode
|
||||||
|
|||||||
Reference in New Issue
Block a user