Skip to content

Commit 1a65dc4

Browse files
committed
Cleanup and add some tests
1 parent bd4f31b commit 1a65dc4

File tree

17 files changed

+90
-50
lines changed

17 files changed

+90
-50
lines changed

KSP/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ kotlin {
3232
}
3333

3434
dependencies {
35+
//Add KSP compiler to all targets that need processing
3536
//Advised to use Gradle Version Catalogs
3637
add("kspCommonMainMetadata", "io.github.jan-tennert.supabase:ksp-compiler:VERSION")
3738
add("kspJvm", "io.github.jan-tennert.supabase:ksp-compiler:VERSION")

KSP/src/main/kotlin/io/github/jan/supabase/ksp/SelectableSymbolProcessorProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
55
import com.google.devtools.ksp.processing.SymbolProcessorProvider
66

77
class SelectableSymbolProcessorProvider: SymbolProcessorProvider {
8+
89
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
910
return SelectableSymbolProcessor(environment.codeGenerator, environment.logger, environment.options)
1011
}
12+
1113
}

KSP/src/main/kotlin/io/github/jan/supabase/ksp/Utils.kt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
package io.github.jan.supabase.ksp
22

33
import com.google.devtools.ksp.symbol.KSAnnotation
4-
import com.google.devtools.ksp.symbol.KSClassDeclaration
54
import com.google.devtools.ksp.symbol.KSDeclaration
65
import com.google.devtools.ksp.symbol.KSValueArgument
76
import com.google.devtools.ksp.symbol.KSValueParameter
87

9-
fun Sequence<KSAnnotation>.getAnnotation(target: String): KSAnnotation {
10-
return getAnnotationOrNull(target) ?:
11-
throw NoSuchElementException("Sequence contains no element matching the predicate.")
12-
}
13-
14-
fun KSClassDeclaration.anyCompanionObject(): KSClassDeclaration? {
15-
return declarations.filterIsInstance<KSClassDeclaration>().firstOrNull { it.isCompanionObject }
16-
}
17-
188
fun Sequence<KSAnnotation>.getAnnotationOrNull(target: String): KSAnnotation? {
199
for (element in this) if (element.shortName.asString() == target) return element
2010
return null
@@ -30,6 +20,7 @@ fun <T> List<KSValueArgument>.getParameterValueIfExist(target: String): T? {
3020
return null
3121
}
3222

23+
//Note these should never be null for our use case, but we still need to handle it
3324
val KSValueParameter.nameAsString: String get() = name?.asString() ?: error("Parameter name is null")
3425

3526
val KSDeclaration.qualifiedNameAsString get() = qualifiedKSName.asString()

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/ColumnRegistry.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package io.github.jan.supabase.postgrest
33
import io.github.jan.supabase.annotations.SupabaseInternal
44
import kotlin.reflect.KClass
55

6+
/**
7+
* Registry used to map generated columns to a class
8+
*/
69
@OptIn(ExperimentalSubclassOptIn::class)
710
@SupabaseInternal
811
@SubclassOptInRequired(SupabaseInternal::class)

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/PostgrestImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ internal class PostgrestImpl(override val supabaseClient: SupabaseClient, overri
5656
override suspend fun rpc(function: String, request: RpcRequestBuilder.() -> Unit): PostgrestResult = rpcRequest(function, null, request)
5757

5858
private suspend fun rpcRequest(function: String, body: JsonObject? = null, request: RpcRequestBuilder.() -> Unit): PostgrestResult {
59-
val requestBuilder = RpcRequestBuilder(config.defaultSchema, config.propertyConversionMethod, config.columnRegistry).apply(request)
59+
val requestBuilder = RpcRequestBuilder(config.defaultSchema, config).apply(request)
6060
val urlParams = buildMap {
6161
putAll(requestBuilder.params.mapToFirstValue())
6262
if(requestBuilder.method != RpcMethod.POST && body != null) {

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestBuilderExtension.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ suspend inline fun <reified T : Any> PostgrestQueryBuilder.select(
3838
*/
3939
@SupabaseExperimental
4040
inline fun <reified T : Any> PostgrestRequestBuilder.select() {
41-
val columns = columnRegistry.getColumns(T::class)
41+
val columns = config.columnRegistry.getColumns(T::class)
4242
select(Columns.raw(columns))
4343
}

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestQueryBuilder.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ class PostgrestQueryBuilder(
4444
request: @PostgrestFilterDSL SelectRequestBuilder.() -> Unit = {}
4545
): PostgrestResult {
4646
val requestBuilder = SelectRequestBuilder(
47-
postgrest.config.propertyConversionMethod,
48-
postgrest.config.columnRegistry
47+
postgrest.config
4948
).apply {
5049
request(); params["select"] = listOf(columns.value)
5150
}
@@ -79,8 +78,7 @@ class PostgrestQueryBuilder(
7978
request: UpsertRequestBuilder.() -> Unit = {}
8079
): PostgrestResult {
8180
val requestBuilder = UpsertRequestBuilder(
82-
postgrest.config.propertyConversionMethod,
83-
postgrest.config.columnRegistry
81+
postgrest.config
8482
).apply(request)
8583
val body = postgrest.serializer.encodeToJsonElement(values).jsonArray
8684
val columns = body.map { it.jsonObject.keys }.flatten().distinct()
@@ -136,8 +134,7 @@ class PostgrestQueryBuilder(
136134
request: InsertRequestBuilder.() -> Unit = {}
137135
): PostgrestResult {
138136
val requestBuilder = InsertRequestBuilder(
139-
postgrest.config.propertyConversionMethod,
140-
postgrest.config.columnRegistry
137+
postgrest.config
141138
).apply(request)
142139
val body = postgrest.serializer.encodeToJsonElement(values).jsonArray
143140
val columns = body.map { it.jsonObject.keys }.flatten().distinct()
@@ -248,8 +245,7 @@ class PostgrestQueryBuilder(
248245

249246
@PublishedApi
250247
internal inline fun newRequestBuilder(request: PostgrestRequestBuilder.() -> Unit = {}) = PostgrestRequestBuilder(
251-
postgrest.config.propertyConversionMethod,
252-
postgrest.config.columnRegistry
248+
postgrest.config
253249
).apply(request)
254250

255251
companion object {

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestRequestBuilder.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ package io.github.jan.supabase.postgrest.query
33

44
import io.github.jan.supabase.annotations.SupabaseExperimental
55
import io.github.jan.supabase.auth.PostgrestFilterDSL
6-
import io.github.jan.supabase.postgrest.ColumnRegistry
7-
import io.github.jan.supabase.postgrest.PropertyConversionMethod
6+
import io.github.jan.supabase.postgrest.Postgrest
87
import io.github.jan.supabase.postgrest.query.filter.PostgrestFilterBuilder
98
import io.github.jan.supabase.postgrest.result.PostgrestResult
109
import io.ktor.http.HeadersBuilder
@@ -16,8 +15,7 @@ import kotlin.js.JsName
1615
*/
1716
@PostgrestFilterDSL
1817
open class PostgrestRequestBuilder(
19-
@PublishedApi internal val propertyConversionMethod: PropertyConversionMethod,
20-
@PublishedApi internal val columnRegistry: ColumnRegistry
18+
@PublishedApi internal val config: Postgrest.Config
2119
) {
2220

2321
/**
@@ -160,7 +158,7 @@ open class PostgrestRequestBuilder(
160158
* @param block The filter block
161159
*/
162160
inline fun filter(block: @PostgrestFilterDSL PostgrestFilterBuilder.() -> Unit) {
163-
val filter = PostgrestFilterBuilder(propertyConversionMethod, params)
161+
val filter = PostgrestFilterBuilder(config.propertyConversionMethod, params)
164162
filter.block()
165163
}
166164

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/request/InsertRequestBuilder.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package io.github.jan.supabase.postgrest.query.request
22

3-
import io.github.jan.supabase.postgrest.ColumnRegistry
4-
import io.github.jan.supabase.postgrest.PropertyConversionMethod
3+
import io.github.jan.supabase.postgrest.Postgrest
54
import io.github.jan.supabase.postgrest.query.PostgrestQueryBuilder
65
import io.github.jan.supabase.postgrest.query.PostgrestRequestBuilder
76

87
/**
98
* Request builder for [PostgrestQueryBuilder.insert]
109
*/
11-
open class InsertRequestBuilder(propertyConversionMethod: PropertyConversionMethod, columnRegistry: ColumnRegistry): PostgrestRequestBuilder(propertyConversionMethod, columnRegistry) {
10+
open class InsertRequestBuilder(config: Postgrest.Config): PostgrestRequestBuilder(config) {
1211

1312
/**
1413
* Make missing fields default to `null`.

Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/request/RpcRequestBuilder.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io.github.jan.supabase.postgrest.query.request
22

3-
import io.github.jan.supabase.postgrest.ColumnRegistry
43
import io.github.jan.supabase.postgrest.Postgrest
5-
import io.github.jan.supabase.postgrest.PropertyConversionMethod
64
import io.github.jan.supabase.postgrest.RpcMethod
75
import io.github.jan.supabase.postgrest.query.PostgrestRequestBuilder
86

@@ -11,9 +9,8 @@ import io.github.jan.supabase.postgrest.query.PostgrestRequestBuilder
119
*/
1210
class RpcRequestBuilder(
1311
defaultSchema: String,
14-
propertyConversionMethod: PropertyConversionMethod,
15-
columnRegistry: ColumnRegistry
16-
): PostgrestRequestBuilder(propertyConversionMethod, columnRegistry) {
12+
config: Postgrest.Config
13+
): PostgrestRequestBuilder(config) {
1714

1815
/**
1916
* The HTTP method to use. Default is POST

0 commit comments

Comments
 (0)