Comments (4)
my proposed data structure is something like this:
case class QueryFragment[L <: HList: Composite](query: Cord, params: L) {
def ++[P <: HList, POut <: HList](other: QueryFragment[P])
(implicit p: Prepend.Aux[L, P, POut], cout: Composite[POut]): QueryFragment[POut] =
QueryFragment(query ++ other.query, params ++ other.params)
}
you don't need to do anything special to support HList
just make product
and emptyProduct
from LowerPriorityComposite
implicitly available
UPDATE: this will not work as type of HList changes. more successfull attempt would be with coproducts or sigma types (https://gist.github.com/wedens/2c854d03f5c8b40bbb12).
from doobie.
I like it.
from doobie.
I've been running into some issues with this idea... specifically, I can't make a semigroup out of this, since what we want is precisely to be able to append arbitrary QueryFragments together...
see:
https://gist.github.com/kryptt/b2f7ef6719a252dd316c
from doobie.
It can never be a semigroup because the type argument changes, but it should definitely be possible to append fragments (that's the whole point). Sorry I haven't had time to focus on this; I'm working on some less interesting things.
from doobie.
Related Issues (20)
- Minor: Surface "unlabeled" in a way that can be referenced HOT 1
- doobie with weaver, which package? HOT 1
- "incompatible type in overriding" when overriding ConnectionInterpreter HOT 3
- Multitenant Application in Doobie HOT 2
- Make instances automatically available for Tuples
- Scalafix rule to help migrate to 1.0
- Change code package to `org.typelevel.doobie`
- Transfer to typelevel github org (make sure docs work)
- Remove TimeMeta (was deprecated)
- Enable MiMa
- Optimize compile time by removing anonymous subclass
- Allow running additional PreparedStatement methods before executing
- Bug: prepared statement parameter is not produced for any class or object, "incompatible interpolation" is not thrown HOT 1
- [question] - Meta[Optional[MyType]] not being used HOT 2
- Doobie is not reusing connections, and the documentation doesn't have a single example of how to do it HOT 5
- [CVE-2024-1597] PostgresSQL version is shown as having a vulnerability to SQL Injection via line comment generation HOT 2
- How do i set Snapshot isolation level for transaction? HOT 5
- Where is With ZIO Integration? HOT 2
- Transaction Isolation Levels HOT 3
- build.sbt in introduction broken for Scala 3 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from doobie.