mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 21:35:42 +00:00
Default Eagle history backend to Postgres (#6982)
This commit is contained in:
@@ -431,7 +431,7 @@ jobs:
|
||||
export FASTMAIL_API_TOKEN="${FASTMAIL_API_TOKEN}"
|
||||
export FASTMAIL_FROM_EMAIL="${FASTMAIL_FROM_EMAIL}"
|
||||
export FASTMAIL_FROM_NAME="${FASTMAIL_FROM_NAME}"
|
||||
export EAGLE_HISTORY_BACKEND="${EAGLE_HISTORY_BACKEND:-sqlite}"
|
||||
export EAGLE_HISTORY_BACKEND="${EAGLE_HISTORY_BACKEND:-postgres}"
|
||||
export EAGLE_POSTGRES_HOST="${EAGLE_POSTGRES_HOST}"
|
||||
export EAGLE_POSTGRES_PORT="${EAGLE_POSTGRES_PORT}"
|
||||
export EAGLE_POSTGRES_DATABASE="${EAGLE_POSTGRES_DATABASE}"
|
||||
|
||||
@@ -32,7 +32,7 @@ services:
|
||||
DO_SPACES_ENDPOINT: "${DO_SPACES_ENDPOINT:-https://sfo3.digitaloceanspaces.com}"
|
||||
DO_SPACES_ACCESS_KEY: "${DO_SPACES_ACCESS_KEY:-}"
|
||||
DO_SPACES_SECRET_KEY: "${DO_SPACES_SECRET_KEY:-}"
|
||||
EAGLE_HISTORY_BACKEND: "${EAGLE_HISTORY_BACKEND:-sqlite}"
|
||||
EAGLE_HISTORY_BACKEND: "${EAGLE_HISTORY_BACKEND:-postgres}"
|
||||
EAGLE_POSTGRES_HOST: "${EAGLE_POSTGRES_HOST:-}"
|
||||
EAGLE_POSTGRES_PORT: "${EAGLE_POSTGRES_PORT:-}"
|
||||
EAGLE_POSTGRES_DATABASE: "${EAGLE_POSTGRES_DATABASE:-}"
|
||||
@@ -88,7 +88,7 @@ services:
|
||||
DO_SPACES_ENDPOINT: "${DO_SPACES_ENDPOINT:-https://sfo3.digitaloceanspaces.com}"
|
||||
DO_SPACES_ACCESS_KEY: "${DO_SPACES_ACCESS_KEY:-}"
|
||||
DO_SPACES_SECRET_KEY: "${DO_SPACES_SECRET_KEY:-}"
|
||||
EAGLE_HISTORY_BACKEND: "${EAGLE_HISTORY_BACKEND:-sqlite}"
|
||||
EAGLE_HISTORY_BACKEND: "${EAGLE_HISTORY_BACKEND:-postgres}"
|
||||
EAGLE_POSTGRES_HOST: "${EAGLE_POSTGRES_HOST:-}"
|
||||
EAGLE_POSTGRES_PORT: "${EAGLE_POSTGRES_PORT:-}"
|
||||
EAGLE_POSTGRES_DATABASE: "${EAGLE_POSTGRES_DATABASE:-}"
|
||||
|
||||
@@ -18,7 +18,7 @@ private[service] object HistoryBackendConfig {
|
||||
.get(HistoryBackendEnv)
|
||||
.map(_.trim.toLowerCase)
|
||||
.filter(_.nonEmpty)
|
||||
.getOrElse(SqliteValue)
|
||||
.getOrElse(PostgresValue)
|
||||
else settingValue
|
||||
}
|
||||
|
||||
|
||||
@@ -151,6 +151,7 @@ scala_test(
|
||||
"//src/main/scala/net/eagle0/eagle/client_text:sqlite_client_text_store",
|
||||
"//src/main/scala/net/eagle0/eagle/client_text:text_generation_result",
|
||||
"//src/main/scala/net/eagle0/eagle/library:engine",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:history_backend",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero/concrete",
|
||||
|
||||
@@ -16,6 +16,7 @@ import net.eagle0.eagle.auth.NoOpUserService
|
||||
import net.eagle0.eagle.client_text.{PregeneratedClientTextStore, SqliteClientTextStore}
|
||||
import net.eagle0.eagle.internal.game_parameters.GameParameters
|
||||
import net.eagle0.eagle.library.{Engine, EngineAndResults}
|
||||
import net.eagle0.eagle.library.settings.HistoryBackend
|
||||
import net.eagle0.eagle.model.state.{GameType, RoundPhase}
|
||||
import net.eagle0.eagle.model.state.game_state.GameState
|
||||
import net.eagle0.eagle.model.state.run_status.RunStatus
|
||||
@@ -74,6 +75,7 @@ class GamesManagerTest extends AnyFlatSpec with MockFactory with Matchers with B
|
||||
private val mockEngine = mock[Engine]
|
||||
private val mockHistory = mock[FullGameHistory]
|
||||
private val mockPersister = mock[Persister]
|
||||
private var previousHistoryBackend = "env"
|
||||
|
||||
private val greatPerson1 =
|
||||
GreatPersonWithBackstory(
|
||||
@@ -109,10 +111,14 @@ class GamesManagerTest extends AnyFlatSpec with MockFactory with Matchers with B
|
||||
|
||||
val dir = new File("/tmp/eagle0")
|
||||
|
||||
override def beforeEach(): Unit =
|
||||
override def beforeEach(): Unit = {
|
||||
previousHistoryBackend = HistoryBackend.stringValue
|
||||
HistoryBackend.setStringValue("sqlite")
|
||||
mockRandom.reset()
|
||||
}
|
||||
|
||||
override def afterEach(): Unit = {
|
||||
HistoryBackend.setStringValue(previousHistoryBackend)
|
||||
// Clean up SQLite files created during tests
|
||||
val saveDir = new File(SaveDirectory.saveDirectoryForGame(gameId))
|
||||
if saveDir.exists() then {
|
||||
|
||||
@@ -43,6 +43,7 @@ scala_test(
|
||||
deps = [
|
||||
"//src/main/protobuf/net/eagle0/common:tutorial_battle_config_scala_proto",
|
||||
"//src/main/scala/net/eagle0/eagle/library:engine",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:history_backend",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings/loaders:battalion_type_loader",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:battalion_type",
|
||||
"//src/main/scala/net/eagle0/eagle/service/new_game_creation:game_parameters_utils",
|
||||
|
||||
+2
@@ -7,6 +7,7 @@ import scala.util.{Failure, Try}
|
||||
|
||||
import net.eagle0.common.tutorial_battle_config.TutorialTrigger
|
||||
import net.eagle0.eagle.library.settings.loaders.BattalionTypeLoader
|
||||
import net.eagle0.eagle.library.settings.HistoryBackend
|
||||
import net.eagle0.eagle.service.persistence.Persister
|
||||
import net.eagle0.util.hero_generation.LoadedHero
|
||||
import org.scalatest.flatspec.AnyFlatSpec
|
||||
@@ -19,6 +20,7 @@ class TutorialGameCreationTest extends AnyFlatSpec with Matchers {
|
||||
// sandbox-writable temp directory. SaveDirectory reads the system property on first access (it's a `val`), so this
|
||||
// must run before any code touches SaveDirectory.
|
||||
System.setProperty("eagle.save.dir", Files.createTempDirectory("tutorial_game_creation_test").toString)
|
||||
HistoryBackend.setStringValue("sqlite")
|
||||
|
||||
// No-op persister for testing - we don't need actual persistence
|
||||
private object NoOpPersister extends Persister {
|
||||
|
||||
@@ -61,6 +61,7 @@ scala_test(
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/library:engine",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:history_backend",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings/loaders:battalion_type_loader",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/changed_province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:action_result_concrete",
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.nio.file.Files
|
||||
import scala.util.{Failure, Try}
|
||||
|
||||
import net.eagle0.eagle.library.settings.loaders.BattalionTypeLoader
|
||||
import net.eagle0.eagle.library.settings.HistoryBackend
|
||||
import net.eagle0.eagle.model.action_result.changed_province.concrete.ChangedProvinceC
|
||||
import net.eagle0.eagle.model.action_result.concrete.{ActionResultC, ChangedHeroC, StatAbsolute}
|
||||
import net.eagle0.eagle.model.state.battalion.concrete.BattalionC
|
||||
@@ -28,6 +29,7 @@ class EagleAppearsActionTest extends AnyFlatSpec with Matchers {
|
||||
// See note in TutorialGameCreationTest — SqliteHistory writes game.db under SaveDirectory.saveDirectoryForGame, so
|
||||
// point it at a sandbox-writable temp directory before any code touches SaveDirectory.
|
||||
System.setProperty("eagle.save.dir", Files.createTempDirectory("eagle_appears_action_test").toString)
|
||||
HistoryBackend.setStringValue("sqlite")
|
||||
|
||||
private object NoOpPersister extends Persister {
|
||||
override def save(key: String, bytes: Array[Byte]): Boolean = true
|
||||
|
||||
Reference in New Issue
Block a user