minisql/src/main/scala/minisql/parsing/LiftParsing.scala
2025-06-27 19:50:11 +08:00

17 lines
464 B
Scala

package minisql.parsing
import scala.quoted.*
import minisql.ParamEncoder
import minisql.ast
import minisql.*
import minisql.util.*
private[parsing] def liftParsing(
astParser: => Parser[ast.Ast]
)(using Quotes): Parser[ast.Lift] = {
case '{ lift[t](${ x })(using $e: ParamEncoder[t]) } =>
import quotes.reflect.*
val name = x.show
val liftId = liftIdOfExpr(x)
'{ ast.ScalarValueLift(${ Expr(name) }, ${ Expr(liftId) }, Some($x -> $e)) }
}