Compare commits

...

No commits in common. "b2fd087e4c5cf38ee686ee38d25c942ba3ec570e" and "6fa9746f360bf3be88b88e125abcb10b64bbfc28" have entirely different histories.

5 changed files with 57 additions and 20 deletions

View File

@ -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)"

View File

@ -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

View File

@ -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

View File

@ -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 )

View File

@ -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