1
0
mirror of https://github.com/bitwarden/server synced 2025-12-30 15:14:02 +00:00

collection groups management

This commit is contained in:
Kyle Spearrin
2017-05-11 12:22:14 -04:00
parent 2b8db4d1ed
commit d7f9977382
9 changed files with 38 additions and 27 deletions

View File

@@ -2,17 +2,18 @@
using System.Threading.Tasks;
using Bit.Core.Models.Table;
using System.Collections.Generic;
using Bit.Core.Models.Data;
namespace Bit.Core.Repositories
{
public interface ICollectionRepository : IRepository<Collection, Guid>
{
Task<int> GetCountByOrganizationIdAsync(Guid organizationId);
Task<Tuple<Collection, ICollection<Guid>>> GetByIdWithGroupsAsync(Guid id);
Task<Tuple<Collection, ICollection<SelectionReadOnly>>> GetByIdWithGroupsAsync(Guid id);
Task<ICollection<Collection>> GetManyByOrganizationIdAsync(Guid organizationId);
Task<ICollection<Collection>> GetManyByUserIdAsync(Guid userId);
Task CreateAsync(Collection obj, IEnumerable<Guid> groupIds);
Task ReplaceAsync(Collection obj, IEnumerable<Guid> groupIds);
Task CreateAsync(Collection obj, IEnumerable<SelectionReadOnly> groups);
Task ReplaceAsync(Collection obj, IEnumerable<SelectionReadOnly> groups);
}
}

View File

@@ -8,6 +8,7 @@ using Dapper;
using System.Linq;
using Newtonsoft.Json;
using Bit.Core.Utilities;
using Bit.Core.Models.Data;
namespace Bit.Core.Repositories.SqlServer
{
@@ -34,7 +35,7 @@ namespace Bit.Core.Repositories.SqlServer
}
}
public async Task<Tuple<Collection, ICollection<Guid>>> GetByIdWithGroupsAsync(Guid id)
public async Task<Tuple<Collection, ICollection<SelectionReadOnly>>> GetByIdWithGroupsAsync(Guid id)
{
using(var connection = new SqlConnection(ConnectionString))
{
@@ -44,9 +45,9 @@ namespace Bit.Core.Repositories.SqlServer
commandType: CommandType.StoredProcedure);
var collection = await results.ReadFirstOrDefaultAsync<Collection>();
var groupIds = (await results.ReadAsync<Guid>()).ToList();
var groups = (await results.ReadAsync<SelectionReadOnly>()).ToList();
return new Tuple<Collection, ICollection<Guid>>(collection, groupIds);
return new Tuple<Collection, ICollection<SelectionReadOnly>>(collection, groups);
}
}
@@ -80,11 +81,11 @@ namespace Bit.Core.Repositories.SqlServer
}
}
public async Task CreateAsync(Collection obj, IEnumerable<Guid> groupIds)
public async Task CreateAsync(Collection obj, IEnumerable<SelectionReadOnly> groups)
{
obj.SetNewId();
var objWithGroups = JsonConvert.DeserializeObject<CollectionWithGroups>(JsonConvert.SerializeObject(obj));
objWithGroups.GroupIds = groupIds.ToGuidIdArrayTVP();
objWithGroups.Groups = groups.ToArrayTVP();
using(var connection = new SqlConnection(ConnectionString))
{
@@ -95,10 +96,10 @@ namespace Bit.Core.Repositories.SqlServer
}
}
public async Task ReplaceAsync(Collection obj, IEnumerable<Guid> groupIds)
public async Task ReplaceAsync(Collection obj, IEnumerable<SelectionReadOnly> groups)
{
var objWithGroups = JsonConvert.DeserializeObject<CollectionWithGroups>(JsonConvert.SerializeObject(obj));
objWithGroups.GroupIds = groupIds.ToGuidIdArrayTVP();
objWithGroups.Groups = groups.ToArrayTVP();
using(var connection = new SqlConnection(ConnectionString))
{
@@ -111,7 +112,7 @@ namespace Bit.Core.Repositories.SqlServer
public class CollectionWithGroups : Collection
{
public DataTable GroupIds { get; set; }
public DataTable Groups { get; set; }
}
}
}