Resolve "ASCII export and import for Git" #83

Merged
thorsten merged 30 commits from 48-ascii-export-and-import-for-git into main 2023-02-12 12:55:07 +00:00
Showing only changes of commit f7186fd3cc - Show all commits

View File

@ -75,6 +75,9 @@ public sealed class DataContext : DbContext, IDataContext
IEnumerable<JsonTranslation> Translations
);
/// <summary>
/// Represents a unique identifier for a JSON export and import.
/// </summary>
internal readonly record struct JsonUniqueId(string Code, Guid UniqueId, string Prefix = "")
{
public override string ToString() => string.IsNullOrWhiteSpace(this.Prefix) ? $"{this.Code}::{this.UniqueId}" : $"{this.Prefix}::{this.Code}::{this.UniqueId}";
@ -82,6 +85,9 @@ public sealed class DataContext : DbContext, IDataContext
public static implicit operator string(JsonUniqueId id) => id.ToString();
}
/// <summary>
/// A JSON converter to serialize and deserialize JsonUniqueId instances.
/// </summary>
private sealed class JsonUniqueIdConverter : JsonConverter<JsonUniqueId>
{
public override JsonUniqueId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
@ -138,6 +144,10 @@ public sealed class DataContext : DbContext, IDataContext
JsonUniqueId TextElementUniqueId
);
/// <summary>
/// Exports this database to a JSON file.
/// </summary>
/// <param name="path">The path to the JSON file.</param>
public async Task ExportAsync(string path)
{
var jsonSettings = new JsonSerializerOptions