-
-
Notifications
You must be signed in to change notification settings - Fork 66
Introduce new experimental DSL for Postgrest Columns #761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package io.github.jan.supabase.postgrest.query | ||
|
||
open class BasicColumnsBuilder { | ||
Check warningCode scanning / detekt Public classes, interfaces and objects require documentation. Warning
BasicColumnsBuilder is missing required documentation.
|
||
|
||
internal val columns: MutableList<String> = mutableListOf<String>() | ||
|
||
fun named(vararg columns: String) { | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function named is missing documentation.
|
||
this.columns.addAll(columns) | ||
} | ||
|
||
fun all() { | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function all is missing documentation.
|
||
columns.add("*") | ||
} | ||
|
||
fun json(column: String, key: String, returnAsText: Boolean = false) { | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function json is missing documentation.
|
||
val operator = if(returnAsText) "->>" else "->" | ||
columns.add("$column$operator$key") | ||
} | ||
|
||
fun foreign(name: String, columnsBuilder: ForeignColumnsBuilder.() -> Unit = {}) { | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function foreign is missing documentation.
|
||
val foreignColumns = ForeignColumnsBuilder().apply(columnsBuilder) | ||
val spread = if(foreignColumns.spread) "..." else "" | ||
val key = if(foreignColumns.key != null) "!${foreignColumns.key}" else "" | ||
columns.add("$spread$name$key(${foreignColumns.build()})") | ||
} | ||
|
||
infix fun String.withAlias(alias: String) = "$alias:$this" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function withAlias is missing documentation.
|
||
|
||
infix fun String.withFunction(name: String) = "$this.$name" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function withFunction is missing documentation.
|
||
|
||
infix fun String.withType(type: String) = "$this::$type" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function withType is missing documentation.
|
||
|
||
fun avg() = "avg()" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function avg is missing documentation.
Check warningCode scanning / detekt A function that only returns a constant is misleading. Consider declaring a constant instead. Warning
avg is returning a constant. Prefer declaring a constant instead.
|
||
|
||
fun count() = "count()" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function count is missing documentation.
Check warningCode scanning / detekt A function that only returns a constant is misleading. Consider declaring a constant instead. Warning
count is returning a constant. Prefer declaring a constant instead.
|
||
|
||
|
||
fun max() = "max()" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function max is missing documentation.
Check warningCode scanning / detekt A function that only returns a constant is misleading. Consider declaring a constant instead. Warning
max is returning a constant. Prefer declaring a constant instead.
|
||
|
||
|
||
fun min() = "min()" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function min is missing documentation.
Check warningCode scanning / detekt A function that only returns a constant is misleading. Consider declaring a constant instead. Warning
min is returning a constant. Prefer declaring a constant instead.
|
||
|
||
|
||
fun sum() = "sum()" | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function sum is missing documentation.
Check warningCode scanning / detekt A function that only returns a constant is misleading. Consider declaring a constant instead. Warning
sum is returning a constant. Prefer declaring a constant instead.
|
||
|
||
|
||
fun build() = columns.joinToString(",").also(::println) | ||
Check warningCode scanning / detekt Public functions require documentation. Warning
The function build is missing documentation.
|
||
|
||
} | ||
|
||
class ForeignColumnsBuilder(): BasicColumnsBuilder() { | ||
Check warningCode scanning / detekt Public classes, interfaces and objects require documentation. Warning
ForeignColumnsBuilder is missing required documentation.
Check warningCode scanning / detekt Empty block of code detected. As they serve no purpose they should be removed. Warning
An empty default constructor can be removed.
|
||
|
||
var spread = false | ||
Check warningCode scanning / detekt Public properties require documentation. Warning
The property spread is missing documentation.
|
||
var key: String? = null | ||
Check warningCode scanning / detekt Public properties require documentation. Warning
The property key is missing documentation.
|
||
|
||
} | ||
|
||
internal fun String.clean(): String { | ||
var quoted = false | ||
val regex = Regex("\\s") | ||
return this.map { | ||
if (it == '"') { | ||
quoted = !quoted | ||
} | ||
if (regex.matches(it.toString()) && !quoted) { | ||
"" | ||
} else { | ||
it | ||
} | ||
}.joinToString("") | ||
} |
Uh oh!
There was an error while loading. Please reload this page.