Use STJ in the demo instead of Newtonsoft.Json

This commit is contained in:
Tyrrrz
2023-02-20 03:40:51 +02:00
parent 31ae0271b9
commit dc20fe9730
6 changed files with 9 additions and 53 deletions

View File

@@ -7,7 +7,6 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -2,21 +2,4 @@
namespace CliFx.Demo.Domain; namespace CliFx.Demo.Domain;
public class Book public record Book(string Title, string Author, DateTimeOffset Published, Isbn Isbn);
{
public string Title { get; }
public string Author { get; }
public DateTimeOffset Published { get; }
public Isbn Isbn { get; }
public Book(string title, string author, DateTimeOffset published, Isbn isbn)
{
Title = title;
Author = author;
Published = published;
Isbn = isbn;
}
}

View File

@@ -2,32 +2,13 @@
namespace CliFx.Demo.Domain; namespace CliFx.Demo.Domain;
public partial class Isbn public partial record Isbn(int EanPrefix, int RegistrationGroup, int Registrant, int Publication, int CheckDigit)
{ {
public int EanPrefix { get; }
public int RegistrationGroup { get; }
public int Registrant { get; }
public int Publication { get; }
public int CheckDigit { get; }
public Isbn(int eanPrefix, int registrationGroup, int registrant, int publication, int checkDigit)
{
EanPrefix = eanPrefix;
RegistrationGroup = registrationGroup;
Registrant = registrant;
Publication = publication;
CheckDigit = checkDigit;
}
public override string ToString() => public override string ToString() =>
$"{EanPrefix:000}-{RegistrationGroup:00}-{Registrant:00000}-{Publication:00}-{CheckDigit:0}"; $"{EanPrefix:000}-{RegistrationGroup:00}-{Registrant:00000}-{Publication:00}-{CheckDigit:0}";
} }
public partial class Isbn public partial record Isbn
{ {
public static Isbn Parse(string value, IFormatProvider formatProvider) public static Isbn Parse(string value, IFormatProvider formatProvider)
{ {

View File

@@ -4,15 +4,8 @@ using System.Linq;
namespace CliFx.Demo.Domain; namespace CliFx.Demo.Domain;
public partial class Library public partial record Library(IReadOnlyList<Book> Books)
{ {
public IReadOnlyList<Book> Books { get; }
public Library(IReadOnlyList<Book> books)
{
Books = books;
}
public Library WithBook(Book book) public Library WithBook(Book book)
{ {
var books = Books.ToList(); var books = Books.ToList();
@@ -29,7 +22,7 @@ public partial class Library
} }
} }
public partial class Library public partial record Library
{ {
public static Library Empty { get; } = new(Array.Empty<Book>()); public static Library Empty { get; } = new(Array.Empty<Book>());
} }

View File

@@ -1,6 +1,6 @@
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using Newtonsoft.Json; using System.Text.Json;
namespace CliFx.Demo.Domain; namespace CliFx.Demo.Domain;
@@ -10,7 +10,7 @@ public class LibraryProvider
private void StoreLibrary(Library library) private void StoreLibrary(Library library)
{ {
var data = JsonConvert.SerializeObject(library); var data = JsonSerializer.Serialize(library);
File.WriteAllText(StorageFilePath, data); File.WriteAllText(StorageFilePath, data);
} }
@@ -21,7 +21,7 @@ public class LibraryProvider
var data = File.ReadAllText(StorageFilePath); var data = File.ReadAllText(StorageFilePath);
return JsonConvert.DeserializeObject<Library>(data) ?? Library.Empty; return JsonSerializer.Deserialize<Library>(data) ?? Library.Empty;
} }
public Book? TryGetBook(string title) => GetLibrary().Books.FirstOrDefault(b => b.Title == title); public Book? TryGetBook(string title) => GetLibrary().Books.FirstOrDefault(b => b.Title == title);

View File

@@ -23,7 +23,7 @@ By using this project or its source code, for any purpose and in any shape or fo
- You **support Ukraine's territorial integrity, including its claims over temporarily occupied territories of Crimea and Donbas** - You **support Ukraine's territorial integrity, including its claims over temporarily occupied territories of Crimea and Donbas**
- You **reject false narratives perpetuated by Russian state propaganda** - You **reject false narratives perpetuated by Russian state propaganda**
To learn more about the war and how you can help, [click here](https://tyrrrz.me). Glory to Ukraine! 🇺🇦 To learn more about the war and how you can help, [click here](https://tyrrrz.me/ukraine). Glory to Ukraine! 🇺🇦
## Install ## Install