using Journal.Core.Dtos; using Microsoft.Data.Sqlite; namespace Journal.Core.Services.Database; public interface IJournalDatabaseService { string GetDatabasePath(string? dataDirectory = null); byte[] DeriveDatabaseKey(string password); string BuildPragmaKeyStatement(string password); IReadOnlyDictionary GetSchemaStatements(); SqliteConnection OpenEncryptedConnection(string password, string? dataDirectory = null); void EnsureSchema(SqliteConnection connection); string WriteSchemaBootstrap(string? dataDirectory = null); JournalDatabaseStatus GetStatus(string password, string? dataDirectory = null); JournalDatabaseHydrationResult HydrateWorkspace(string password, string? dataDirectory = null); }