Skip to content

Toy project serving to illustrate that it's possible to write pure functional systems in Scala.

License

Notifications You must be signed in to change notification settings

adelbertc/gazette

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  1. Check/change the DB values in src/main/resources/server.cfg.
  2. sbt run-main gazette.Database

Server

  1. Check/change the server values in src/main/resources/server.cfg.
  2. sbt run-main gazette.Server

Cli

  1. 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.

About

Toy project serving to illustrate that it's possible to write pure functional systems in Scala.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages