diff --git a/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/SqlDelightEnvironment.kt b/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/SqlDelightEnvironment.kt index 34fdd472e41..4c355564363 100644 --- a/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/SqlDelightEnvironment.kt +++ b/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/SqlDelightEnvironment.kt @@ -174,6 +174,7 @@ class SqlDelightEnvironment( output = writer, includeAll = true, ) + SqlDelightCompiler.writeImplementations(module, migrationFile, moduleName, writer) } logger("----- END ${migrationFile.name} in $timeTaken ms ------") } diff --git a/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/compiler/SqlDelightCompiler.kt b/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/compiler/SqlDelightCompiler.kt index 96f5c092646..87f8a31798f 100644 --- a/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/compiler/SqlDelightCompiler.kt +++ b/sqldelight-compiler/src/main/kotlin/app/cash/sqldelight/core/compiler/SqlDelightCompiler.kt @@ -72,7 +72,7 @@ object SqlDelightCompiler { fun writeImplementations( module: Module, - sourceFile: SqlDelightQueriesFile, + sourceFile: SqlDelightFile, implementationFolder: String, output: FileAppender, ) { diff --git a/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/build.gradle b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/build.gradle new file mode 100644 index 00000000000..22d6f463bc8 --- /dev/null +++ b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/build.gradle @@ -0,0 +1,26 @@ +buildscript { + apply from: "${projectDir.absolutePath}/../buildscript.gradle" +} + +apply plugin: 'org.jetbrains.kotlin.jvm' +apply plugin: 'app.cash.sqldelight' + +repositories { + maven { + url "file://${projectDir.absolutePath}/../../../../build/localMaven" + } + mavenCentral() +} + +sqldelight { + NoQueries { + packageName = "app.cash.sqldelight.derive.schema.from.migrations.no.queries" + deriveSchemaFromMigrations = true + } +} + +dependencies { + implementation libs.sqliteJdbc + implementation "app.cash.sqldelight:sqlite-driver:${app.cash.sqldelight.VersionKt.VERSION}" + implementation libs.truth +} diff --git a/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/settings.gradle b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/settings.gradle new file mode 100644 index 00000000000..a854f63b765 --- /dev/null +++ b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/settings.gradle @@ -0,0 +1,9 @@ +apply from: "../settings.gradle" + +rootProject.name = 'derive-schema-no-queries' + +buildCache { + local { + directory = new File(rootDir, 'build-cache') + } +} diff --git a/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/src/main/sqldelight/app/cash/sqldelight/1.sqm b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/src/main/sqldelight/app/cash/sqldelight/1.sqm new file mode 100644 index 00000000000..1f19037cd71 --- /dev/null +++ b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/src/main/sqldelight/app/cash/sqldelight/1.sqm @@ -0,0 +1,5 @@ +CREATE TABLE person ( + _id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL +); diff --git a/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/src/test/java/app/cash/sqldelight/integration/IntegrationTests.kt b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/src/test/java/app/cash/sqldelight/integration/IntegrationTests.kt new file mode 100644 index 00000000000..c7339fb7e8a --- /dev/null +++ b/sqldelight-gradle-plugin/src/test/derive-schema-no-queries/src/test/java/app/cash/sqldelight/integration/IntegrationTests.kt @@ -0,0 +1,18 @@ +package app.cash.sqldelight.integration + +import app.cash.sqldelight.derive.schema.from.migrations.no.queries.NoQueries +import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver +import org.junit.After +import org.junit.Test +import java.io.File + +class IntegrationTests { + @After fun after() { + File("test.db").delete() + } + + @Test fun `creating db works without query files`() { + val database = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY) + NoQueries.Schema.create(database) + } +} diff --git a/sqldelight-gradle-plugin/src/test/kotlin/app/cash/sqldelight/integrations/IntegrationTest.kt b/sqldelight-gradle-plugin/src/test/kotlin/app/cash/sqldelight/integrations/IntegrationTest.kt index 62243cde45f..5109d40b186 100644 --- a/sqldelight-gradle-plugin/src/test/kotlin/app/cash/sqldelight/integrations/IntegrationTest.kt +++ b/sqldelight-gradle-plugin/src/test/kotlin/app/cash/sqldelight/integrations/IntegrationTest.kt @@ -282,4 +282,13 @@ class IntegrationTest { val result = runner.build() assertThat(result.output).contains("BUILD SUCCESSFUL") } + + @Test fun `deriveSchemaFromMigrations creates a db without queries`() { + val runner = GradleRunner.create() + .withCommonConfiguration(File("src/test/derive-schema-no-queries")) + .withArguments("clean", "build", "--stacktrace") + + val result = runner.build() + assertThat(result.output).contains("BUILD SUCCESSFUL") + } }