Skip to content

Instantly share code, notes, and snippets.

View yasuabe's full-sized avatar

Yasuyuki Abe yasuabe

View GitHub Profile
@yasuabe
yasuabe / lambda_function.py
Created September 2, 2018 12:20
slack-ops-test2-func: connecting to RDS
import os
import json
import logging
from urllib import request, parse
import pymysql
token = os.environ['TOKEN']
rds_host = os.environ['RDS_HOST']
name = os.environ['NAME']
password = os.environ['PASSWORD']
@yasuabe
yasuabe / lambda_function.py
Created September 2, 2018 11:57
slack-ops-test2-func: retrieve single post
import os
import json
import logging
from urllib import request, parse
token = os.environ['TOKEN']
logger = logging.getLogger()
logger.setLevel(logging.INFO)
@yasuabe
yasuabe / lambda_function.py
Created September 2, 2018 11:14
slack-ops-test2-func: handling challenge event
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info(json.dumps(event))
if ('challenge' in event):
return {
@yasuabe
yasuabe / lambda_function.py
Last active September 2, 2018 11:13
slack-ops-test2-func: handling challenge event
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info(json.dumps(event))
if ('challenge' in event):
return {
/*
<build.sbt>
scalaVersion := "2.13.0"
libraryDependencies ++= Seq(
"com.sksamuel.avro4s" %% "avro4s-core" % "3.0.1",
"eu.timepit" %% "refined" % "0.9.9",
"io.scalaland" %% "chimney" % "0.3.2"
)
<plugins.sbt>
@yasuabe
yasuabe / DI_minimal_cake_tagless_final_free_monad.sc
Last active February 18, 2019 12:59
minimal cake + tagless final + free monad
import cats.free.Free
import cats.free.Free.liftF
import cats.~>
// domain layer -----------------------------------------------------------
case class Movie(id: Int, title: String)
sealed trait Query[A]
case class GetMovie(id: Int) extends Query[Option[Movie]]
@yasuabe
yasuabe / DI_tagless_final_free_monad.sc
Last active February 18, 2019 12:48
tagless final + free monad
import cats.free.Free
import cats.free.Free.liftF
import cats.{Id, Monad, ~>}
import cats.syntax.option._
// domain layer -----------------------------------------------------------
case class Movie(id: Int, title: String)
sealed trait Query[A]
case class GetMovie(id: Int) extends Query[Option[Movie]]
@yasuabe
yasuabe / DI_free_monad_min_cake.sc
Last active February 18, 2019 13:15
minimal cake + free monad
import cats.free.Free
import cats.free.Free.liftF
import cats.~>
// domain layer -----------------------------------------------------------
case class Movie(id: Int, title: String)
sealed trait Query[A]
case class GetMovie(id: Int) extends Query[Option[Movie]]
@yasuabe
yasuabe / DI_tagless_min_cake.sc
Last active February 18, 2019 13:14
minimal cake + tagless final
import cats.data.Chain
// domain layer -----------------------------------------------------------
case class Movie(id: Int, title: String)
trait MovieRepo[F[_]] {
def getMovie(id: Int): F[Option[Movie]]
}
trait UsesMovieRepo[F[_]] {
val movieRepo: MovieRepo[F]
@yasuabe
yasuabe / DI_tagless.sc
Last active February 18, 2019 12:54
tagless final
import cats.{Id, Monad}
// domain layer ------------------------------------------------------
case class Movie(id: Int, title: String)
trait MovieRepoSym[F[_]] {
def getMovie(id: Int): F[Option[Movie]]
}
class MovieService[F[_]: Monad](sym: MovieRepoSym[F]) {