gazette
gazette copied to clipboard
Toy project serving to illustrate that it's possible to write pure functional systems in Scala.
Gazette
Toy project serving to illustrate that it's possible to write pure functional systems in Scala.
Gazette is a to-do list service.
Usage
Database
- Check/change the DB values in
src/main/resources/server.cfg. sbt run-main gazette.Database
Server
- Check/change the server values in
src/main/resources/server.cfg. sbt run-main gazette.Server
Cli
sbt run-main gazette.Cli --host [HOST HERE, e.g. 127.0.0.1] --port [PORT HERE, e.g. 8080]
sbt run-main gazette.Cli --help for help.
Client
import gazette.{Client, Todo}
import org.http4s.Uri
import scalaz.concurrent.Task
val todo = Todo("lunch", "personal", Some(Date.valueOf("2015-06-13")), List("food"))
// type GazetteAction[A] = Kleisli[Task, Uri, A]
// Alternatively, Client.insert(todo) *> Client.todo w/ import scalaz.syntax.apply._
val action: GazetteAction[List[Todo]] =
for {
_ <- Client.insert(todo) // insert
r <- Client.todo // fetch all to-dos
} yield r
val uri: Uri = Client.uriWith(Uri.IPv4("127.0.0.1"), 8080)
val task: Task[List[Todo]] = action.run(uri)
val printTask: Task[Unit] = task.map(t => println(t.toString))
printTask.run // run the Task to actually print
License
Code is provided under the BSD 2-Clause license available at http://opensource.org/licenses/BSD-2-Clause. Please see the LICENSE file for more details.