Skip to content

Commit c882977

Browse files
committed
Fix detekt and JS
1 parent ac5bc46 commit c882977

File tree

6 files changed

+48
-14
lines changed

6 files changed

+48
-14
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,13 @@ class SelectableSymbolProcessor(
8787
}
8888

8989
private fun processParameters(parameter: KSValueParameter, resolver: Resolver): String {
90-
val parameterClass = resolver.getClassDeclarationByName(parameter.type.resolve().declaration.qualifiedName!!)
91-
val innerColumns = if(!isPrimitive(parameterClass!!.qualifiedName!!.asString())) {
90+
val parameterClass = resolver.getClassDeclarationByName(parameter.type.resolve().declaration.qualifiedKSName)
91+
requireNotNull(parameterClass) { "Parameter class is null" }
92+
val innerColumns = if(!isPrimitive(parameterClass.qualifiedNameAsString)) {
9293
val annotation = parameterClass.annotations.getAnnotationOrNull(Selectable::class.java.simpleName)
9394
if(annotation == null) {
9495
//Could be a JSON column or a custom type, so don't throw an error
95-
logger.info("Type of parameter ${parameter.name!!.getShortName()} is not a primitive type and does not have @Selectable annotation", parameter)
96+
logger.info("Type of parameter ${parameter.nameAsString} is not a primitive type and does not have @Selectable annotation", parameter)
9697
""
9798
} else {
9899
val columns = parameterClass.primaryConstructor?.parameters
@@ -103,7 +104,7 @@ class SelectableSymbolProcessor(
103104
columns.map { processParameters(it, resolver) }.joinToString(",")
104105
}
105106
} else ""
106-
val alias = parameter.name!!.getShortName()
107+
val alias = parameter.nameAsString
107108
val columnName = parameter.annotations.getAnnotationOrNull(ColumnName::class.java.simpleName)
108109
?.arguments?.getParameterValue<String>(ColumnName.NAME_PARAMETER_NAME)
109110
val isForeign = parameter.annotations.getAnnotationOrNull(Foreign::class.java.simpleName) != null
@@ -125,15 +126,15 @@ class SelectableSymbolProcessor(
125126
innerColumns = innerColumns
126127
)
127128
checkValidCombinations(
128-
parameterName = parameter.name!!.asString(),
129+
parameterName = parameter.nameAsString,
129130
options = options,
130131
symbol = parameter
131132
)
132133
return buildColumns(
133134
options = options,
134-
parameterName = parameter.name!!.asString(),
135+
parameterName = parameter.nameAsString,
135136
symbol = parameter,
136-
qualifiedTypeName = parameterClass.qualifiedName!!.asString()
137+
qualifiedTypeName = parameterClass.simpleName.asString() //Qualified names are not supported in Kotlin JS
137138
)
138139
}
139140

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package io.github.jan.supabase.ksp
22

33
import com.google.devtools.ksp.symbol.KSAnnotation
44
import com.google.devtools.ksp.symbol.KSClassDeclaration
5+
import com.google.devtools.ksp.symbol.KSDeclaration
56
import com.google.devtools.ksp.symbol.KSValueArgument
7+
import com.google.devtools.ksp.symbol.KSValueParameter
68

79
fun Sequence<KSAnnotation>.getAnnotation(target: String): KSAnnotation {
810
return getAnnotationOrNull(target) ?:
@@ -26,4 +28,10 @@ fun <T> List<KSValueArgument>.getParameterValue(target: String): T {
2628
fun <T> List<KSValueArgument>.getParameterValueIfExist(target: String): T? {
2729
for (element in this) if (element.name?.asString() == target) (element.value as? T)?.let { return it }
2830
return null
29-
}
31+
}
32+
33+
val KSValueParameter.nameAsString: String get() = name?.asString() ?: error("Parameter name is null")
34+
35+
val KSDeclaration.qualifiedNameAsString get() = qualifiedKSName.asString()
36+
val KSDeclaration.qualifiedKSName get() = qualifiedName ?: error("Qualified name is null")
37+
val KSDeclaration.simpleNameAsString get() = simpleName.asString()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class ColumnRegistry(
88
private val map: MutableMap<String, String> = mutableMapOf()
99
) {
1010

11-
fun <T : Any> getColumns(kClass: KClass<T>): String = map[kClass.qualifiedName] ?: error("No columns registered for $kClass")
11+
fun <T : Any> getColumns(kClass: KClass<T>): String = map[kClass.simpleName] ?: error("No columns registered for $kClass")
1212

1313
fun registerColumns(qualifiedName: String, columns: String) {
1414
map[qualifiedName] = columns

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,30 @@ annotation class ApplyFunction(val function: String) {
1212

1313
companion object {
1414
@SupabaseInternal const val FUNCTION_PARAMETER_NAME = "function"
15+
16+
/**
17+
* Apply the `avg` function to a column.
18+
*/
1519
const val AVG = "avg"
20+
21+
/**
22+
* Apply the `count` function to a column.
23+
*/
1624
const val COUNT = "count"
25+
26+
/**
27+
* Apply the `max` function to a column.
28+
*/
1729
const val MAX = "max"
30+
31+
/**
32+
* Apply the `min` function to a column.
33+
*/
1834
const val MIN = "min"
35+
36+
/**
37+
* Apply the `sum` function to a column.
38+
*/
1939
const val SUM = "sum"
2040
}
2141

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import io.github.jan.supabase.annotations.SupabaseInternal
2+
import io.github.jan.supabase.postgrest.ColumnRegistry
23
import io.github.jan.supabase.postgrest.PropertyConversionMethod
34
import io.github.jan.supabase.postgrest.query.PostgrestRequestBuilder
45

56
@SupabaseInternal
6-
inline fun postgrestRequest(propertyConversionMethod: PropertyConversionMethod = PropertyConversionMethod.CAMEL_CASE_TO_SNAKE_CASE, block: PostgrestRequestBuilder.() -> Unit): PostgrestRequestBuilder {
7-
val filter = PostgrestRequestBuilder(propertyConversionMethod)
7+
inline fun postgrestRequest(
8+
propertyConversionMethod: PropertyConversionMethod = PropertyConversionMethod.CAMEL_CASE_TO_SNAKE_CASE,
9+
columnRegistry: ColumnRegistry = ColumnRegistry(),
10+
block: PostgrestRequestBuilder.() -> Unit
11+
): PostgrestRequestBuilder {
12+
val filter = PostgrestRequestBuilder(propertyConversionMethod, columnRegistry)
813
filter.block()
914
return filter
1015
}

detekt.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ comments:
7575
allowParamOnConstructorProperties: false
7676
UndocumentedPublicClass:
7777
active: true
78-
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/mingwX64Test/**', '**/macosTest/**', '**/appleTest/**', '**/linuxTest/**', '**/wasmJsTest/**']
78+
excludes: ['**/KSP/**', '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/mingwX64Test/**', '**/macosTest/**', '**/appleTest/**', '**/linuxTest/**', '**/wasmJsTest/**']
7979
searchInNestedClass: true
8080
searchInInnerClass: true
8181
searchInInnerObject: false
@@ -86,14 +86,14 @@ comments:
8686
- 'SupabaseExperimental'
8787
UndocumentedPublicFunction:
8888
active: true
89-
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/mingwX64Test/**', '**/macosTest/**', '**/appleTest/**', '**/linuxTest/**', '**/wasmJsTest/**']
89+
excludes: ['**/KSP/**', '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/mingwX64Test/**', '**/macosTest/**', '**/appleTest/**', '**/linuxTest/**', '**/wasmJsTest/**']
9090
searchProtectedFunction: false
9191
ignoreAnnotated:
9292
- 'SupabaseInternal'
9393
- 'SupabaseExperimental'
9494
UndocumentedPublicProperty:
9595
active: true
96-
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/mingwX64Test/**', '**/macosTest/**', '**/appleTest/**', '**/linuxTest/**', '**/wasmJsTest/**']
96+
excludes: ['**/KSP/**', '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/mingwX64Test/**', '**/macosTest/**', '**/appleTest/**', '**/linuxTest/**', '**/wasmJsTest/**']
9797
searchProtectedProperty: false
9898
ignoreAnnotated:
9999
- 'SupabaseInternal'

0 commit comments

Comments
 (0)