mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-22 22:25:28 +01:00
* Quality of life improvements to payout processors * Allows more fleixble intervals for payout processing from 10-60 mins to 1min-24hours(requested by users) * Cancel ln payotus that expired (bolt11) * Allow cancelling of ln payotus that have failed to be paid after x attempts * Allow conifguring a threshold for when to process on-chain payouts (reduces fees) # Conflicts: # BTCPayServer.Tests/SeleniumTests.cs * Simplify the code * switch to concurrent dictionary * Allow ProcessNewPayoutsInstantly * refactor plugin hook service to have events available and change processor hooks to actions with better args * add procesor extended tests * Update BTCPayServer.Tests/GreenfieldAPITests.cs * fix concurrency issue * Update BTCPayServer/PayoutProcessors/BaseAutomatedPayoutProcessor.cs --------- Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using System;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
|
|
namespace BTCPayServer.Data;
|
|
|
|
public class AutomatedPayoutBlob
|
|
{
|
|
public TimeSpan Interval { get; set; } = TimeSpan.FromHours(1);
|
|
public bool ProcessNewPayoutsInstantly { get; set; }
|
|
}
|
|
public class PayoutProcessorData : IHasBlobUntyped
|
|
{
|
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
|
public string Id { get; set; }
|
|
public string StoreId { get; set; }
|
|
public StoreData Store { get; set; }
|
|
public string PaymentMethod { get; set; }
|
|
public string Processor { get; set; }
|
|
|
|
[Obsolete("Use Blob2 instead")]
|
|
public byte[] Blob { get; set; }
|
|
public string Blob2 { get; set; }
|
|
|
|
internal static void OnModelCreating(ModelBuilder builder, DatabaseFacade databaseFacade)
|
|
{
|
|
builder.Entity<PayoutProcessorData>()
|
|
.HasOne(o => o.Store)
|
|
.WithMany(data => data.PayoutProcessors).OnDelete(DeleteBehavior.Cascade);
|
|
|
|
if (databaseFacade.IsNpgsql())
|
|
{
|
|
builder.Entity<PayoutProcessorData>()
|
|
.Property(o => o.Blob2)
|
|
.HasColumnType("JSONB");
|
|
}
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{Processor} {PaymentMethod} {StoreId}";
|
|
}
|
|
}
|