diff --git a/src/Hyperledger.Aries/AskarStore/IStorageRecordService.cs b/src/Hyperledger.Aries/AskarStore/Abstractions/IStorageRecordService.cs similarity index 85% rename from src/Hyperledger.Aries/AskarStore/IStorageRecordService.cs rename to src/Hyperledger.Aries/AskarStore/Abstractions/IStorageRecordService.cs index 7f365634..4808459e 100644 --- a/src/Hyperledger.Aries/AskarStore/IStorageRecordService.cs +++ b/src/Hyperledger.Aries/AskarStore/Abstractions/IStorageRecordService.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; -namespace Hyperledger.Aries.AskarStore +namespace Hyperledger.Aries.AskarStore.Abstractions { public interface IStorageRecordService { @@ -15,5 +15,6 @@ public interface IStorageRecordService Task GetRecord(Store store, string recordType, string recordId, bool for_update = false); Task FindRecord(Store store, StorageRecord record, string tag_query, long limit, bool for_update = false); Task> FindAllRecord(Store store, StorageRecord record, string tag_query, long limit, bool for_update = false); + Task RemoveAllRecords(Store store, StorageRecord record, string tagFilter = null); } } diff --git a/src/Hyperledger.Aries/AskarStore/Abstractions/IStorageService.cs b/src/Hyperledger.Aries/AskarStore/Abstractions/IStorageService.cs new file mode 100644 index 00000000..fc4c72f3 --- /dev/null +++ b/src/Hyperledger.Aries/AskarStore/Abstractions/IStorageService.cs @@ -0,0 +1,22 @@ +using aries_askar_dotnet.Models; +using Hyperledger.Aries.AskarStore.Models; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace Hyperledger.Aries.AskarStore.Abstractions +{ + public interface IStorageService + { + Task RemoveStoreAsync(Store store); + Task OpenStoreAsync(Store store, bool provision = false); + Task GenerateRawKeyAsync(string Seed = null); + Task CreateProfileAsync(Store store, string profile = null); + Task GetProfileNameAsync(Store store); + Task GetDefaultProfileAsync(Store store); + Task SetDefaultProfileAsync(Store store, string profile); + Task RemoveProfileAsync(Store store, string profile); + Task> GetListProfilesAsync(Store store); + } +} diff --git a/src/Hyperledger.Aries/AskarStore/DefaultStorageRecordService.cs b/src/Hyperledger.Aries/AskarStore/DefaultStorageRecordService.cs index 1f0c869e..d6d17949 100644 --- a/src/Hyperledger.Aries/AskarStore/DefaultStorageRecordService.cs +++ b/src/Hyperledger.Aries/AskarStore/DefaultStorageRecordService.cs @@ -1,5 +1,6 @@ using aries_askar_dotnet.AriesAskar; using aries_askar_dotnet.Models; +using Hyperledger.Aries.AskarStore.Abstractions; using Hyperledger.Aries.AskarStore.Models; using Hyperledger.Aries.Extensions; using Newtonsoft.Json; @@ -71,11 +72,17 @@ public async Task> FindAllRecord(Store store, Storage Session session = await CreateSession(store); var items = await session.FetchAllAsync(record.Type, tag_query, limit, for_update); var rows = JsonConvert.DeserializeObject>(items.ToJson()); - var results = new List(); + var results = new List(); foreach (StorageRecord row in rows) { results.Add(row); } return results; } + + public async Task RemoveAllRecords(Store store, StorageRecord record, string tagFilter = null) + { + Session session = await CreateSession(store); + return await session.RemoveAllAsync(record.Type, tagFilter); + } } } diff --git a/src/Hyperledger.Aries/AskarStore/DefaultStorageService.cs b/src/Hyperledger.Aries/AskarStore/DefaultStorageService.cs index 5407b4e0..a793ac25 100644 --- a/src/Hyperledger.Aries/AskarStore/DefaultStorageService.cs +++ b/src/Hyperledger.Aries/AskarStore/DefaultStorageService.cs @@ -1,7 +1,13 @@ using aries_askar_dotnet.AriesAskar; using aries_askar_dotnet.Models; +using Hyperledger.Aries.AskarStore.Abstractions; +using Hyperledger.Aries.AskarStore.Models; +using Hyperledger.Aries.Extensions; +using Newtonsoft.Json.Linq; +using Stateless.Graph; using System; using System.Collections.Generic; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; @@ -9,13 +15,31 @@ namespace Hyperledger.Aries.AskarStore { public class DefaultStorageService : IStorageService { + public async Task CreateProfileAsync(Store store, string profile = null) + { + return await store.CreateProfileAsync(profile); + } + public Task GenerateRawKeyAsync(string Seed = null) { - var key = StoreApi.GenerateRawKeyAsync(Seed); - return key; + return StoreApi.GenerateRawKeyAsync(Seed); + } + + public async Task GetDefaultProfileAsync(Store store) + { + return await store.GetDefaultProfileAsync(); } - public async Task OpenStore(Store store, bool provision = false) + public async Task GetProfileNameAsync(Store store) + { + return await store.GetProfileNameAsync(); + } + public async Task RemoveProfileAsync(Store store, string profile) + { + return await store.RemoveProfileAsync(profile); + } + + public async Task OpenStoreAsync(Store store, bool provision = false) { if (provision) { @@ -33,5 +57,25 @@ public Task RemoveStoreAsync(Store store) { return StoreApi.CloseAsync(store); } + + public async Task SetDefaultProfileAsync(Store store, string profile) + { + return await store.SetDefaultProfileAsync(profile); + } + + public async Task> GetListProfilesAsync(Store store) + { + var response = await store.GetListProfilesAsync(); + var jobj = JArray.Parse(response.ToJson()); + var profileList = new List(); + foreach (var item in jobj) + { + profileList.Add(new AskarProfile + { + Name = item["profile_id"].ToString() + }); + } + return profileList; + } } } diff --git a/src/Hyperledger.Aries/AskarStore/IStorageService.cs b/src/Hyperledger.Aries/AskarStore/IStorageService.cs deleted file mode 100644 index ca2b1747..00000000 --- a/src/Hyperledger.Aries/AskarStore/IStorageService.cs +++ /dev/null @@ -1,15 +0,0 @@ -using aries_askar_dotnet.Models; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - -namespace Hyperledger.Aries.AskarStore -{ - public interface IStorageService - { - Task RemoveStoreAsync(Store store); - Task OpenStore(Store store, bool provision =false); - Task GenerateRawKeyAsync(string Seed = null); - } -} diff --git a/src/Hyperledger.Aries/AskarStore/Models/AskarProfile.cs b/src/Hyperledger.Aries/AskarStore/Models/AskarProfile.cs new file mode 100644 index 00000000..001c6110 --- /dev/null +++ b/src/Hyperledger.Aries/AskarStore/Models/AskarProfile.cs @@ -0,0 +1,13 @@ +using aries_askar_dotnet.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Hyperledger.Aries.AskarStore.Models +{ + public class AskarProfile + { + public string Name { get; set; } + public bool Opened { get; set; } + } +}