packages feed

hw-dsv-0.3.8: app/App/Commands/Options/Type.hs

{-# LANGUAGE DeriveGeneric         #-}
{-# LANGUAGE DuplicateRecordFields #-}

module App.Commands.Options.Type where

import App.Data.ColumnDesc
import App.Data.RangeJoinColumn
import Data.Text                (Text)
import GHC.Generics
import GHC.Word                 (Word8)

data CreateIndexOptions = CreateIndexOptions
  { filePath  :: FilePath
  , delimiter :: Word8
  } deriving (Eq, Show, Generic)

data QueryStrictOptions = QueryStrictOptions
  { columns        :: [Int]
  , filePath       :: FilePath
  , outputFilePath :: FilePath
  , delimiter      :: Word8
  , outDelimiter   :: Word8
  , useIndex       :: Bool
  } deriving (Eq, Show, Generic)

data GenerateOptions = GenerateOptions
  { fields :: Int
  , rows   :: Int
  } deriving (Eq, Show, Generic)

data CatOptions = CatOptions
  { source :: FilePath
  , target :: FilePath
  , simd   :: Bool
  } deriving (Eq, Show, Generic)

data IndexWord8sOptions = IndexWord8sOptions
  { source :: FilePath
  , target :: FilePath
  , simd   :: Bool
  } deriving (Eq, Show, Generic)

data QueryLazyOptions = QueryLazyOptions
  { columns        :: [ColumnDesc Text]
  , filePath       :: FilePath
  , outputFilePath :: FilePath
  , delimiter      :: Word8
  , outDelimiter   :: Word8
  , method         :: String
  } deriving (Eq, Show, Generic)

data RangeJoinOptions = RangeJoinOptions
  { input1FilePath    :: FilePath
  , input1Delimiter   :: Word8
  , input1StartColumn :: Int
  , input1StopColumn  :: Int
  , input2FilePath    :: FilePath
  , input2Delimiter   :: Word8
  , input2StartColumn :: Int
  , input2StopColumn  :: Int
  , columns           :: [RangeJoinColumn]
  , rangeType         :: Text
  , outputFilePath    :: FilePath
  , outputDelimiter   :: Word8
  } deriving (Eq, Show, Generic)