using System.Data.Common; using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Configuration; using EthermineBotTelegramCore; using Microsoft.Extensions.DependencyInjection; using MySql.EntityFrameworkCore; namespace EFDatabase { //[DbConfigurationType(typeof(MySqlEFConfiguration))] public class botdb : DbContext { public DbSet users { get; set; } public DbSet miners { get; set; } public DbSet workers { get; set; } public DbSet payouts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //#warning To protect potentially sensitive information in your connection string, //you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 //for guidance on storing connection strings. optionsBuilder.UseMySQL("server=" + AppSettings.dbIp + ";port=3306;database=botdb;uid=" + AppSettings.user + "; pwd=" + AppSettings.password); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasKey(m => new { m.wallet, m.time }); modelBuilder.Entity() .HasKey(w => new { w.wallet, w.time, w.worker }); modelBuilder.Entity() .HasKey(p => new { p.wallet, p.time, p.worker }); } } public class users { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public long chat_id { get; set; } public string wallet { get; set; } public long last_message { get; set; } public long timer { get; set; } //unused } public class miners { //[Key, Column(Order = 0)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string wallet { get; set; } //[Key, Column(Order = 1)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public long time { get; set; } public long reported_hashrate { get; set; } public double current_hashrate { get; set; } public int valid_shares { get; set; } public int stale_shares { get; set; } public int invalid_shares { get; set; } public int workers { get; set; } public long unpaid { get; set; } } public class workers { public string wallet { get; set; } //[Key, Column(Order = 0)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public long time { get; set; } //[Key, Column(Order = 1)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string worker { get; set; } public long reported_hashrate { get; set; } public double current_hashrate { get; set; } public int valid_shares { get; set; } public int stale_shares { get; set; } public int invalid_shares { get; set; } public double worker_unpaid { get; set; } } public class payouts { //[Key, Column(Order = 0)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string wallet { get; set; } //[Key, Column(Order = 1)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public long time { get; set; } public long amount { get; set; } //[Key, Column(Order = 2)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string worker { get; set; } public double worker_amount { get; set; } } }