store session to db only after ended, allow test runs without writing to db

This commit is contained in:
2022-12-14 17:21:24 +01:00
parent db5123278d
commit 8565ae77cd
5 changed files with 650 additions and 34 deletions

View File

@@ -24,8 +24,6 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
[SerializeField]
private string databasePath = "measurements.realm";
public Session Session { get; private set; }
private Realm _realm;
private void OnEnable()
@@ -45,15 +43,21 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
#region Session
public void StartSession() => _realm.Write(() => Session = _realm.Add(new Session()));
public void EndSession(float time) =>_realm.Write(() => Session.Time = time);
public void EndSession(Session session, float time)
{
session.Time = time;
_realm.Write(() =>
{
_realm.Add(session);
});
}
#endregion
#region Puzzles
public Puzzle New(PuzzleModuleDescription puzzle)
private Puzzle New(PuzzleModuleDescription puzzle)
{
Puzzle created = null;
@@ -61,10 +65,10 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
return created;
}
public Puzzle LoadOrNew(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id) ?? New(puzzle);
public Puzzle Load(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id);
private Puzzle LoadOrNew(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id) ?? New(puzzle);
private Puzzle Load(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id);
public void Delete(PuzzleModuleDescription puzzle)
{
@@ -75,7 +79,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
}
}
public void EndMeasurement(PuzzleModuleDescription puzzle, PuzzleMeasurement measurement)
public void EndMeasurement(Session session, PuzzleModuleDescription puzzle, PuzzleMeasurement measurement)
{
var found = LoadOrNew(puzzle);
@@ -85,7 +89,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
found.Measurements.Add(measurement);
// add solved puzzle to session
Session.PuzzlesSolved.Add(found);
session.PuzzlesSolved.Add(found);
});
}