EFDatabase.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System.Data.Common;
  2. using Microsoft.EntityFrameworkCore;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.ComponentModel.DataAnnotations.Schema;
  5. using System.Configuration;
  6. using EthermineBotTelegramCore;
  7. using Microsoft.Extensions.DependencyInjection;
  8. using MySql.EntityFrameworkCore;
  9. namespace EFDatabase
  10. {
  11. //[DbConfigurationType(typeof(MySqlEFConfiguration))]
  12. public class botdb : DbContext
  13. {
  14. public DbSet<users> users { get; set; }
  15. public DbSet<miners> miners { get; set; }
  16. public DbSet<workers> workers { get; set; }
  17. public DbSet<payouts> payouts { get; set; }
  18. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  19. {
  20. //#warning To protect potentially sensitive information in your connection string,
  21. //you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263
  22. //for guidance on storing connection strings.
  23. optionsBuilder.UseMySQL("server=" + AppSettings.dbIp + ";port=3306;database=botdb;uid=" + AppSettings.user + "; pwd=" + AppSettings.password);
  24. }
  25. protected override void OnModelCreating(ModelBuilder modelBuilder)
  26. {
  27. modelBuilder.Entity<miners>()
  28. .HasKey(m => new { m.wallet, m.time });
  29. modelBuilder.Entity<workers>()
  30. .HasKey(w => new { w.wallet, w.time, w.worker });
  31. modelBuilder.Entity<payouts>()
  32. .HasKey(p => new { p.wallet, p.time, p.worker });
  33. }
  34. }
  35. public class users
  36. {
  37. [Key]
  38. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  39. public long chat_id { get; set; }
  40. public string wallet { get; set; }
  41. public long last_message { get; set; }
  42. public long timer { get; set; } //unused
  43. }
  44. public class miners
  45. {
  46. //[Key, Column(Order = 0)]
  47. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  48. public string wallet { get; set; }
  49. //[Key, Column(Order = 1)]
  50. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  51. public long time { get; set; }
  52. public long reported_hashrate { get; set; }
  53. public double current_hashrate { get; set; }
  54. public int valid_shares { get; set; }
  55. public int stale_shares { get; set; }
  56. public int invalid_shares { get; set; }
  57. public int workers { get; set; }
  58. public long unpaid { get; set; }
  59. }
  60. public class workers
  61. {
  62. public string wallet { get; set; }
  63. //[Key, Column(Order = 0)]
  64. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  65. public long time { get; set; }
  66. //[Key, Column(Order = 1)]
  67. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  68. public string worker { get; set; }
  69. public long reported_hashrate { get; set; }
  70. public double current_hashrate { get; set; }
  71. public int valid_shares { get; set; }
  72. public int stale_shares { get; set; }
  73. public int invalid_shares { get; set; }
  74. public double worker_unpaid { get; set; }
  75. }
  76. public class payouts
  77. {
  78. //[Key, Column(Order = 0)]
  79. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  80. public string wallet { get; set; }
  81. //[Key, Column(Order = 1)]
  82. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  83. public long time { get; set; }
  84. public long amount { get; set; }
  85. //[Key, Column(Order = 2)]
  86. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  87. public string worker { get; set; }
  88. public double worker_amount { get; set; }
  89. }
  90. }