using Journal.Core.Dtos;
using Microsoft.Data.Sqlite;

namespace Journal.Core.Services.Database;

public interface IJournalDatabaseService
{
    string GetDatabasePath();
    byte[] DeriveDatabaseKey(string password);
    string BuildPragmaKeyStatement(string password);
    IReadOnlyDictionary<string, string> GetSchemaStatements();
    SqliteConnection OpenEncryptedConnection(string password);
    void EnsureSchema(SqliteConnection connection);
    JournalDatabaseStatus GetStatus(string password);
    JournalDatabaseHydrationResult HydrateWorkspace(string password);
}
