Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Skip unused adapters #3162

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

Merged
merged 2 commits into from
May 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ package app.cash.sqldelight.core.compiler

import app.cash.sqldelight.core.SqlDelightException
import app.cash.sqldelight.core.SqlDelightFileIndex
import app.cash.sqldelight.core.compiler.integration.adapterProperty
import app.cash.sqldelight.core.compiler.integration.needsAdapters
import app.cash.sqldelight.core.lang.DATABASE_SCHEMA_TYPE
import app.cash.sqldelight.core.lang.DRIVER_NAME
import app.cash.sqldelight.core.lang.DRIVER_TYPE
Expand Down Expand Up @@ -118,14 +116,11 @@ internal class DatabaseGenerator(
private fun forAdapters(
block: (PropertySpec) -> Unit
) {
val queriesFile = sourceFolders
sourceFolders
.flatMap { it.queryFiles() }
.flatMap { it.requiredAdapters }
Copy link
Contributor Author

@eygraber eygraber Apr 27, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AlecStrong testing something out here because I can't figure out why the integration tests are failing.

In the current code, only the first SqlDelightQueriesFile is used. Is that a bug, or is everything concatted into one file?

.sortedBy { it.name }
.firstOrNull() ?: return
queriesFile.tables(true)
.toSet()
.mapNotNull { if (it.needsAdapters()) it.adapterProperty() else null }
.sortedBy { it.name }
.forEach(block)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,84 @@ class QueriesTypeTest {
)
}

@Test fun `unused adapters are not passed to the database constructor`() {
val result = FixtureCompiler.compileSql(
"""
|import kotlin.Int;
|
|CREATE TABLE data (
| id TEXT PRIMARY KEY,
| value INTEGER AS Int NOT NULL
|);
""".trimMargin(),
temporaryFolder, fileName = "Data.sq"
)

val database = File(result.outputDirectory, "com/example/testmodule/TestDatabaseImpl.kt")
assertThat(result.compilerOutput).containsKey(database)
assertThat(result.compilerOutput[database].toString()).isEqualTo(
"""
|package com.example.testmodule
|
|import app.cash.sqldelight.TransacterImpl
|import app.cash.sqldelight.db.SqlDriver
|import com.example.DataQueries
|import com.example.TestDatabase
|import kotlin.Int
|import kotlin.Unit
|import kotlin.reflect.KClass
|
|internal val KClass<TestDatabase>.schema: SqlDriver.Schema
| get() = TestDatabaseImpl.Schema
|
|internal fun KClass<TestDatabase>.newInstance(driver: SqlDriver): TestDatabase =
| TestDatabaseImpl(driver)
|
|private class TestDatabaseImpl(
| driver: SqlDriver,
|) : TransacterImpl(driver), TestDatabase {
| public override val dataQueries: DataQueries = DataQueries(driver)
|
| public object Schema : SqlDriver.Schema {
| public override val version: Int
| get() = 1
|
| public override fun create(driver: SqlDriver): Unit {
| driver.execute(null, ""${'"'}
| |CREATE TABLE data (
| | id TEXT PRIMARY KEY,
| | value INTEGER NOT NULL
| |)
| ""${'"'}.trimMargin(), 0)
| }
|
| public override fun migrate(
| driver: SqlDriver,
| oldVersion: Int,
| newVersion: Int,
| ): Unit {
| }
| }
|}
|""".trimMargin()
)

val dataQueries = File(result.outputDirectory, "com/example/DataQueries.kt")
assertThat(result.compilerOutput).containsKey(dataQueries)
assertThat(result.compilerOutput[dataQueries].toString()).isEqualTo(
"""
|package com.example
|
|import app.cash.sqldelight.TransacterImpl
|import app.cash.sqldelight.db.SqlDriver
|
|public class DataQueries(
| private val driver: SqlDriver,
|) : TransacterImpl(driver)
|""".trimMargin()
)
}

@Test fun `queries file is generated properly via compilation1a`() {
val result = FixtureCompiler.compileSql(
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ class QueryWrapperTest {
| _id INTEGER NOT NULL PRIMARY KEY,
| value TEXT AS List<String>
|);
|
|query:
|SELECT value FROM test_table
|UNION ALL
|SELECT value FROM test_table2;
""".trimMargin(),
tempFolder
)
Expand Down Expand Up @@ -132,7 +137,8 @@ class QueryWrapperTest {
| test_table2Adapter: Test_table2.Adapter,
| test_tableAdapter: Test_table.Adapter,
|) : TransacterImpl(driver), TestDatabase {
| public override val testQueries: TestQueries = TestQueries(driver)
| public override val testQueries: TestQueries = TestQueries(driver, test_tableAdapter,
| test_table2Adapter)
|
| public object Schema : SqlDriver.Schema {
| public override val version: Int
Expand Down