Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion source/LiteDbExplorer.Core/LiteDbExplorer.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
</PackageReference>
<PackageReference Include="Humanizer.Core" Version="2.7.9" />
<PackageReference Include="JetBrains.Annotations" Version="2019.1.3" />
<PackageReference Include="LiteDB" Version="4.1.4" />
<PackageReference Include="LiteDB" Version="5.0.8" />
<PackageReference Include="PropertyChanged.Fody" Version="3.2.6" />
<PackageReference Include="PropertyChanging.Fody" Version="1.30.0" />
<PackageReference Include="Serilog" Version="2.9.0" />
Expand Down
4 changes: 2 additions & 2 deletions source/LiteDbExplorer.Core/Store/CollectionReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public CollectionReference(string name, DatabaseReference database)
[AlsoNotifyFor(nameof(LiteCollection))]
public DatabaseReference Database { get; set; }

public LiteCollection<BsonDocument> LiteCollection => Database.LiteDatabase.GetCollection(Name);
public ILiteCollection<BsonDocument> LiteCollection => Database.LiteDatabase.GetCollection(Name);

public ObservableCollection<DocumentReference> Items
{
Expand Down Expand Up @@ -120,7 +120,7 @@ public IReadOnlyList<string> GetDistinctKeys(FieldSortOrder sortOrder = FieldSor
return Items.SelectAllDistinctKeys(sortOrder).ToList();
}

protected virtual IEnumerable<DocumentReference> GetAllItem(LiteCollection<BsonDocument> liteCollection)
protected virtual IEnumerable<DocumentReference> GetAllItem(ILiteCollection<BsonDocument> liteCollection)
{
/*if (IsFilesOrChunks)
{
Expand Down
58 changes: 24 additions & 34 deletions source/LiteDbExplorer.Core/Store/DatabaseReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ public sealed class DatabaseReference : ReferenceNode<DatabaseReference>
private ObservableCollection<CollectionReference> _collections;
private bool _isDisposing;

public enum PasswordStatus
{
NotSet = 0,
Set = 1
}

public DatabaseReference([NotNull] DatabaseConnectionOptions options)
{
if (options == null)
Expand All @@ -33,7 +39,7 @@ public DatabaseReference([NotNull] DatabaseConnectionOptions options)

var connectionString = options.GetConnectionString();

LiteDatabase = new LiteDatabase(connectionString, log: GetLogger());
LiteDatabase = new LiteDatabase(connectionString);

UpdateCollections();

Expand All @@ -50,8 +56,8 @@ public DatabaseReference([NotNull] DatabaseConnectionOptions options)

public int UserVersion
{
get => LiteDatabase.Engine.UserVersion;
set => LiteDatabase.Engine.UserVersion = (ushort) value;
get => LiteDatabase.UserVersion;
set => LiteDatabase.UserVersion = (ushort)value;
}

public ObservableCollection<CollectionReferenceLookup> CollectionsLookup { get; private set; }
Expand Down Expand Up @@ -157,24 +163,24 @@ public bool ContainsCollection(string name)
return Collections.Any(p => p.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
}

public long ShrinkDatabase()
public long RebuildDatabase()
{
return LiteDatabase.Shrink();
return LiteDatabase.Rebuild();
}

public long ShrinkDatabase(string password)
public long RebuildDatabase(string password)
{
return LiteDatabase.Shrink(password);
return LiteDatabase.Rebuild(new LiteDB.Engine.RebuildOptions { Password = password });
}

public IList<BsonValue> RunCommand(string command)
{
return LiteDatabase.Engine.Run(command);
return LiteDatabase.Execute(command).ToList();
}

public BsonDocument InternalDatabaseInfo()
{
return LiteDatabase.Engine.Info();
return LiteDatabase.Mapper.ToDocument(typeof(object), new { LiteDatabase.Timeout, LiteDatabase.UserVersion, LiteDatabase.UtcDate, LiteDatabase.LimitSize, LiteDatabase.CheckpointSize });
}

public void BeforeDispose()
Expand All @@ -189,24 +195,18 @@ public void BeforeDispose()
BroadcastChanges(ReferenceNodeChangeAction.Dispose, this);
}

/// <summary>
/// <a href="https://stackoverflow.com/questions/57139624/how-to-check-if-litedb-database-file-has-password-or-not-in-c"></a>
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool IsDbPasswordProtected(string path)
{
using (var db = new LiteDatabase(path))
{
try
{
db.GetCollectionNames();
return false;
}
catch (LiteException e)
{
if (e.ErrorCode == LiteException.DATABASE_WRONG_PASSWORD || e.Message.Contains("password"))
{
return true;
}

throw;
}
using (FileStream fs = File.OpenRead(path))
{
var ss= fs.ReadByte() ;
return ss != (byte)PasswordStatus.NotSet;
}
}

Expand Down Expand Up @@ -271,16 +271,6 @@ private void BroadcastChanges(ReferenceNodeChangeAction action, IEnumerable<Coll
}
}

private Logger GetLogger()
{
if (_enableLog)
{
return new Logger(Logger.FULL, log => { Log.ForContext("DatabaseName", Name).Information(log); });
}

return null;
}

private void UpdateCollections()
{
// TODO: Bind database tree and lazy load CollectionReference
Expand Down
8 changes: 4 additions & 4 deletions source/LiteDbExplorer.Core/Store/DocumentReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,14 @@ protected override void Dispose(bool disposing)
Collection = null;
}

public string Serialize(bool pretty = false, bool decoded = true)
public string Serialize(bool decoded = true)
{
return decoded ? LiteDocument.SerializeDecoded(true) : JsonSerializer.Serialize(LiteDocument, pretty, false);
return decoded ? LiteDocument.SerializeDecoded() : JsonSerializer.Serialize(LiteDocument);
}

public void Serialize(TextWriter writer, bool pretty = false)
public void Serialize(TextWriter writer)
{
JsonSerializer.Serialize(LiteDocument, writer, pretty, false);
JsonSerializer.Serialize(LiteDocument, writer);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ public BsonArray Value
}
}

public string Serialize(bool pretty = false, bool writeBinary = true)
public string Serialize()
{
return JsonSerializer.Serialize(Value, pretty, writeBinary);
return JsonSerializer.Serialize(Value);
}

public void Serialize(TextWriter writer, bool pretty = false, bool writeBinary = true)
public void Serialize(TextWriter writer)
{
JsonSerializer.Serialize(Value, writer, pretty, writeBinary);
JsonSerializer.Serialize(Value, writer);
}
}
}
6 changes: 3 additions & 3 deletions source/LiteDbExplorer.Core/Store/FileCollectionReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public FileCollectionReference(string name, DatabaseReference database) : base(n
{
}

protected override IEnumerable<DocumentReference> GetAllItem(LiteCollection<BsonDocument> liteCollection)
protected override IEnumerable<DocumentReference> GetAllItem(ILiteCollection<BsonDocument> liteCollection)
{
return LiteCollection.FindAll().Select(bsonDocument => new FileDocumentReference(bsonDocument, this));
}
Expand All @@ -24,7 +24,7 @@ public override void RemoveDocument(DocumentReference document)
public DocumentReference AddFile(string id, string path)
{
var file = Database.LiteDatabase.FileStorage.Upload(id, path);
var newDoc = new DocumentReference(file.AsDocument, this);
var newDoc = new DocumentReference(Database.LiteDatabase.Mapper.ToDocument(file), this);
Items.Add(newDoc);
return newDoc;
}
Expand All @@ -35,7 +35,7 @@ public void SaveFile(DocumentReference document, string path)
file.SaveAs(path);
}

public LiteFileInfo GetFileObject(DocumentReference document)
public LiteFileInfo<string> GetFileObject(DocumentReference document)
{
return Database.LiteDatabase.FileStorage.FindById(document.LiteDocument["_id"]);
}
Expand Down
2 changes: 1 addition & 1 deletion source/LiteDbExplorer.Core/Store/FileDocumentReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public void SaveFile(string path)
file.SaveAs(path);
}

public LiteFileInfo GetFileObject()
public LiteFileInfo<string> GetFileObject()
{
return Collection.Database.LiteDatabase.FileStorage.FindById(LiteDocument["_id"]);
}
Expand Down
4 changes: 2 additions & 2 deletions source/LiteDbExplorer.Core/Store/JsonSerializerExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ namespace LiteDbExplorer.Core
public static class JsonSerializerExtension
{

public static string SerializeDecoded(this BsonValue bsonValue, bool pretty = false)
public static string SerializeDecoded(this BsonValue bsonValue)
{
var json = JsonSerializer.Serialize(bsonValue, pretty, false);
var json = JsonSerializer.Serialize(bsonValue);

return EncodingExtensions.DecodeEncodedNonAsciiCharacters(json);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public static string ToDisplayName(this DocumentReference documentReference)
return string.Empty;
}

return string.Join(" - ", documentReference.Collection?.Name, documentReference.LiteDocument["_id"].AsString);
return string.Join(" - ", documentReference.Collection?.Name, documentReference.LiteDocument["_id"].RawValue.ToString());
}

public static string ToDisplayValue(this BsonValue bsonValue, int? maxLength = null, ICultureFormat cultureFormat = null)
Expand Down
14 changes: 7 additions & 7 deletions source/LiteDbExplorer.Core/Store/QueryResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,31 +38,31 @@ public QueryResult(IEnumerable<BsonValue> bsonValues, ICultureFormat cultureForm

public DataTable DataTable => Source.ToDataTable(_cultureFormat);

public string Serialize(bool pretty = false, bool decoded = true)
public string Serialize(bool decoded = true)
{
var json = string.Empty;

if (IsArray)
{
json = JsonSerializer.Serialize(AsArray, pretty, false);
json = JsonSerializer.Serialize(AsArray);
}
else if (IsDocument)
{
json = JsonSerializer.Serialize(AsDocument, pretty, false);
json = JsonSerializer.Serialize(AsDocument);
}

return decoded ? EncodingExtensions.DecodeEncodedNonAsciiCharacters(json) : json;
}

public void Serialize(TextWriter writer, bool pretty = false)
public void Serialize(TextWriter writer)
{
if (IsArray)
{
JsonSerializer.Serialize(AsArray, writer, pretty, false);
JsonSerializer.Serialize(AsArray, writer);
}
else if (IsDocument)
{
JsonSerializer.Serialize(AsDocument, writer, pretty, false);
JsonSerializer.Serialize(AsDocument, writer);
}
}

Expand Down
4 changes: 2 additions & 2 deletions source/LiteDbExplorer.Core/Types/IJsonSerializerProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LiteDbExplorer.Core
{
public interface IJsonSerializerProvider
{
string Serialize(bool pretty = false, bool decoded = true);
void Serialize(TextWriter writer, bool pretty = false);
string Serialize(bool decoded);
void Serialize(TextWriter writer);
}
}
1 change: 1 addition & 0 deletions source/LiteDbExplorer/App.config
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<add key="ReleasesUrl" value="https://github.com/julianpaulozzi/LiteDbExplorer/releases" />
<add key="HomepageUrl" value="https://github.com/julianpaulozzi/LiteDbExplorer" />
<add key="PipeEndpoint" value="net.pipe://localhost/LiteDBExplorerPipe" />
<add key="Version" value="5" />
</appSettings>
<userSettings>
<LiteDbExplorer.Properties.Settings>
Expand Down
4 changes: 2 additions & 2 deletions source/LiteDbExplorer/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ private void CreateJumpList()
var openDatabaseTask = new JumpTask
{
Title = "Open database",
Description = "Open LiteDB v4 database file",
Description = $"Open LiteDB database file, version {Config.Version}",
ApplicationPath = applicationPath,
Arguments = @"open"
};
Expand All @@ -133,7 +133,7 @@ private void CreateJumpList()
var newDatabaseTask = new JumpTask
{
Title = "New database",
Description = "Create and open new LiteDB v4 database",
Description = $"Create and open new LiteDB database, version {Config.Version}",
ApplicationPath = applicationPath,
Arguments = @"new"
};
Expand Down
2 changes: 2 additions & 0 deletions source/LiteDbExplorer/Application/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public static class Config

public static string PipeEndpoint => ConfigurationManager.AppSettings["PipeEndpoint"];

public static string Version => ConfigurationManager.AppSettings["Version"];

public static bool IsPortable => !File.Exists(Paths.UninstallerPath);

public static void ConfigureLogger()
Expand Down
2 changes: 1 addition & 1 deletion source/LiteDbExplorer/Controls/BsonValueEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ void AddValueChangedListener(FrameworkElement associatedObject, DependencyProper
{
var text = new TextBox
{
Text = editorContext.BindingValue.AsString,
Text = editorContext.BindingValue.ToDisplayValue(),
IsReadOnly = true,
VerticalAlignment = VerticalAlignment.Center,
};
Expand Down
2 changes: 1 addition & 1 deletion source/LiteDbExplorer/Controls/CollectionListView.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ public void FindClear()

private bool ItemMatchesSearch(string matchTerm, DocumentReference document, bool matchCase)
{
var stringData = document.Serialize(false, false);
var stringData = document.Serialize(false);

if (matchCase)
{
Expand Down
Loading