mu-haskell/templates/grpc-server-avro.hsfiles
2020-11-23 09:24:10 +01:00

120 lines
3.0 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{-# START_FILE {{name}}.cabal #-}
name: {{name}}
version: 0.1.0.0
-- synopsis:
-- description:
homepage: https://github.com/{{github-username}}{{^github-username}}githubuser{{/github-username}}/{{name}}#readme
author: {{author-name}}{{^author-name}}Author name here{{/author-name}}
maintainer: {{author-email}}{{^author-email}}example@example.com{{/author-email}}
copyright: {{copyright}}{{^copyright}}{{year}}{{^year}}2020{{/year}} {{author-name}}{{^author-name}}Author name here{{/author-name}}{{/copyright}}
category: {{category}}{{^category}}Web{{/category}}
build-type: Simple
cabal-version: >=1.10
extra-source-files: README.md
executable {{name}}
hs-source-dirs: src
main-is: Main.hs
other-modules: Schema
ghc-options: -Wall
default-language: Haskell2010
build-depends:
base >=4.12 && <5
, mu-avro >=0.4.0
, mu-grpc-server >=0.4.0
, mu-rpc >=0.4.0
, mu-schema >=0.3.1
, text
{-# START_FILE stack.yaml #-}
resolver: lts-16.22
allow-newer: true
extra-deps:
# mu
- mu-schema-0.3.1.1
- mu-rpc-0.4.0.1
- mu-optics-0.3.0.1
- mu-avro-0.4.0.2
- mu-protobuf-0.4.0.3
- mu-grpc-server-0.4.0.0
- mu-grpc-common-0.4.0.0
- compendium-client-0.2.1.1
# dependencies of mu
- http2-client-0.9.0.0
- http2-grpc-types-0.5.0.0
- http2-grpc-proto3-wire-0.1.0.0
- warp-grpc-0.4.0.1
- proto3-wire-1.2.0
- parameterized-0.5.0.0
{-# START_FILE Setup.hs #-}
import Distribution.Simple
main = defaultMain
{-# START_FILE .gitignore #-}
.stack-work/
stack*.yaml.lock
*~
{-# START_FILE README.md #-}
# {{name}}
{-# START_FILE {{name}}.avdl #-}
@namespace("{{name}}")
protocol Service {
}
{-# START_FILE src/Schema.hs #-}
{-# language DataKinds #-}
{-# language DeriveAnyClass #-}
{-# language DeriveGeneric #-}
{-# language DuplicateRecordFields #-}
{-# language FlexibleContexts #-}
{-# language FlexibleInstances #-}
{-# language MultiParamTypeClasses #-}
{-# language PolyKinds #-}
{-# language TemplateHaskell #-}
{-# language TypeFamilies #-}
{-# language TypeOperators #-}
module Schema where
-- import Data.Text as T
-- import GHC.Generics
import Mu.Quasi.Avro
import Mu.Schema
avdl "TheSchema" "TheService" "." "{{name}}.avdl"
-- A. Map to Haskell types
-- data Message
-- = Message { ... }
-- deriving ( Eq, Show, Generic
-- , ToSchema TheSchema "Message"
-- , FromSchema TheSchema "Message" )
-- B. Use optics
type Message = Term TheSchema (TheSchema :/: "Message")
{-# START_FILE src/Main.hs #-}
{-# language FlexibleContexts #-}
{-# language PartialTypeSignatures #-}
{-# language OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-partial-type-signatures #-}
module Main where
import Mu.GRpc.Server
import Mu.Server
import Schema
main :: IO ()
main = runGRpcApp msgAvro 8080 server
server :: MonadServer m => SingleServerT i TheService m _
server = singleService ()