electrolobzik
02/07/2024, 8:15 PMalec
02/07/2024, 8:17 PMalec
02/07/2024, 8:17 PMalec
02/07/2024, 8:18 PMalec
02/07/2024, 8:19 PMelectrolobzik
02/07/2024, 8:19 PMsqldelight {
databases {
create("Database") {
alec
02/07/2024, 8:20 PMelectrolobzik
02/07/2024, 8:20 PMalec
02/07/2024, 8:20 PMelectrolobzik
02/07/2024, 8:21 PMcreate("Database")
will be only in one place, but other parts of this setup as a plugin should be present en each module using db, right?alec
02/07/2024, 8:24 PMcreate("Database")
in multiple modules
the sub module would have
sqldelight {
create("Database") {
packageName = "com.submodule"
}
}
and the parent module would have
sqldelight {
create("Database") {
packageName = "com.parentmodule"
dependency project(":submodule")
}
}
its important that all modules have the same database name ("Database" in this case), but have different package nameselectrolobzik
02/07/2024, 8:25 PMelectrolobzik
02/07/2024, 8:34 PMfun createDatabase(driverFactory): Database
or this goes only into main app module?alec
02/07/2024, 8:35 PMelectrolobzik
02/07/2024, 8:39 PMalec
02/07/2024, 8:42 PMinterface com.submodule.Database
interface com.parentmodule.Database : com.submodule.Database
so in the submodule you reference com.submodule.Database
. You can still create a single instance of com.parentmodule.Database
as normal, but pass it to submodules where it can be used as a com.submodule.Database
since it inheritselectrolobzik
02/08/2024, 11:32 AMAshu Tyagi
05/01/2024, 3:42 PMelectrolobzik
05/01/2024, 3:43 PMAshu Tyagi
05/01/2024, 3:59 PMcore-database
module. I have created a file called TestDatabase in sqldelight/com/demo/app/core_database/TestDatabase.sq Please note that TestDatabase.sq is an empty file.
build.gradle of core-database
has the following configuration
sqldelight {
databases {
create("TestDatabase") {
packageName.set("com.core_database")
}
}
}
And then there are two feature modules
• feature-A
• feature-B
Each feature module defines it's own Table.sq files, Let's call them EntityA.sq
& EntityB.sq
.
build.gradle on feature module looks liks this:
sqldelight {
databases {
create("TestDatabase") {
packageName.set("com.featureA")
dependency(project(":shared:core-database"))
}
}
}
Now, How do I create the instance of com.featureA.TestDatabase
?
I have tried by doing com.featureA.TestDatabase(driver = getSqliteDriver())
The sqlite driver is getting created inside core_database
module.
But I'm getting the following error:
My hunch is, since we defineno such table : EntityA
com.core_database.TestDatabase.Schema
while creating AndroidSqliteDriver, It doesn't have reference to core.featureA.TestDatabase.Schema
.
Any idea how can I solve this?
Sorry for the long post. Thanks in advance.
@electrolobzikelectrolobzik
05/01/2024, 4:38 PMelectrolobzik
05/01/2024, 4:39 PMelectrolobzik
05/01/2024, 4:40 PMelectrolobzik
05/01/2024, 4:41 PMAshu Tyagi
05/01/2024, 4:46 PMelectrolobzik
05/01/2024, 4:46 PMcurioustechizen
03/20/2025, 2:28 PMcom.umbrellamodule.Database
created. I could work around it by creating a .sq
file with some dummy tables or queries, but my question is is there a better way?
I would like to have a single interface created this way because I would like to inject a singleton into all submodules and this single interface would implement all the com.submoduleX.Database
interfaces.curioustechizen
03/20/2025, 2:38 PMcom.umbrellamodule.Database
interface that implements all dependent interfaces.