diff --git a/csharp/src/Data.Npgsql/Migrations/20250812210102_AddAztechComment.Designer.cs b/csharp/src/Data.Npgsql/Migrations/20250812210102_AddAztechComment.Designer.cs new file mode 100644 index 00000000..36dab38d --- /dev/null +++ b/csharp/src/Data.Npgsql/Migrations/20250812210102_AddAztechComment.Designer.cs @@ -0,0 +1,1069 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Train.Solver.Data.Npgsql; + +#nullable disable + +namespace Train.Solver.Data.Npgsql.Migrations +{ + [DbContext(typeof(SolverDbContext))] + [Migration("20250812210102_AddAztechComment")] + partial class AddAztechComment + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Expense", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("FeeTokenId") + .HasColumnType("integer"); + + b.PrimitiveCollection("LastFeeValues") + .IsRequired() + .HasColumnType("text[]"); + + b.Property("TokenId") + .HasColumnType("integer"); + + b.Property("TransactionType") + .HasColumnType("integer") + .HasComment("Transfer=0,Approve=1,HTLCCommit=2,HTLCLock=3,HTLCRedeem=4,HTLCRefund=5,HTLCAddLockSig=6"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("FeeTokenId"); + + b.HasIndex("TokenId", "FeeTokenId", "TransactionType") + .IsUnique(); + + b.ToTable("Expenses"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Network", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ChainId") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("FeePercentageIncrease") + .HasColumnType("integer"); + + b.Property("FeeType") + .HasColumnType("integer"); + + b.Property("HTLCNativeContractAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("HTLCTokenContractAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("NativeTokenId") + .HasColumnType("integer"); + + b.Property("Type") + .HasColumnType("integer") + .HasComment("EVM=0,Solana=1,Starknet=2,Fuel=3,Aztec=4"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("NativeTokenId"); + + b.HasIndex("ChainId", "Type") + .IsUnique(); + + b.ToTable("Networks"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Node", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("NetworkId") + .HasColumnType("integer"); + + b.Property("ProviderName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("NetworkId"); + + b.HasIndex("ProviderName", "NetworkId") + .IsUnique(); + + b.ToTable("Nodes"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.RateProvider", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("RateProviders"); + + b.HasData( + new + { + Id = 100000, + CreatedDate = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "SameAsset", + Version = 0u + }, + new + { + Id = 100001, + CreatedDate = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "Binance", + Version = 0u + }); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Route", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("DestinationTokenId") + .HasColumnType("integer"); + + b.Property("DestinationWalletId") + .HasColumnType("integer"); + + b.Property("IgnoreExpenseFee") + .HasColumnType("boolean"); + + b.Property("MaxAmountInSource") + .IsRequired() + .HasColumnType("text"); + + b.Property("MinAmountInSource") + .IsRequired() + .HasColumnType("text"); + + b.Property("RateProviderId") + .HasColumnType("integer"); + + b.Property("ServiceFeeId") + .HasColumnType("integer"); + + b.Property("SourceTokenId") + .HasColumnType("integer"); + + b.Property("SourceWalletId") + .HasColumnType("integer"); + + b.Property("Status") + .HasColumnType("integer") + .HasComment("Active=0,Inactive=1,Archived=2"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("DestinationTokenId"); + + b.HasIndex("DestinationWalletId"); + + b.HasIndex("RateProviderId"); + + b.HasIndex("ServiceFeeId"); + + b.HasIndex("SourceWalletId"); + + b.HasIndex("SourceTokenId", "DestinationTokenId") + .IsUnique(); + + b.ToTable("Routes"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.ServiceFee", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("FeeInUsd") + .HasColumnType("numeric"); + + b.Property("FeePercentage") + .HasColumnType("numeric"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("ServiceFees"); + + b.HasData( + new + { + Id = 100000, + CreatedDate = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + FeeInUsd = 0m, + FeePercentage = 0m, + Name = "Free", + Version = 0u + }, + new + { + Id = 100001, + CreatedDate = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + FeeInUsd = 0m, + FeePercentage = 0m, + Name = "Default", + Version = 0u + }); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.SignerAgent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.PrimitiveCollection("SupportedTypes") + .IsRequired() + .HasColumnType("integer[]"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("SignerAgents"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Swap", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CommitId") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("DestinationAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("DestinationAmount") + .IsRequired() + .HasColumnType("text"); + + b.Property("FeeAmount") + .IsRequired() + .HasColumnType("text"); + + b.Property("Hashlock") + .IsRequired() + .HasColumnType("text"); + + b.Property("MetricId") + .HasColumnType("integer"); + + b.Property("RouteId") + .HasColumnType("integer"); + + b.Property("SourceAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("SourceAmount") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("CommitId") + .IsUnique(); + + b.HasIndex("CreatedDate"); + + b.HasIndex("DestinationAddress"); + + b.HasIndex("RouteId"); + + b.HasIndex("SourceAddress"); + + b.ToTable("Swaps"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.SwapMetric", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("DestinationNetwork") + .IsRequired() + .HasColumnType("text"); + + b.Property("DestinationToken") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProfitInUsd") + .HasColumnType("numeric"); + + b.Property("SourceNetwork") + .IsRequired() + .HasColumnType("text"); + + b.Property("SourceToken") + .IsRequired() + .HasColumnType("text"); + + b.Property("SwapId") + .HasColumnType("integer"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("VolumeInUsd") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.HasIndex("CreatedDate"); + + b.HasIndex("DestinationNetwork"); + + b.HasIndex("SourceNetwork"); + + b.HasIndex("SwapId") + .IsUnique(); + + b.ToTable("SwapMetrics"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Token", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Asset") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Decimals") + .HasColumnType("integer"); + + b.Property("NetworkId") + .HasColumnType("integer"); + + b.Property("TokenContract") + .HasColumnType("text"); + + b.Property("TokenPriceId") + .HasColumnType("integer"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Asset"); + + b.HasIndex("TokenPriceId"); + + b.HasIndex("NetworkId", "Asset") + .IsUnique(); + + b.ToTable("Tokens"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.TokenPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("ExternalId") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastUpdated") + .HasColumnType("timestamp with time zone"); + + b.Property("PriceInUsd") + .HasColumnType("numeric"); + + b.Property("Symbol") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Symbol") + .IsUnique(); + + b.ToTable("TokenPrices"); + + b.HasData( + new + { + Id = 10002, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "bitcoin", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "BTC", + Version = 0u + }, + new + { + Id = 10008, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "fuel-network", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "FUEL", + Version = 0u + }, + new + { + Id = 10014, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "avalanche-2", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "AVAX", + Version = 0u + }, + new + { + Id = 10018, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "optimism", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "OP", + Version = 0u + }, + new + { + Id = 10026, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "ethereum", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "ETH", + Version = 0u + }, + new + { + Id = 10035, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "solana", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "SOL", + Version = 0u + }, + new + { + Id = 10043, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "dai", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "DAI", + Version = 0u + }, + new + { + Id = 10046, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "usd-coin", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "USDC", + Version = 0u + }, + new + { + Id = 10050, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "immutable-x", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "IMX", + Version = 0u + }, + new + { + Id = 10054, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "binancecoin", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "BNB", + Version = 0u + }, + new + { + Id = 10055, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "tether", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "USDT", + Version = 0u + }, + new + { + Id = 10056, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "matic-network", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "MATIC", + Version = 0u + }, + new + { + Id = 10063, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "polygon-ecosystem-token", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "POL", + Version = 0u + }, + new + { + Id = 10069, + CreatedDate = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + ExternalId = "ronin", + LastUpdated = new DateTimeOffset(new DateTime(2025, 8, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + PriceInUsd = 0m, + Symbol = "RON", + Version = 0u + }); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Transaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("FeeAmount") + .IsRequired() + .HasColumnType("text"); + + b.Property("NetworkId") + .HasColumnType("integer"); + + b.Property("Status") + .HasColumnType("integer") + .HasComment("Completed=0,Initiated=1,Failed=2"); + + b.Property("SwapId") + .HasColumnType("integer"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone"); + + b.Property("TransactionHash") + .IsRequired() + .HasColumnType("text"); + + b.Property("Type") + .HasColumnType("integer") + .HasComment("Transfer=0,Approve=1,HTLCCommit=2,HTLCLock=3,HTLCRedeem=4,HTLCRefund=5,HTLCAddLockSig=6"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("NetworkId"); + + b.HasIndex("Status"); + + b.HasIndex("SwapId"); + + b.HasIndex("TransactionHash"); + + b.HasIndex("Type"); + + b.HasIndex("TransactionHash", "NetworkId") + .IsUnique(); + + b.ToTable("Transactions"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.TrustedWallet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("NetworkType") + .HasColumnType("integer"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("Address", "NetworkType"); + + b.HasIndex("Name", "NetworkType") + .IsUnique(); + + b.ToTable("TrustedWallets"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Wallet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("NetworkType") + .HasColumnType("integer"); + + b.Property("SignerAgentId") + .HasColumnType("integer"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.HasKey("Id"); + + b.HasIndex("SignerAgentId"); + + b.HasIndex("Address", "NetworkType"); + + b.HasIndex("Name", "NetworkType") + .IsUnique(); + + b.ToTable("Wallets"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Expense", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Token", "FeeToken") + .WithMany() + .HasForeignKey("FeeTokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.Token", "Token") + .WithMany() + .HasForeignKey("TokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FeeToken"); + + b.Navigation("Token"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Network", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Token", "NativeToken") + .WithMany() + .HasForeignKey("NativeTokenId"); + + b.Navigation("NativeToken"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Node", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Network", "Network") + .WithMany("Nodes") + .HasForeignKey("NetworkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Network"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Route", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Token", "DestinationToken") + .WithMany() + .HasForeignKey("DestinationTokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.Wallet", "DestinationWallet") + .WithMany() + .HasForeignKey("DestinationWalletId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.RateProvider", "RateProvider") + .WithMany() + .HasForeignKey("RateProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.ServiceFee", "ServiceFee") + .WithMany() + .HasForeignKey("ServiceFeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.Token", "SourceToken") + .WithMany() + .HasForeignKey("SourceTokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.Wallet", "SourceWallet") + .WithMany() + .HasForeignKey("SourceWalletId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DestinationToken"); + + b.Navigation("DestinationWallet"); + + b.Navigation("RateProvider"); + + b.Navigation("ServiceFee"); + + b.Navigation("SourceToken"); + + b.Navigation("SourceWallet"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Swap", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Route", "Route") + .WithMany() + .HasForeignKey("RouteId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Route"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.SwapMetric", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Swap", "Swap") + .WithOne("Metric") + .HasForeignKey("Train.Solver.Data.Abstractions.Entities.SwapMetric", "SwapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Swap"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Token", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Network", "Network") + .WithMany("Tokens") + .HasForeignKey("NetworkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.TokenPrice", "TokenPrice") + .WithMany() + .HasForeignKey("TokenPriceId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Network"); + + b.Navigation("TokenPrice"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Transaction", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.Network", "Network") + .WithMany() + .HasForeignKey("NetworkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Train.Solver.Data.Abstractions.Entities.Swap", "Swap") + .WithMany("Transactions") + .HasForeignKey("SwapId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Network"); + + b.Navigation("Swap"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Wallet", b => + { + b.HasOne("Train.Solver.Data.Abstractions.Entities.SignerAgent", "SignerAgent") + .WithMany() + .HasForeignKey("SignerAgentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SignerAgent"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Network", b => + { + b.Navigation("Nodes"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Train.Solver.Data.Abstractions.Entities.Swap", b => + { + b.Navigation("Metric"); + + b.Navigation("Transactions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/csharp/src/Data.Npgsql/Migrations/20250812210102_AddAztechComment.cs b/csharp/src/Data.Npgsql/Migrations/20250812210102_AddAztechComment.cs new file mode 100644 index 00000000..a8048dbb --- /dev/null +++ b/csharp/src/Data.Npgsql/Migrations/20250812210102_AddAztechComment.cs @@ -0,0 +1,38 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Train.Solver.Data.Npgsql.Migrations +{ + /// + public partial class AddAztechComment : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "Type", + table: "Networks", + type: "integer", + nullable: false, + comment: "EVM=0,Solana=1,Starknet=2,Fuel=3,Aztec=4", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "EVM=0,Solana=1,Starknet=2,Fuel=3"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "Type", + table: "Networks", + type: "integer", + nullable: false, + comment: "EVM=0,Solana=1,Starknet=2,Fuel=3", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "EVM=0,Solana=1,Starknet=2,Fuel=3,Aztec=4"); + } + } +} diff --git a/csharp/src/Data.Npgsql/Migrations/SolverDbContextModelSnapshot.cs b/csharp/src/Data.Npgsql/Migrations/SolverDbContextModelSnapshot.cs index 5cc6a85d..bdf2b8aa 100644 --- a/csharp/src/Data.Npgsql/Migrations/SolverDbContextModelSnapshot.cs +++ b/csharp/src/Data.Npgsql/Migrations/SolverDbContextModelSnapshot.cs @@ -109,7 +109,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Type") .HasColumnType("integer") - .HasComment("EVM=0,Solana=1,Starknet=2,Fuel=3"); + .HasComment("EVM=0,Solana=1,Starknet=2,Fuel=3,Aztec=4"); b.Property("Version") .IsConcurrencyToken()