🚀 Say Hello to ExoQuery! 🚀
The first Kotlin Multiplatform Language-Integrated SQL Querying System. ExoQuery lets you use regular Kotlin syntax to build SQL queries. Why should querying databases be any harder than traversing an array!?
✨ Why ExoQuery?
• SQL at Compile Time: Forget runtime surprises—your queries are generated at compile time!
• Language Integrated: No more clunky table aliases,
eq
or
Case().when
.
• Use Regular Kotlin:
==
,
if
,
when
, Elvis operators—write SQL like you write Kotlin.
• Cross-Platform Power: JVM, Native iOS, Android, Linux, Windows, MacOS, and more!
• Composable & Functional: Build complex queries with ease.
💡 Example Query:
Copy code
capture.select {
val p = from(people)
val a = join(addresses) { a -> a.owner == p.id }
p.name to a.street
}
//> SELECT p.name, a.street FROM Person p
// JOIN addresses a ON a.owner == p.id
🔥*Why Wait?*
Write less boilerplate, get more done, and have fun doing it. Try ExoQuery today! 👉 GitHub
🔥 14
❤️ 1
K 13
p
Piotr Krzemiński
04/29/2025, 1:49 PM
The power of compiler plugins, awesome 😊
👍 1
r
rocketraman
04/29/2025, 2:11 PM
This is very interesting. Do you see this as an alternative to something like Exposed, or is it meant to be used in conjunction?
a
Alexander Ioffe
04/29/2025, 2:20 PM
Alternative in many cases, conjunction in some. Also, I have plans to integrate with Spring.
Alexander Ioffe
04/29/2025, 2:20 PM
Also, ExoQuery fully supports Kotlin Multiplatform which Exposed does not.
👍 3
s
suresh
05/01/2025, 1:22 AM
@Alexander Ioffe This looks really nice. I’m trying to convert some exposed queries to exoquery. Does it support upsert?
a
Alexander Ioffe
05/01/2025, 4:03 AM
You mean Postgres OnConflict? I don’t have that done yet but I’m working on it. I’ll have it in 2-3 weeks.