mirror of
https://github.com/claunia/romrepomgr.git
synced 2025-12-16 19:24:51 +00:00
Full code refactor and clean-up.
This commit is contained in:
@@ -27,181 +27,177 @@ using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using RomRepoMgr.Database.Models;
|
||||
|
||||
namespace RomRepoMgr.Database
|
||||
namespace RomRepoMgr.Database;
|
||||
|
||||
public sealed class Context : DbContext
|
||||
{
|
||||
public sealed class Context : DbContext
|
||||
public Context(DbContextOptions options) : base(options) {}
|
||||
|
||||
public DbSet<DbFile> Files { get; set; }
|
||||
public DbSet<RomSet> RomSets { get; set; }
|
||||
public DbSet<Machine> Machines { get; set; }
|
||||
public DbSet<FileByMachine> FilesByMachines { get; set; }
|
||||
public DbSet<DbDisk> Disks { get; set; }
|
||||
public DbSet<DiskByMachine> DisksByMachines { get; set; }
|
||||
public DbSet<DbMedia> Medias { get; set; }
|
||||
public DbSet<MediaByMachine> MediasByMachines { get; set; }
|
||||
public DbSet<RomSetStat> RomSetStats { get; set; }
|
||||
|
||||
public static Context Create(string dbPath)
|
||||
{
|
||||
public Context(DbContextOptions options) : base(options) {}
|
||||
var optionsBuilder = new DbContextOptionsBuilder();
|
||||
|
||||
public DbSet<DbFile> Files { get; set; }
|
||||
public DbSet<RomSet> RomSets { get; set; }
|
||||
public DbSet<Machine> Machines { get; set; }
|
||||
public DbSet<FileByMachine> FilesByMachines { get; set; }
|
||||
public DbSet<DbDisk> Disks { get; set; }
|
||||
public DbSet<DiskByMachine> DisksByMachines { get; set; }
|
||||
public DbSet<DbMedia> Medias { get; set; }
|
||||
public DbSet<MediaByMachine> MediasByMachines { get; set; }
|
||||
public DbSet<RomSetStat> RomSetStats { get; set; }
|
||||
optionsBuilder.UseLazyLoadingProxies()
|
||||
#if DEBUG
|
||||
.UseLoggerFactory(LoggerFactory.Create(builder => builder.AddConsole()))
|
||||
#endif
|
||||
.UseSqlite($"Data Source={dbPath}");
|
||||
|
||||
public static Context Create(string dbPath)
|
||||
return new Context(optionsBuilder.Options);
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<DbFile>(entity =>
|
||||
{
|
||||
var optionsBuilder = new DbContextOptionsBuilder();
|
||||
entity.HasIndex(e => e.Crc32);
|
||||
|
||||
optionsBuilder.UseLazyLoadingProxies()
|
||||
#if DEBUG
|
||||
.UseLoggerFactory(LoggerFactory.Create(builder => builder.AddConsole()))
|
||||
#endif
|
||||
.UseSqlite($"Data Source={dbPath}");
|
||||
entity.HasIndex(e => e.Md5);
|
||||
|
||||
return new Context(optionsBuilder.Options);
|
||||
}
|
||||
entity.HasIndex(e => e.Sha1);
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
entity.HasIndex(e => e.Sha256);
|
||||
|
||||
entity.HasIndex(e => e.Sha384);
|
||||
|
||||
entity.HasIndex(e => e.Sha512);
|
||||
|
||||
entity.HasIndex(e => e.Size);
|
||||
|
||||
entity.HasIndex(e => e.IsInRepo);
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Crc32,
|
||||
e.Size
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Md5,
|
||||
e.Size
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha1,
|
||||
e.Size
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha256,
|
||||
e.Size
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha384,
|
||||
e.Size
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha512,
|
||||
e.Size
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity<RomSet>(entity =>
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
entity.HasIndex(e => e.Author);
|
||||
|
||||
modelBuilder.Entity<DbFile>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Crc32);
|
||||
entity.HasIndex(e => e.Comment);
|
||||
|
||||
entity.HasIndex(e => e.Md5);
|
||||
entity.HasIndex(e => e.Date);
|
||||
|
||||
entity.HasIndex(e => e.Sha1);
|
||||
entity.HasIndex(e => e.Description);
|
||||
|
||||
entity.HasIndex(e => e.Sha256);
|
||||
entity.HasIndex(e => e.Homepage);
|
||||
|
||||
entity.HasIndex(e => e.Sha384);
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasIndex(e => e.Sha512);
|
||||
entity.HasIndex(e => e.Version);
|
||||
|
||||
entity.HasIndex(e => e.Size);
|
||||
entity.HasIndex(e => e.Filename);
|
||||
|
||||
entity.HasIndex(e => e.IsInRepo);
|
||||
entity.HasIndex(e => e.Sha384);
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Crc32,
|
||||
e.Size
|
||||
});
|
||||
entity.HasIndex(e => e.Category);
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Md5,
|
||||
e.Size
|
||||
});
|
||||
modelBuilder.Entity<Machine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha1,
|
||||
e.Size
|
||||
});
|
||||
entity.HasOne(e => e.RomSet).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha256,
|
||||
e.Size
|
||||
});
|
||||
modelBuilder.Entity<FileByMachine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha384,
|
||||
e.Size
|
||||
});
|
||||
entity.HasOne(e => e.Machine).WithMany(e => e.Files).OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity.HasIndex(e => new
|
||||
{
|
||||
e.Sha512,
|
||||
e.Size
|
||||
});
|
||||
});
|
||||
entity.HasOne(e => e.File).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<RomSet>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Author);
|
||||
modelBuilder.Entity<DbDisk>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Md5);
|
||||
|
||||
entity.HasIndex(e => e.Comment);
|
||||
entity.HasIndex(e => e.Sha1);
|
||||
|
||||
entity.HasIndex(e => e.Date);
|
||||
entity.HasIndex(e => e.Size);
|
||||
|
||||
entity.HasIndex(e => e.Description);
|
||||
entity.HasIndex(e => e.IsInRepo);
|
||||
});
|
||||
|
||||
entity.HasIndex(e => e.Homepage);
|
||||
modelBuilder.Entity<DiskByMachine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasIndex(e => e.Name);
|
||||
entity.HasOne(e => e.Machine).WithMany(e => e.Disks).OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity.HasIndex(e => e.Version);
|
||||
entity.HasOne(e => e.Disk).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
entity.HasIndex(e => e.Filename);
|
||||
modelBuilder.Entity<DbMedia>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Md5);
|
||||
|
||||
entity.HasIndex(e => e.Sha384);
|
||||
entity.HasIndex(e => e.Sha1);
|
||||
|
||||
entity.HasIndex(e => e.Category);
|
||||
});
|
||||
entity.HasIndex(e => e.Sha256);
|
||||
|
||||
modelBuilder.Entity<Machine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
entity.HasIndex(e => e.SpamSum);
|
||||
|
||||
entity.HasOne(e => e.RomSet).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
entity.HasIndex(e => e.Size);
|
||||
|
||||
modelBuilder.Entity<FileByMachine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
entity.HasIndex(e => e.IsInRepo);
|
||||
});
|
||||
|
||||
entity.HasOne(e => e.Machine).WithMany(e => e.Files).OnDelete(DeleteBehavior.Cascade);
|
||||
modelBuilder.Entity<MediaByMachine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasOne(e => e.File).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
entity.HasOne(e => e.Machine).WithMany(e => e.Medias).OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
modelBuilder.Entity<DbDisk>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Md5);
|
||||
entity.HasOne(e => e.Media).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
entity.HasIndex(e => e.Sha1);
|
||||
|
||||
entity.HasIndex(e => e.Size);
|
||||
|
||||
entity.HasIndex(e => e.IsInRepo);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<DiskByMachine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasOne(e => e.Machine).WithMany(e => e.Disks).OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity.HasOne(e => e.Disk).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<DbMedia>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Md5);
|
||||
|
||||
entity.HasIndex(e => e.Sha1);
|
||||
|
||||
entity.HasIndex(e => e.Sha256);
|
||||
|
||||
entity.HasIndex(e => e.SpamSum);
|
||||
|
||||
entity.HasIndex(e => e.Size);
|
||||
|
||||
entity.HasIndex(e => e.IsInRepo);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<MediaByMachine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.Name);
|
||||
|
||||
entity.HasOne(e => e.Machine).WithMany(e => e.Medias).OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity.HasOne(e => e.Media).WithMany(e => e.Machines).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<RomSetStat>(entity =>
|
||||
{
|
||||
entity.HasOne(e => e.RomSet).WithOne(e => e.Statistics);
|
||||
});
|
||||
}
|
||||
modelBuilder.Entity<RomSetStat>(entity => { entity.HasOne(e => e.RomSet).WithOne(e => e.Statistics); });
|
||||
}
|
||||
}
|
||||
@@ -25,10 +25,9 @@
|
||||
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
|
||||
namespace RomRepoMgr.Database
|
||||
namespace RomRepoMgr.Database;
|
||||
|
||||
public class ContextFactory : IDesignTimeDbContextFactory<Context>
|
||||
{
|
||||
public class ContextFactory : IDesignTimeDbContextFactory<Context>
|
||||
{
|
||||
public Context CreateDbContext(string[] args) => Context.Create("romrepo.db");
|
||||
}
|
||||
public Context CreateDbContext(string[] args) => Context.Create("romrepo.db");
|
||||
}
|
||||
@@ -25,13 +25,12 @@
|
||||
|
||||
using System;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
{
|
||||
public abstract class BaseModel<TKey>
|
||||
{
|
||||
public TKey Id { get; set; }
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public DateTime CreatedOn { get; set; }
|
||||
public DateTime UpdatedOn { get; set; }
|
||||
}
|
||||
public abstract class BaseModel<TKey>
|
||||
{
|
||||
public TKey Id { get; set; }
|
||||
|
||||
public DateTime CreatedOn { get; set; }
|
||||
public DateTime UpdatedOn { get; set; }
|
||||
}
|
||||
@@ -27,18 +27,17 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class DbDisk : BaseModel<ulong>
|
||||
{
|
||||
public class DbDisk : BaseModel<ulong>
|
||||
{
|
||||
public ulong? Size { get; set; }
|
||||
[StringLength(32, MinimumLength = 32)]
|
||||
public string Md5 { get; set; }
|
||||
[StringLength(40, MinimumLength = 40)]
|
||||
public string Sha1 { get; set; }
|
||||
[DefaultValue(false)]
|
||||
public bool IsInRepo { get; set; }
|
||||
public string OriginalFileName { get; set; }
|
||||
public virtual ICollection<DiskByMachine> Machines { get; set; }
|
||||
}
|
||||
public ulong? Size { get; set; }
|
||||
[StringLength(32, MinimumLength = 32)]
|
||||
public string Md5 { get; set; }
|
||||
[StringLength(40, MinimumLength = 40)]
|
||||
public string Sha1 { get; set; }
|
||||
[DefaultValue(false)]
|
||||
public bool IsInRepo { get; set; }
|
||||
public string OriginalFileName { get; set; }
|
||||
public virtual ICollection<DiskByMachine> Machines { get; set; }
|
||||
}
|
||||
@@ -27,27 +27,26 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class DbFile : BaseModel<ulong>
|
||||
{
|
||||
public class DbFile : BaseModel<ulong>
|
||||
{
|
||||
[Required]
|
||||
public ulong Size { get; set; }
|
||||
[StringLength(8, MinimumLength = 8)]
|
||||
public string Crc32 { get; set; }
|
||||
[StringLength(32, MinimumLength = 32)]
|
||||
public string Md5 { get; set; }
|
||||
[StringLength(40, MinimumLength = 40)]
|
||||
public string Sha1 { get; set; }
|
||||
[StringLength(64, MinimumLength = 64)]
|
||||
public string Sha256 { get; set; }
|
||||
[StringLength(96, MinimumLength = 96)]
|
||||
public string Sha384 { get; set; }
|
||||
[StringLength(128, MinimumLength = 128)]
|
||||
public string Sha512 { get; set; }
|
||||
[DefaultValue(false)]
|
||||
public bool IsInRepo { get; set; }
|
||||
public string OriginalFileName { get; set; }
|
||||
public virtual ICollection<FileByMachine> Machines { get; set; }
|
||||
}
|
||||
[Required]
|
||||
public ulong Size { get; set; }
|
||||
[StringLength(8, MinimumLength = 8)]
|
||||
public string Crc32 { get; set; }
|
||||
[StringLength(32, MinimumLength = 32)]
|
||||
public string Md5 { get; set; }
|
||||
[StringLength(40, MinimumLength = 40)]
|
||||
public string Sha1 { get; set; }
|
||||
[StringLength(64, MinimumLength = 64)]
|
||||
public string Sha256 { get; set; }
|
||||
[StringLength(96, MinimumLength = 96)]
|
||||
public string Sha384 { get; set; }
|
||||
[StringLength(128, MinimumLength = 128)]
|
||||
public string Sha512 { get; set; }
|
||||
[DefaultValue(false)]
|
||||
public bool IsInRepo { get; set; }
|
||||
public string OriginalFileName { get; set; }
|
||||
public virtual ICollection<FileByMachine> Machines { get; set; }
|
||||
}
|
||||
@@ -27,21 +27,20 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class DbMedia : BaseModel<ulong>
|
||||
{
|
||||
public class DbMedia : BaseModel<ulong>
|
||||
{
|
||||
public ulong? Size { get; set; }
|
||||
[StringLength(32, MinimumLength = 32)]
|
||||
public string Md5 { get; set; }
|
||||
[StringLength(40, MinimumLength = 40)]
|
||||
public string Sha1 { get; set; }
|
||||
[StringLength(64, MinimumLength = 64)]
|
||||
public string Sha256 { get; set; }
|
||||
public string SpamSum { get; set; }
|
||||
[DefaultValue(false)]
|
||||
public bool IsInRepo { get; set; }
|
||||
public string OriginalFileName { get; set; }
|
||||
public virtual IEnumerable<MediaByMachine> Machines { get; set; }
|
||||
}
|
||||
public ulong? Size { get; set; }
|
||||
[StringLength(32, MinimumLength = 32)]
|
||||
public string Md5 { get; set; }
|
||||
[StringLength(40, MinimumLength = 40)]
|
||||
public string Sha1 { get; set; }
|
||||
[StringLength(64, MinimumLength = 64)]
|
||||
public string Sha256 { get; set; }
|
||||
public string SpamSum { get; set; }
|
||||
[DefaultValue(false)]
|
||||
public bool IsInRepo { get; set; }
|
||||
public string OriginalFileName { get; set; }
|
||||
public virtual IEnumerable<MediaByMachine> Machines { get; set; }
|
||||
}
|
||||
@@ -25,19 +25,18 @@
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class DiskByMachine
|
||||
{
|
||||
public class DiskByMachine
|
||||
{
|
||||
[Key]
|
||||
public ulong Id { get; set; }
|
||||
[Required]
|
||||
public virtual DbDisk Disk { get; set; }
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public ulong DiskId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
[Key]
|
||||
public ulong Id { get; set; }
|
||||
[Required]
|
||||
public virtual DbDisk Disk { get; set; }
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public ulong DiskId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
@@ -26,22 +26,21 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class FileByMachine
|
||||
{
|
||||
public class FileByMachine
|
||||
{
|
||||
[Key]
|
||||
public ulong Id { get; set; }
|
||||
[Required]
|
||||
public virtual DbFile File { get; set; }
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public ulong FileId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
public DateTime? FileLastModification { get; set; }
|
||||
[StringLength(4096)]
|
||||
public string Path { get; set; }
|
||||
}
|
||||
[Key]
|
||||
public ulong Id { get; set; }
|
||||
[Required]
|
||||
public virtual DbFile File { get; set; }
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public ulong FileId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
public DateTime? FileLastModification { get; set; }
|
||||
[StringLength(4096)]
|
||||
public string Path { get; set; }
|
||||
}
|
||||
@@ -26,17 +26,16 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class Machine : BaseModel<ulong>
|
||||
{
|
||||
public class Machine : BaseModel<ulong>
|
||||
{
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
[Required]
|
||||
public virtual RomSet RomSet { get; set; }
|
||||
public virtual ICollection<FileByMachine> Files { get; set; }
|
||||
public virtual ICollection<DiskByMachine> Disks { get; set; }
|
||||
public virtual ICollection<MediaByMachine> Medias { get; set; }
|
||||
public long RomSetId { get; set; }
|
||||
}
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
[Required]
|
||||
public virtual RomSet RomSet { get; set; }
|
||||
public virtual ICollection<FileByMachine> Files { get; set; }
|
||||
public virtual ICollection<DiskByMachine> Disks { get; set; }
|
||||
public virtual ICollection<MediaByMachine> Medias { get; set; }
|
||||
public long RomSetId { get; set; }
|
||||
}
|
||||
@@ -25,19 +25,18 @@
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class MediaByMachine
|
||||
{
|
||||
public class MediaByMachine
|
||||
{
|
||||
[Key]
|
||||
public ulong Id { get; set; }
|
||||
[Required]
|
||||
public virtual DbMedia Media { get; set; }
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public ulong MediaId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
[Key]
|
||||
public ulong Id { get; set; }
|
||||
[Required]
|
||||
public virtual DbMedia Media { get; set; }
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public ulong MediaId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
@@ -26,24 +26,24 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
{
|
||||
public class RomSet : BaseModel<long>
|
||||
{
|
||||
public string Author { get; set; }
|
||||
public string Comment { get; set; }
|
||||
public string Date { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string Homepage { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Version { get; set; }
|
||||
[Required]
|
||||
public string Filename { get; set; }
|
||||
[Required, StringLength(96, MinimumLength = 96)]
|
||||
public string Sha384 { get; set; }
|
||||
public string Category { get; set; }
|
||||
public virtual RomSetStat Statistics { get; set; }
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public virtual ICollection<Machine> Machines { get; set; }
|
||||
}
|
||||
public class RomSet : BaseModel<long>
|
||||
{
|
||||
public string Author { get; set; }
|
||||
public string Comment { get; set; }
|
||||
public string Date { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string Homepage { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Version { get; set; }
|
||||
[Required]
|
||||
public string Filename { get; set; }
|
||||
[Required]
|
||||
[StringLength(96, MinimumLength = 96)]
|
||||
public string Sha384 { get; set; }
|
||||
public string Category { get; set; }
|
||||
public virtual RomSetStat Statistics { get; set; }
|
||||
|
||||
public virtual ICollection<Machine> Machines { get; set; }
|
||||
}
|
||||
@@ -1,17 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace RomRepoMgr.Database.Models
|
||||
namespace RomRepoMgr.Database.Models;
|
||||
|
||||
public class RomSetStat
|
||||
{
|
||||
public class RomSetStat
|
||||
{
|
||||
public long TotalMachines { get; set; }
|
||||
public long CompleteMachines { get; set; }
|
||||
public long IncompleteMachines { get; set; }
|
||||
public long TotalRoms { get; set; }
|
||||
public long HaveRoms { get; set; }
|
||||
public long MissRoms { get; set; }
|
||||
public virtual RomSet RomSet { get; set; }
|
||||
[Key]
|
||||
public long RomSetId { get; set; }
|
||||
}
|
||||
public long TotalMachines { get; set; }
|
||||
public long CompleteMachines { get; set; }
|
||||
public long IncompleteMachines { get; set; }
|
||||
public long TotalRoms { get; set; }
|
||||
public long HaveRoms { get; set; }
|
||||
public long MissRoms { get; set; }
|
||||
public virtual RomSet RomSet { get; set; }
|
||||
[Key]
|
||||
public long RomSetId { get; set; }
|
||||
}
|
||||
@@ -11,32 +11,46 @@ namespace RomRepoMgr.Database.Resources {
|
||||
using System;
|
||||
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Localization {
|
||||
|
||||
private static System.Resources.ResourceManager resourceMan;
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static System.Globalization.CultureInfo resourceCulture;
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Localization() {
|
||||
}
|
||||
|
||||
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static System.Resources.ResourceManager ResourceManager {
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.Equals(null, resourceMan)) {
|
||||
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("RomRepoMgr.Database.Resources.Localization", typeof(Localization).Assembly);
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RomRepoMgr.Database.Resources.Localization", typeof(Localization).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static System.Globalization.CultureInfo Culture {
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
@@ -45,6 +59,9 @@ namespace RomRepoMgr.Database.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Settings are not initialized!.
|
||||
/// </summary>
|
||||
internal static string Settings_not_initialized {
|
||||
get {
|
||||
return ResourceManager.GetString("Settings_not_initialized", resourceCulture);
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
<root>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Settings_not_initialized" xml:space="preserve">
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
</value>
|
||||
</resheader>
|
||||
<data name="Settings_not_initialized" xml:space="preserve">
|
||||
<value>¡Las preferencias no están inicializadas!</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,22 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Settings_not_initialized" xml:space="preserve">
|
||||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
|
||||
xmlns="">
|
||||
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
</value>
|
||||
</resheader>
|
||||
<data name="Settings_not_initialized" xml:space="preserve">
|
||||
<value>Settings are not initialized!</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,42 +1,42 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<LangVersion>default</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<LangVersion>default</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0-rc.2.24474.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0-rc.2.24474.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0-rc.2.24474.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Design" Version="2.0.0-preview1-final" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.0-rc.2.24473.5" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0-rc.2.24474.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0-rc.2.24474.1"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0-rc.2.24474.1"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Design" Version="2.0.0-preview1-final"/>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.0-rc.2.24473.5"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Migrations" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Migrations"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\RomRepoMgr.Settings\RomRepoMgr.Settings.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\RomRepoMgr.Settings\RomRepoMgr.Settings.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Resources\Localization.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Localization.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Resources\Localization.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Localization.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="Resources\Localization.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Language.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Update="Resources\Localization.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Language.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user