Skip to content

Instantly share code, notes, and snippets.

@gakuzzzz
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gakuzzzz/0d5acc8e7d972bbd73fe to your computer and use it in GitHub Desktop.
Save gakuzzzz/0d5acc8e7d972bbd73fe to your computer and use it in GitHub Desktop.
ifExists
val (u, g) = (User.syntax("u"), Group.syntax("g"))
val groupId: Option[GroupId] = ...
// getOrElse
sql"""
SELECT
${u.result.*}
${groupId.map(v => sqls", ${g.result.name}") getOrElse sqls""}
FROM
${User as u}
${groupId.map(v => sqls"INNER JOIN ${Group as g} ON ${u.groupCode} = ${g.code} AND ${g.id} = ${v}") getOrElse sqls""}
"""
// fold
sql"""
SELECT
${u.result.*}
${groupId.fold(sqls"")(v => sqls", ${g.result.name}")}
FROM
${User as u}
${groupId.fold(sqls"")(v => sqls"INNER JOIN ${Group as g} ON ${u.groupCode} = ${g.code} AND ${g.id} = ${v}")}
"""
// skipIfAbsent
sql"""
SELECT
${u.result.*}
${sqls.skipIfAbsent(groupId.map(v => sqls", ${g.result.name}"))}
FROM
${User as u}
${sqls.skipIfAbsent(groupId.map(v => sqls"INNER JOIN ${Group as g} ON ${u.groupCode} = ${g.code} AND ${g.id} = ${v}"))}
"""
// ifExists
sql"""
SELECT
${u.result.*}
${groupId.map(v => sqls", ${g.result.name}").ifExists}
FROM
${User as u}
${groupId.map(v => sqls"INNER JOIN ${Group as g} ON ${u.groupCode} = ${g.code} AND ${g.id} = ${v}").ifExists}
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment