Tasks are now stored in SQLite (DB_PATH env var, defaults to ./tasks.db). Pre-seeding runs only when the table is empty, so upgrades preserve data. This is the v1.0.0 baseline for the persistence demo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
47 lines
1.6 KiB
Scala
47 lines
1.6 KiB
Scala
// Greenfossil Thorium is optimized for Scala 3.7.1+
|
|
val scala3Version = "3.7.1"
|
|
val thoriumVersion = "0.10.10"
|
|
|
|
lazy val root = project
|
|
.in(file("."))
|
|
.settings(
|
|
name := "demoapp",
|
|
version := "0.1.0",
|
|
scalaVersion := scala3Version,
|
|
|
|
// Updated to Greenfossil group ID
|
|
libraryDependencies ++= Seq(
|
|
"com.greenfossil" %% "thorium" % thoriumVersion,
|
|
"com.typesafe" % "config" % "1.4.3",
|
|
"ch.qos.logback" % "logback-classic" % "1.5.6",
|
|
"org.xerial" % "sqlite-jdbc" % "3.47.1.0"
|
|
),
|
|
|
|
assembly / mainClass := Some("Main"),
|
|
assembly / assemblyJarName := "demoapp.jar",
|
|
|
|
// Essential merge strategy for Armeria/Netty based apps
|
|
assembly / assemblyMergeStrategy := {
|
|
// Handle Armeria/Netty service files
|
|
case PathList("META-INF", "services", _*) => MergeStrategy.concat
|
|
case PathList("META-INF", "native-image", _*) => MergeStrategy.first
|
|
|
|
// Handle module-info.class duplicates common in newer JDK libraries
|
|
case "module-info.class" => MergeStrategy.discard
|
|
case PathList(_, "module-info.class") => MergeStrategy.discard
|
|
|
|
// Standard config merging
|
|
case "reference.conf" => MergeStrategy.concat
|
|
case x if x.endsWith(".conf") => MergeStrategy.concat
|
|
|
|
// Clean up META-INF
|
|
case PathList("META-INF", xs @ _*) =>
|
|
xs match {
|
|
case "MANIFEST.MF" :: Nil => MergeStrategy.discard
|
|
case "INDEX.LIST" :: Nil => MergeStrategy.discard
|
|
case _ => MergeStrategy.first
|
|
}
|
|
case _ => MergeStrategy.first
|
|
}
|
|
)
|