1
0
mirror of https://github.com/bitwarden/server synced 2025-12-29 14:43:39 +00:00

add/edit group with collection ids

This commit is contained in:
Kyle Spearrin
2017-05-08 22:14:01 -04:00
parent e996a410dc
commit d166f9cca3
9 changed files with 191 additions and 2 deletions

View File

@@ -6,6 +6,8 @@ using Dapper;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Newtonsoft.Json;
using Bit.Core.Utilities;
namespace Bit.Core.Repositories.SqlServer
{
@@ -19,6 +21,22 @@ namespace Bit.Core.Repositories.SqlServer
: base(connectionString)
{ }
public async Task<Tuple<Group, ICollection<Guid>>> GetByIdWithCollectionsAsync(Guid id)
{
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.QueryMultipleAsync(
$"[{Schema}].[Group_ReadWithCollectionsById]",
new { Id = id },
commandType: CommandType.StoredProcedure);
var group = await results.ReadFirstOrDefaultAsync<Group>();
var colletionIds = (await results.ReadAsync<Guid>()).ToList();
return new Tuple<Group, ICollection<Guid>>(group, colletionIds);
}
}
public async Task<ICollection<Group>> GetManyByOrganizationIdAsync(Guid organizationId)
{
using(var connection = new SqlConnection(ConnectionString))
@@ -31,5 +49,39 @@ namespace Bit.Core.Repositories.SqlServer
return results.ToList();
}
}
public async Task CreateAsync(Group obj, IEnumerable<Guid> collectionIds)
{
obj.SetNewId();
var objWithCollections = JsonConvert.DeserializeObject<GroupWithCollections>(JsonConvert.SerializeObject(obj));
objWithCollections.CollectionIds = collectionIds.ToGuidIdArrayTVP();
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.ExecuteAsync(
$"[{Schema}].[Group_CreateWithCollections]",
objWithCollections,
commandType: CommandType.StoredProcedure);
}
}
public async Task ReplaceAsync(Group obj, IEnumerable<Guid> collectionIds)
{
var objWithCollections = JsonConvert.DeserializeObject<GroupWithCollections>(JsonConvert.SerializeObject(obj));
objWithCollections.CollectionIds = collectionIds.ToGuidIdArrayTVP();
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.ExecuteAsync(
$"[{Schema}].[Group_UpdateWithCollections]",
objWithCollections,
commandType: CommandType.StoredProcedure);
}
}
public class GroupWithCollections : Group
{
public DataTable CollectionIds { get; set; }
}
}
}