blog.anqou.net
rss
author
tags

ppx_rapper の let%rapper 記法を使う

ppx_rapper は OCaml で SQL を扱うときの便利ライブラリで、SQL を書くと PPX によってそれを Caqti を使って RDB にアクセスする OCaml コードに変換してくれます。

ppx_rapper の README を見ると、以下のように使えるようになっています:

let my_query =
  [%rapper
    get_opt
      {sql|
      SELECT @int{id}, @string{username}, @bool{following}, @string?{bio}
      FROM users
      WHERE username <> %string{wrong_user} AND id > %int{min_id}
      |sql}]

実際これは動作するのですが、実は let%rapper を使う別記法もサポートされています。以下のように使います:

let%rapper my_query =
  get_opt
    {sql|
    SELECT @int{id}, @string{username}, @bool{following}, @string?{bio}
    FROM users
    WHERE username <> %string{wrong_user} AND id > %int{min_id}
    |sql}

record_out などもそのまま後ろにつながれば動きます。[%rapper ...] の記法と比べて自然に書けるので重宝しています。