public async Task <Guid> CreateAsync(Guid userId, DateTime expiryDate) { using (var db = new MainDatabase().Get) { return(await db.QuerySingleAsync <Guid>(@" INSERT INTO [dbo].[Sessions] (ID, IDUser, Expire, Data) OUTPUT INSERTED.ID VALUES (NEWID(), @userId, @expiryDate, @data)", new { userId, expiryDate, data = new byte[0] })); } }
public async Task <string> RegisterPasswordResetTokenAsync(Guid userId, string passwordResetToken) { using (var db = new MainDatabase().Get) using (var transaction = db.BeginTransaction()) { try { var expiryDate = DateTime.Now.Add(expiryLength); await db.ExecuteAsync("DELETE FROM [dbo].[UserPasswordReset] WHERE UserId = @userId", new { userId }, transaction : transaction); var generatedId = await db.QuerySingleAsync <Guid>("INSERT INTO [dbo].[UserPasswordReset] (UserId, ExpiryDate, ResetPasswordToken) OUTPUT INSERTED.Id VALUES (@userId, @expiryDate, @passwordResetToken)", new { userId, expiryDate, passwordResetToken }, transaction : transaction); transaction.Commit(); return(generatedId.ToString()); } catch (SqlException ex) { transaction.Rollback(); throw ex; } } }