Compare commits
No commits in common. "b2fd087e4c5cf38ee686ee38d25c942ba3ec570e" and "6fa9746f360bf3be88b88e125abcb10b64bbfc28" have entirely different histories.
b2fd087e4c
...
6fa9746f36
33
app/Main.hs
33
app/Main.hs
|
@ -3,17 +3,36 @@
|
|||
|
||||
module Main where
|
||||
|
||||
import Soostone
|
||||
import Soostone ( app, middleWare, AppState(AppState, sqliteFile) )
|
||||
|
||||
import Control.Monad
|
||||
import Control.Monad ( void, when )
|
||||
import Data.Version (showVersion)
|
||||
import Database.SQLite.Simple
|
||||
import Database.SQLite.Simple ( execute_, open, Connection )
|
||||
import Network.Wai.Handler.Warp ( run )
|
||||
import Options.Applicative
|
||||
( fullDesc,
|
||||
execParser,
|
||||
progDesc,
|
||||
helper,
|
||||
(<**>),
|
||||
info,
|
||||
command,
|
||||
subparser,
|
||||
strOption,
|
||||
value,
|
||||
showDefault,
|
||||
metavar,
|
||||
eitherReader,
|
||||
option,
|
||||
hidden,
|
||||
help,
|
||||
long,
|
||||
infoOption,
|
||||
Parser )
|
||||
import Paths_soostone ( version )
|
||||
import Prometheus
|
||||
import Prometheus.Metric.GHC
|
||||
import Prometheus.Metric.Proc
|
||||
import Prometheus ( register )
|
||||
import Prometheus.Metric.GHC ( ghcMetrics )
|
||||
import Prometheus.Metric.Proc ( procMetrics )
|
||||
import Text.Read ( readEither )
|
||||
|
||||
|
||||
|
@ -91,5 +110,3 @@ main = do
|
|||
createTables :: Connection -> IO ()
|
||||
createTables con = do
|
||||
execute_ con "CREATE TABLE IF NOT EXISTS keys (id INTEGER PRIMARY KEY, key TEXT, count INTEGER)"
|
||||
|
||||
|
||||
|
|
|
@ -12,8 +12,9 @@ import Soostone.Types
|
|||
|
||||
import Control.Monad.Reader (runReaderT)
|
||||
import Network.Wai ( Middleware )
|
||||
import Network.Wai.Middleware.Prometheus
|
||||
import Network.Wai.Middleware.Prometheus ( def, prometheus )
|
||||
import Servant
|
||||
( Application, HasServer(ServerT), Handler, hoistServer, serve )
|
||||
|
||||
|
||||
soostoneServer :: ServerT SoostoneAPI AppM
|
||||
|
|
|
@ -4,10 +4,20 @@
|
|||
|
||||
module Soostone.API where
|
||||
|
||||
import Soostone.Types
|
||||
import Soostone.Types ( Count, Key )
|
||||
|
||||
import Servant
|
||||
import Servant.API.Generic
|
||||
( Proxy(..),
|
||||
JSON,
|
||||
type (:>),
|
||||
ReqBody,
|
||||
Post,
|
||||
QueryParam',
|
||||
Required,
|
||||
Strict,
|
||||
Get,
|
||||
NamedRoutes )
|
||||
import Servant.API.Generic ( Generic, GenericMode(type (:-)) )
|
||||
|
||||
|
||||
type SoostoneAPI = NamedRoutes API
|
||||
|
@ -24,4 +34,3 @@ data MainAPI mode = MainAPI {
|
|||
|
||||
api :: Proxy SoostoneAPI
|
||||
api = Proxy :: Proxy SoostoneAPI
|
||||
|
||||
|
|
|
@ -4,10 +4,18 @@
|
|||
module Soostone.Handlers where
|
||||
|
||||
import Soostone.Types
|
||||
( AppState(AppState, sqliteFile), AppM, Count(..), Key )
|
||||
|
||||
import Data.Functor
|
||||
import Data.Functor ( ($>) )
|
||||
import Database.SQLite.Simple
|
||||
import Control.Monad.Catch
|
||||
( open,
|
||||
Connection,
|
||||
close,
|
||||
executeNamed,
|
||||
queryNamed,
|
||||
withImmediateTransaction,
|
||||
NamedParam((:=)) )
|
||||
import Control.Monad.Catch ( finally )
|
||||
import Control.Monad.Reader ( ask )
|
||||
import Control.Monad.IO.Class ( liftIO )
|
||||
|
||||
|
|
|
@ -4,17 +4,19 @@
|
|||
module Soostone.Types where
|
||||
|
||||
import Control.Monad.Catch ( MonadMask, MonadCatch, MonadThrow )
|
||||
import Control.Monad.Error.Class
|
||||
import Control.Monad.Error.Class ( MonadError(throwError) )
|
||||
import Control.Monad.IO.Class ( MonadIO(..) )
|
||||
import Control.Monad.Reader.Class ( MonadReader )
|
||||
import Control.Monad.Trans.Reader (ReaderT)
|
||||
import Data.Aeson hiding (Key)
|
||||
import Data.String
|
||||
import Data.Aeson
|
||||
( defaultOptions, genericToEncoding, FromJSON, ToJSON(toEncoding) )
|
||||
import Data.String ( IsString(fromString) )
|
||||
import Data.Text ( Text )
|
||||
import Database.SQLite.Simple
|
||||
import Database.SQLite.Simple.ToField
|
||||
import Database.SQLite.Simple ( field, FromRow(..) )
|
||||
import Database.SQLite.Simple.ToField ( ToField(..) )
|
||||
import Servant
|
||||
import Servant.API.Generic
|
||||
( Handler, ServerError(errBody), FromHttpApiData, err500 )
|
||||
import Servant.API.Generic ( Generic )
|
||||
|
||||
|
||||
newtype Key = Key Text
|
||||
|
|
Loading…
Reference in New Issue