Updated Syncer
Removed reading database from file when starting up. Changed writting to hand-written write, instead of using WriteAllLines() static function on File.
This commit is contained in:
parent
73a54b91ff
commit
7128bfad65
1 changed files with 11 additions and 4 deletions
|
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -40,7 +41,6 @@ public class Syncer<T> : ISyncer where T : class, IDataModel, new()
|
||||||
_dbName = dbName;
|
_dbName = dbName;
|
||||||
_restEndpoint = restEndpoint;
|
_restEndpoint = restEndpoint;
|
||||||
FetchDatabase().Wait();
|
FetchDatabase().Wait();
|
||||||
ReadDatabase().Wait();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsDirty() => _isDirty;
|
public bool IsDirty() => _isDirty;
|
||||||
|
|
@ -84,11 +84,11 @@ public class Syncer<T> : ISyncer where T : class, IDataModel, new()
|
||||||
|
|
||||||
if (data.Equals(entry)) continue;
|
if (data.Equals(entry)) continue;
|
||||||
|
|
||||||
Console.WriteLine($"Updated Entry for {_dbName}");
|
Console.WriteLine($"Updated Entry for {_dbName} - {entry.Id()}");
|
||||||
_entries.RemoveAll(x => x.EqualId(entry.Id()));
|
_entries.RemoveAll(x => x.EqualId(entry.Id()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Console.WriteLine($"New Entry for {_dbName}");
|
Console.WriteLine($"New Entry for {_dbName} - {entry.Id()}");
|
||||||
_entries.Add(entry);
|
_entries.Add(entry);
|
||||||
_isDirty = true;
|
_isDirty = true;
|
||||||
}
|
}
|
||||||
|
|
@ -98,6 +98,7 @@ public class Syncer<T> : ISyncer where T : class, IDataModel, new()
|
||||||
{
|
{
|
||||||
if (dbName != _dbName)
|
if (dbName != _dbName)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_syncing)
|
if (_syncing)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -137,7 +138,13 @@ public class Syncer<T> : ISyncer where T : class, IDataModel, new()
|
||||||
var json = new List<string>();
|
var json = new List<string>();
|
||||||
foreach (var entry in _entries)
|
foreach (var entry in _entries)
|
||||||
json.Add(entry.JsonData());
|
json.Add(entry.JsonData());
|
||||||
File.WriteAllLines(_dbPath, json);
|
using (var fh = File.OpenWrite(_dbPath))
|
||||||
|
{
|
||||||
|
foreach (var line in json)
|
||||||
|
fh.Write(Encoding.UTF8.GetBytes(line + "\n"));
|
||||||
|
fh.Flush();
|
||||||
|
fh.Close();
|
||||||
|
}
|
||||||
Console.WriteLine($"Updated {_dbPath}.");
|
Console.WriteLine($"Updated {_dbPath}.");
|
||||||
_isDirty = false;
|
_isDirty = false;
|
||||||
_syncing = false;
|
_syncing = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue