1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-17 15:40:59 -05:00

Device repository and cascase device delete on user delete

This commit is contained in:
Kyle Spearrin
2016-06-18 14:02:25 -04:00
parent 3e32a55640
commit ca8ba6ac92
6 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Bit.Core.Domains;
namespace Bit.Core.Repositories
{
public interface IDeviceRepository : IRepository<Device, Guid>
{
Task<Device> GetByIdAsync(Guid id, Guid userId);
Task<ICollection<Device>> GetManyByUserIdAsync(Guid userId);
}
}

View File

@ -0,0 +1,46 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Threading.Tasks;
using Bit.Core.Domains;
using System.Data;
using Dapper;
namespace Bit.Core.Repositories.SqlServer
{
public class DeviceRepository : Repository<Device, Guid>, IDeviceRepository
{
public DeviceRepository(GlobalSettings globalSettings)
: this(globalSettings.SqlServer.ConnectionString)
{ }
public DeviceRepository(string connectionString)
: base(connectionString)
{ }
public async Task<Device> GetByIdAsync(Guid id, Guid userId)
{
var device = await GetByIdAsync(id);
if(device == null || device.UserId != userId)
{
return null;
}
return device;
}
public async Task<ICollection<Device>> GetManyByUserIdAsync(Guid userId)
{
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.QueryAsync<Device>(
$"[{Schema}].[{Table}_ReadByUserId]",
new { UserId = userId },
commandType: CommandType.StoredProcedure);
return results.ToList();
}
}
}
}