Major refactor and cleanup.

This commit is contained in:
2025-11-13 04:05:35 +00:00
parent 1d67081792
commit 8f6d334af4
833 changed files with 86800 additions and 74355 deletions

View File

@@ -1,27 +1,34 @@
# Contributing
## Commit signature
For security reason we require all commits to be cryptographically signed.
This section explains how to setup the development environment for that purpose.
### Visual Studio and Visual Studio Code for Windows
You need to install Git for Windows. It is available as a component of Visual Studio, or separately in https://gitforwindows.org.
You need to install Git for Windows. It is available as a component of Visual Studio, or separately
in https://gitforwindows.org.
You also need to install Gpg4win from https://www.gpg4win.org. Ensure to select the Kleopatra component.
Once you have them installed, open Kleopatra and generate a new key pair, of OpenPGP type, following the instructions [here](https://www.gpg4win.org/doc/en/gpg4win-compendium_12.html).
Once you have them installed, open Kleopatra and generate a new key pair, of OpenPGP type, following the
instructions [here](https://www.gpg4win.org/doc/en/gpg4win-compendium_12.html).
Save aside the fingerprint, you'll need it later.
Now go to environment variables (in the properties of your computer) and add this to the path:
`C:\Program Files\Git\usr\bin`
Finally, open Git Bash, and write the following commands if you want all git commits to be signed:
```bash
git config --global commit.gpgsign true
git config --global user.signingkey <FINGERPRINT>
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
```
or if you want the options to apply only for this project
```bash
cd /DRIVE/PATH_TO_PROJECT
git config commit.gpgsign true
@@ -29,8 +36,11 @@ git config user.signingkey FINGERPRINT
git config gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
```
replacing `FINGERPRINT` with the fingerprint you saved from the key generation, `DRIVE` with the drive letter and `PATH_TO_PROJECT` using `/` as path separator.
replacing `FINGERPRINT` with the fingerprint you saved from the key generation, `DRIVE` with the drive letter and
`PATH_TO_PROJECT` using `/` as path separator.
Once this is done, every time you commit in VS / VSCode, a message box titled `pinentry-qt` will ask for the passphrase you set up earlier and sign the commit with your key.
Once this is done, every time you commit in VS / VSCode, a message box titled `pinentry-qt` will ask for the passphrase
you set up earlier and sign the commit with your key.
For GitHub to recognize your signature you need to follow the steps [here](https://help.github.com/en/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account).
For GitHub to recognize your signature you need to follow the
steps [here](https://help.github.com/en/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account).

View File

@@ -29,21 +29,30 @@ using System.ComponentModel.DataAnnotations;
// ReSharper disable UnusedMember.Global
// ReSharper disable InconsistentNaming
namespace Marechai.Database
{
namespace Marechai.Database;
public enum NewsType
{
NewComputerInDb = 1, NewConsoleInDb = 2, NewComputerInCollection = 3,
NewConsoleInCollection = 4, UpdatedComputerInDb = 5, UpdatedConsoleInDb = 6,
UpdatedComputerInCollection = 7, UpdatedConsoleInCollection = 8, NewMoneyDonation = 9
NewComputerInDb = 1,
NewConsoleInDb = 2,
NewComputerInCollection = 3,
NewConsoleInCollection = 4,
UpdatedComputerInDb = 5,
UpdatedConsoleInDb = 6,
UpdatedComputerInCollection = 7,
UpdatedConsoleInCollection = 8,
NewMoneyDonation = 9
}
public enum StatusType
{
[Display(Name = "Unknown")]
Unknown = 0, [Display(Name = "Tested good")]
TestedGood = 1, [Display(Name = "Not tested")]
NotTested = 2, [Display(Name = "Tested bad")]
Unknown = 0,
[Display(Name = "Tested good")]
TestedGood = 1,
[Display(Name = "Not tested")]
NotTested = 2,
[Display(Name = "Tested bad")]
TestedBad = 3
}
@@ -231,15 +240,22 @@ namespace Marechai.Database
/// <summary>Pioneer LaserDisc</summary>
LD = 21,
/// <summary>Pioneer LaserDisc data</summary>
LDROM = 22, LDROM2 = 23, LVROM = 24, MegaLD = 254,
LDROM = 22,
LDROM2 = 23,
LVROM = 24,
MegaLD = 254,
/// <summary>Sony Hi-MD</summary>
HiMD = 26,
/// <summary>Sony MiniDisc</summary>
MD = 27, MDData = 28, MDData2 = 29,
MD = 27,
MDData = 28,
MDData2 = 29,
/// <summary>5.25", Phase-Change, 1834348 sectors, 8192 bytes/sector, Ultra Density Optical, ECMA-350, ISO 17345</summary>
UDO = 30,
/// <summary>5.25", Phase-Change, 3669724 sectors, 8192 bytes/sector, Ultra Density Optical 2, ECMA-380, ISO 11976</summary>
UDO2 = 31, PlayStationMemoryCard = 32, PlayStationMemoryCard2 = 33,
UDO2 = 31,
PlayStationMemoryCard = 32,
PlayStationMemoryCard2 = 33,
/// <summary>Sony PlayStation game CD</summary>
PS1CD = 34,
/// <summary>Sony PlayStation 2 game CD</summary>
@@ -267,7 +283,8 @@ namespace Marechai.Database
/// <summary>Sega Saturn disc</summary>
SATURNCD = 46,
/// <summary>Sega/Yamaha Gigabyte Disc</summary>
GDROM = 47, SegaCard = 48,
GDROM = 47,
SegaCard = 48,
/// <summary>PC-Engine / TurboGrafx cartridge</summary>
HuCard = 49,
/// <summary>PC-Engine / TurboGrafx CD</summary>
@@ -287,256 +304,455 @@ namespace Marechai.Database
/// <summary>3.5" floppy</summary>
Microfloppy = 57,
/// <summary>5.25", DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy</summary>
AppleFileWare = 58, Bernoulli = 59, Bernoulli2 = 60, Ditto = 61,
DittoMax = 62, Jaz = 63, Jaz2 = 64,
PocketZip = 65, REV120 = 66, REV35 = 67,
REV70 = 68, ZIP100 = 69, ZIP250 = 70,
ZIP750 = 71, CompactCassette = 72, Data8 = 73,
MiniDV = 74, CFast = 75, CompactFlash = 76,
CompactFlashType2 = 77, EZ135 = 78, EZ230 = 79,
Quest = 80, SparQ = 81, SQ100 = 82,
SQ200 = 83, SQ300 = 84, SQ310 = 85,
SQ327 = 86, SQ400 = 87, SQ800 = 88,
SQ1500 = 89, SQ2000 = 90, SyJet = 91,
FamicomGamePak = 92, GameBoyAdvanceGamePak = 93, GameBoyGamePak = 94,
GOD = 95, N64DD = 96, N64GamePak = 97,
NESGamePak = 98, Nintendo3DSGameCard = 99, NintendoDiskCard = 100,
NintendoDSGameCard = 101, NintendoDSiGameCard = 102, SNESGamePak = 103,
SNESGamePakUS = 104, WOD = 105, WUOD = 106,
SwitchGameCard = 107, MemoryStick = 108, MemoryStickDuo = 109,
MemoryStickMicro = 110, MemoryStickPro = 111, MemoryStickProDuo = 112,
microSD = 113, miniSD = 114, SecureDigital = 115,
MMC = 116, MMCmicro = 117, RSMMC = 118,
MMCplus = 118, MMCmobile = 119, eMMC = 120,
MO120 = 121, MO90 = 122, MO300 = 123,
MO356 = 124, CompactFloppy = 125, DemiDiskette = 126,
AppleFileWare = 58,
Bernoulli = 59,
Bernoulli2 = 60,
Ditto = 61,
DittoMax = 62,
Jaz = 63,
Jaz2 = 64,
PocketZip = 65,
REV120 = 66,
REV35 = 67,
REV70 = 68,
ZIP100 = 69,
ZIP250 = 70,
ZIP750 = 71,
CompactCassette = 72,
Data8 = 73,
MiniDV = 74,
CFast = 75,
CompactFlash = 76,
CompactFlashType2 = 77,
EZ135 = 78,
EZ230 = 79,
Quest = 80,
SparQ = 81,
SQ100 = 82,
SQ200 = 83,
SQ300 = 84,
SQ310 = 85,
SQ327 = 86,
SQ400 = 87,
SQ800 = 88,
SQ1500 = 89,
SQ2000 = 90,
SyJet = 91,
FamicomGamePak = 92,
GameBoyAdvanceGamePak = 93,
GameBoyGamePak = 94,
GOD = 95,
N64DD = 96,
N64GamePak = 97,
NESGamePak = 98,
Nintendo3DSGameCard = 99,
NintendoDiskCard = 100,
NintendoDSGameCard = 101,
NintendoDSiGameCard = 102,
SNESGamePak = 103,
SNESGamePakUS = 104,
WOD = 105,
WUOD = 106,
SwitchGameCard = 107,
MemoryStick = 108,
MemoryStickDuo = 109,
MemoryStickMicro = 110,
MemoryStickPro = 111,
MemoryStickProDuo = 112,
microSD = 113,
miniSD = 114,
SecureDigital = 115,
MMC = 116,
MMCmicro = 117,
RSMMC = 118,
MMCplus = 118,
MMCmobile = 119,
eMMC = 120,
MO120 = 121,
MO90 = 122,
MO300 = 123,
MO356 = 124,
CompactFloppy = 125,
DemiDiskette = 126,
/// <summary>3.5", 652 tracks, 2 sides, 512 bytes/sector, Floptical, ECMA-207, ISO 14169</summary>
Floptical = 127, HiFD = 128, QuickDisk = 129, UHD144 = 130,
VideoFloppy = 131, Wafer = 132, ZXMicrodrive = 133,
BeeCard = 134, Borsu = 135, DataStore = 136,
MiniCard = 137, Orb = 138, Orb5 = 139,
SmartMedia = 140, xD = 141, XQD = 142,
DataPlay = 143, LS120 = 144, LS240 = 145,
FD32MB = 146, RDX = 147, PunchedCard = 148
Floptical = 127,
HiFD = 128,
QuickDisk = 129,
UHD144 = 130,
VideoFloppy = 131,
Wafer = 132,
ZXMicrodrive = 133,
BeeCard = 134,
Borsu = 135,
DataStore = 136,
MiniCard = 137,
Orb = 138,
Orb5 = 139,
SmartMedia = 140,
xD = 141,
XQD = 142,
DataPlay = 143,
LS120 = 144,
LS240 = 145,
FD32MB = 146,
RDX = 147,
PunchedCard = 148
}
public enum StorageInterface
{
Unknown = 0, ACSI = 1, ATA = 2,
XTA = 3, ESDI = 4, SCSI = 5,
USB = 6, FireWire = 7, SASI = 8,
ST506 = 9, IPI = 10, SMD = 11,
SATA = 12, SSA = 13, DSSI = 14,
HIPPI = 15, SAS = 16, FC = 17,
PCIe = 18, M2 = 19, SataExpress = 20
Unknown = 0,
ACSI = 1,
ATA = 2,
XTA = 3,
ESDI = 4,
SCSI = 5,
USB = 6,
FireWire = 7,
SASI = 8,
ST506 = 9,
IPI = 10,
SMD = 11,
SATA = 12,
SSA = 13,
DSSI = 14,
HIPPI = 15,
SAS = 16,
FC = 17,
PCIe = 18,
M2 = 19,
SataExpress = 20
}
public enum ColorSpace : ushort
{
[Display(Name = "sRGB")]
Srgb = 1, [Display(Name = "Adobe RGB")]
AdobeRgb = 2, [Display(Name = "Wide Gamut RGB")]
WideGamutRgb = 4093, [Display(Name = "ICC Profile")]
IccProfile = 65534, [Display(Name = "Uncalibrated")]
Srgb = 1,
[Display(Name = "Adobe RGB")]
AdobeRgb = 2,
[Display(Name = "Wide Gamut RGB")]
WideGamutRgb = 4093,
[Display(Name = "ICC Profile")]
IccProfile = 65534,
[Display(Name = "Uncalibrated")]
Uncalibrated = 65535
}
public enum Contrast : ushort
{
Normal = 0, Low = 1, High = 2
Normal = 0,
Low = 1,
High = 2
}
public enum ExposureMode : ushort
{
Auto = 0, Manual = 1, [Display(Name = "Auto bracket")]
Auto = 0,
Manual = 1,
[Display(Name = "Auto bracket")]
AutoBracket = 2
}
public enum ExposureProgram : ushort
{
[Display(Name = "Not Defined")]
Undefined = 0, [Display(Name = "Manual")]
Manual = 1, [Display(Name = "Program AE")]
ProgramAe = 2, [Display(Name = "Aperture-priority AE")]
ApAe = 3, [Display(Name = "Shutter speed priority AE")]
ShutterAe = 4, [Display(Name = "Creative (Slow speed)")]
Creative = 5, [Display(Name = "Action (High speed)")]
Action = 6, [Display(Name = "Portrait")]
Portrait = 7, [Display(Name = "Landscape")]
Landscape = 8, [Display(Name = "Bulb")]
Undefined = 0,
[Display(Name = "Manual")]
Manual = 1,
[Display(Name = "Program AE")]
ProgramAe = 2,
[Display(Name = "Aperture-priority AE")]
ApAe = 3,
[Display(Name = "Shutter speed priority AE")]
ShutterAe = 4,
[Display(Name = "Creative (Slow speed)")]
Creative = 5,
[Display(Name = "Action (High speed)")]
Action = 6,
[Display(Name = "Portrait")]
Portrait = 7,
[Display(Name = "Landscape")]
Landscape = 8,
[Display(Name = "Bulb")]
Bulb = 9
}
public enum Flash : ushort
{
[Display(Name = "No Flash")]
None = 0, [Display(Name = "Fired")]
Fired = 1, [Display(Name = "Fired, Return not detected")]
FiredNoReturn = 5, [Display(Name = "Fired, Return detected")]
FiredReturn = 7, [Display(Name = "On, Did not fire")]
OnDidNotFire = 8, [Display(Name = "On, Fired")]
OnFired = 9, [Display(Name = "On, Return not detected")]
OnNoReturn = 13, [Display(Name = "On, Return detected")]
OnReturn = 15, [Display(Name = "Off, Did not fire")]
OffDidNotFire = 16, [Display(Name = "Off, Did not fire, Return not detected")]
OffDidNotFireNoReturn = 20, [Display(Name = "Auto, Did not fire")]
AutoDidNotFire = 24, [Display(Name = "Auto, Fired")]
AutoFired = 25, [Display(Name = "Auto, Fired, Return not detected")]
AutoFiredNoReturn = 29, [Display(Name = "Auto, Fired, Return detected")]
AutoFiredReturn = 31, [Display(Name = "No flash function")]
NoFlash = 32, [Display(Name = "Off, No flash function")]
OffNoFlash = 48, [Display(Name = "Fired, Red-eye reduction")]
FiredRedEye = 65, [Display(Name = "Fired, Red-eye reduction, Return not detected")]
FiredRedEyeNoReturn = 69, [Display(Name = "Fired, Red-eye reduction, Return detected")]
FiredRedEyeReturn = 71, [Display(Name = "On, Red-eye reduction")]
OnRedEye = 73, [Display(Name = "On, Red-eye reduction, Return not detected")]
OnRedEyeNoReturn = 77, [Display(Name = "On, Red-eye reduction, Return detected")]
OnRedEyeReturn = 79, [Display(Name = "Off, Red-eye reduction")]
OffRedEye = 80, [Display(Name = "Auto, Did not fire, Red-eye reduction")]
AutoNotFireRedEye = 88, [Display(Name = "Auto, Fired, Red-eye reduction")]
AutoFiredRedEye = 89, [Display(Name = "Auto, Fired, Red-eye reduction, Return not detected")]
AutoFiredRedEyeNoReturn = 93, [Display(Name = "Auto, Fired, Red-eye reduction, Return detected")]
None = 0,
[Display(Name = "Fired")]
Fired = 1,
[Display(Name = "Fired, Return not detected")]
FiredNoReturn = 5,
[Display(Name = "Fired, Return detected")]
FiredReturn = 7,
[Display(Name = "On, Did not fire")]
OnDidNotFire = 8,
[Display(Name = "On, Fired")]
OnFired = 9,
[Display(Name = "On, Return not detected")]
OnNoReturn = 13,
[Display(Name = "On, Return detected")]
OnReturn = 15,
[Display(Name = "Off, Did not fire")]
OffDidNotFire = 16,
[Display(Name = "Off, Did not fire, Return not detected")]
OffDidNotFireNoReturn = 20,
[Display(Name = "Auto, Did not fire")]
AutoDidNotFire = 24,
[Display(Name = "Auto, Fired")]
AutoFired = 25,
[Display(Name = "Auto, Fired, Return not detected")]
AutoFiredNoReturn = 29,
[Display(Name = "Auto, Fired, Return detected")]
AutoFiredReturn = 31,
[Display(Name = "No flash function")]
NoFlash = 32,
[Display(Name = "Off, No flash function")]
OffNoFlash = 48,
[Display(Name = "Fired, Red-eye reduction")]
FiredRedEye = 65,
[Display(Name = "Fired, Red-eye reduction, Return not detected")]
FiredRedEyeNoReturn = 69,
[Display(Name = "Fired, Red-eye reduction, Return detected")]
FiredRedEyeReturn = 71,
[Display(Name = "On, Red-eye reduction")]
OnRedEye = 73,
[Display(Name = "On, Red-eye reduction, Return not detected")]
OnRedEyeNoReturn = 77,
[Display(Name = "On, Red-eye reduction, Return detected")]
OnRedEyeReturn = 79,
[Display(Name = "Off, Red-eye reduction")]
OffRedEye = 80,
[Display(Name = "Auto, Did not fire, Red-eye reduction")]
AutoNotFireRedEye = 88,
[Display(Name = "Auto, Fired, Red-eye reduction")]
AutoFiredRedEye = 89,
[Display(Name = "Auto, Fired, Red-eye reduction, Return not detected")]
AutoFiredRedEyeNoReturn = 93,
[Display(Name = "Auto, Fired, Red-eye reduction, Return detected")]
AutoFiredRedEyeReturn = 95
}
public enum LightSource : ushort
{
[Display(Name = "Unknown")]
Unknown = 0, [Display(Name = "Daylight")]
Daylight = 1, [Display(Name = "Fluorescent")]
Fluorescent = 2, [Display(Name = "Tungsten (Incandescent)")]
Incandescent = 3, [Display(Name = "Flash")]
Flash = 4, [Display(Name = "Fine Weather")]
FineWeather = 9, [Display(Name = "Cloudy")]
Cloudy = 10, [Display(Name = "Shade")]
Shade = 11, [Display(Name = "Daylight Fluorescent")]
DaylightFluorescent = 12, [Display(Name = "Day White Fluorescent")]
DayWhiteFluorescent = 13, [Display(Name = "Cool White Fluorescent")]
CoolWhiteFluorescent = 14, [Display(Name = "White Fluorescent")]
WhiteFluorescent = 15, [Display(Name = "Warm White Fluorescent")]
WarmWhiteFluorescent = 16, [Display(Name = "Standard Light A")]
StandardLightA = 17, [Display(Name = "Standard Light B")]
StandardLightB = 18, [Display(Name = "Standard Light C")]
StandardLightC = 19, [Display(Name = "D55")]
D55 = 20, [Display(Name = "D65")]
D65 = 21, [Display(Name = "D75")]
D75 = 22, [Display(Name = "D50")]
D50 = 23, [Display(Name = "ISO Studio Tungsten")]
ISOStudioTungsten = 24, [Display(Name = "Other")]
Unknown = 0,
[Display(Name = "Daylight")]
Daylight = 1,
[Display(Name = "Fluorescent")]
Fluorescent = 2,
[Display(Name = "Tungsten (Incandescent)")]
Incandescent = 3,
[Display(Name = "Flash")]
Flash = 4,
[Display(Name = "Fine Weather")]
FineWeather = 9,
[Display(Name = "Cloudy")]
Cloudy = 10,
[Display(Name = "Shade")]
Shade = 11,
[Display(Name = "Daylight Fluorescent")]
DaylightFluorescent = 12,
[Display(Name = "Day White Fluorescent")]
DayWhiteFluorescent = 13,
[Display(Name = "Cool White Fluorescent")]
CoolWhiteFluorescent = 14,
[Display(Name = "White Fluorescent")]
WhiteFluorescent = 15,
[Display(Name = "Warm White Fluorescent")]
WarmWhiteFluorescent = 16,
[Display(Name = "Standard Light A")]
StandardLightA = 17,
[Display(Name = "Standard Light B")]
StandardLightB = 18,
[Display(Name = "Standard Light C")]
StandardLightC = 19,
[Display(Name = "D55")]
D55 = 20,
[Display(Name = "D65")]
D65 = 21,
[Display(Name = "D75")]
D75 = 22,
[Display(Name = "D50")]
D50 = 23,
[Display(Name = "ISO Studio Tungsten")]
ISOStudioTungsten = 24,
[Display(Name = "Other")]
Other = 255
}
public enum MeteringMode : ushort
{
[Display(Name = "Unknown")]
Unknown = 0, [Display(Name = "Average")]
Average = 1, [Display(Name = "Center-weighted average")]
CenterWeightedAverage = 2, [Display(Name = "Spot")]
Spot = 3, [Display(Name = "Multi-spot")]
MultiSpot = 4, [Display(Name = "Multi-segment")]
MultiSegment = 5, [Display(Name = "Partial")]
Partial = 6, [Display(Name = "Other")]
Unknown = 0,
[Display(Name = "Average")]
Average = 1,
[Display(Name = "Center-weighted average")]
CenterWeightedAverage = 2,
[Display(Name = "Spot")]
Spot = 3,
[Display(Name = "Multi-spot")]
MultiSpot = 4,
[Display(Name = "Multi-segment")]
MultiSegment = 5,
[Display(Name = "Partial")]
Partial = 6,
[Display(Name = "Other")]
Other = 255
}
public enum Orientation : ushort
{
[Display(Name = "Horizontal (normal)")]
Horizontal = 1, [Display(Name = "Mirror horizontal")]
MirrorHorizontal = 2, [Display(Name = "Rotate 180")]
Rotate180 = 3, [Display(Name = "Mirror vertical")]
MirrorVertical = 4, [Display(Name = "Mirror horizontal and rotate 270 CW")]
MirrorHorizontalAndRotate270CW = 5, [Display(Name = "Rotate 90 CW")]
Rotate90CW = 6, [Display(Name = "Mirror horizontal and rotate 90 CW")]
MirrorHorizontalAndRotate90CW = 7, [Display(Name = "Rotate 270 CW")]
Horizontal = 1,
[Display(Name = "Mirror horizontal")]
MirrorHorizontal = 2,
[Display(Name = "Rotate 180")]
Rotate180 = 3,
[Display(Name = "Mirror vertical")]
MirrorVertical = 4,
[Display(Name = "Mirror horizontal and rotate 270 CW")]
MirrorHorizontalAndRotate270CW = 5,
[Display(Name = "Rotate 90 CW")]
Rotate90CW = 6,
[Display(Name = "Mirror horizontal and rotate 90 CW")]
MirrorHorizontalAndRotate90CW = 7,
[Display(Name = "Rotate 270 CW")]
Rotate270CW = 8
}
public enum ResolutionUnit : ushort
{
None = 1, Inches = 2, Centimeters = 3
None = 1,
Inches = 2,
Centimeters = 3
}
public enum Saturation : ushort
{
Normal = 0, Low = 1, High = 2
Normal = 0,
Low = 1,
High = 2
}
public enum SceneCaptureType : ushort
{
Standard = 0, Landscape = 1, Portrait = 2,
Standard = 0,
Landscape = 1,
Portrait = 2,
Night = 3
}
public enum SensingMethod : ushort
{
[Display(Name = "Not defined")]
Undefined = 1, [Display(Name = "One-chip color area")]
OneChipColorArea = 2, [Display(Name = "Two-chip color area")]
TwoChipColorArea = 3, [Display(Name = "Three-chip color area")]
ThreeChipColorArea = 4, [Display(Name = "Color sequential area")]
ColorSequentialArea = 5, [Display(Name = "Trilinear")]
Trilinear = 7, [Display(Name = "Color sequential linear")]
Undefined = 1,
[Display(Name = "One-chip color area")]
OneChipColorArea = 2,
[Display(Name = "Two-chip color area")]
TwoChipColorArea = 3,
[Display(Name = "Three-chip color area")]
ThreeChipColorArea = 4,
[Display(Name = "Color sequential area")]
ColorSequentialArea = 5,
[Display(Name = "Trilinear")]
Trilinear = 7,
[Display(Name = "Color sequential linear")]
ColorSequentialLinear = 8
}
public enum SubjectDistanceRange : ushort
{
Unknown = 0, Macro = 1, Close = 2,
Unknown = 0,
Macro = 1,
Close = 2,
Distant = 3
}
public enum WhiteBalance : ushort
{
Auto = 0, Manual = 1
Auto = 0,
Manual = 1
}
public enum Sharpness : ushort
{
Normal = 0, Low = 1, High = 2
Normal = 0,
Low = 1,
High = 2
}
public enum AuditType : byte
{
None = 0, Created = 1, Updated = 2,
None = 0,
Created = 1,
Updated = 2,
Deleted = 3
}
[Flags]
public enum DumpStatus : ulong
{
Unknown = 0, Cracked = 1 << 0, Fixed = 1 << 1,
Hacked = 1 << 2, Modified = 1 << 3, Pirated = 1 << 4,
Trained = 1 << 5, Translated = 1 << 6, Overdumped = 1 << 7,
Underdumped = 1 << 8, Infected = 1 << 9, Damaged = 1 << 10,
Verified = 1 << 11, MissingData = 1 << 12, MissingNonRequiredData = 1 << 13,
MissingEssentialData = 1 << 14, DamagedSubchannel = 1 << 15
Unknown = 0,
Cracked = 1 << 0,
Fixed = 1 << 1,
Hacked = 1 << 2,
Modified = 1 << 3,
Pirated = 1 << 4,
Trained = 1 << 5,
Translated = 1 << 6,
Overdumped = 1 << 7,
Underdumped = 1 << 8,
Infected = 1 << 9,
Damaged = 1 << 10,
Verified = 1 << 11,
MissingData = 1 << 12,
MissingNonRequiredData = 1 << 13,
MissingEssentialData = 1 << 14,
DamagedSubchannel = 1 << 15
}
[Flags]
public enum SubchannelStatus : byte
{
None = 0, P = 1 << 0, Q = 1 << 1,
R = 1 << 2, S = 1 << 3, T = 1 << 4,
U = 1 << 5, V = 1 << 6, W = 1 << 7
None = 0,
P = 1 << 0,
Q = 1 << 1,
R = 1 << 2,
S = 1 << 3,
T = 1 << 4,
U = 1 << 5,
V = 1 << 6,
W = 1 << 7
}
public enum DistributionMode : uint
{
Unknown = 0, Retail = 1, Bundle = 2,
Unknown = 0,
Retail = 1,
Bundle = 2,
Oem = 3
}
public enum MasteringTextType : byte
{
Unknown = 0, LotNumber = 1, MasteringSid = 2,
MouldSid = 3, MasteringCode = 4, Barcode = 5,
Unknown = 0,
LotNumber = 1,
MasteringSid = 2,
MouldSid = 3,
MasteringCode = 4,
Barcode = 5,
Toolstamp = 6
}
public enum DocumentScanType : uint
{
Page = 0, Cover = 1, BackCover = 2,
TableOfContents = 3, Index = 4, CopyrightPage = 5
}
Page = 0,
Cover = 1,
BackCover = 2,
TableOfContents = 3,
Index = 4,
CopyrightPage = 5
}

View File

@@ -25,8 +25,8 @@
using System.Data;
namespace Marechai.Database
{
namespace Marechai.Database;
/// <summary>Interface to database</summary>
public interface IDbCore
{
@@ -54,4 +54,3 @@ namespace Marechai.Database
bool TableExists(string tableName);
}
}

View File

@@ -24,6 +24,7 @@
*******************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -31,6 +32,7 @@ namespace Marechai.Database.Migrations
{
public partial class InitialMigration : Migration
{
[SuppressMessage("Performance", "CA1861:Avoid constant arrays as arguments", Justification = "The method is called just once")]
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable("admins", table => new

View File

@@ -1,10 +1,12 @@
using Microsoft.EntityFrameworkCore.Metadata;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
namespace Marechai.Database.Migrations
{
public partial class Licenses : Migration
{
[SuppressMessage("Performance", "CA1861:Avoid constant arrays as arguments", Justification = "The method is called just once.")]
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable("Licenses", table => new

View File

@@ -1,9 +1,11 @@
using Microsoft.EntityFrameworkCore.Migrations;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore.Migrations;
namespace Marechai.Database.Migrations
{
public partial class AddDocumentRoles : Migration
{
[SuppressMessage("Performance", "CA1861:Avoid constant arrays as arguments", Justification = "The method is called just once.")]
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable("DocumentRoles", table => new

View File

@@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore.Migrations;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore.Migrations;
namespace Marechai.Database.Migrations
{
@@ -1275,6 +1276,7 @@ namespace Marechai.Database.Migrations
migrationBuilder.DeleteData("Licenses", "Id", 363);
}
[SuppressMessage("Performance", "CA1861:Avoid constant arrays as arguments", Justification = "The method is called just once.")]
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.InsertData("DocumentRoles", new[]

View File

@@ -26,22 +26,22 @@
using System;
using Microsoft.AspNetCore.Identity;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class ApplicationRole : IdentityRole
{
public const string ROLE_UBERADMIN = "UberAdmin";
public const string ROLE_WRITER = "Writer";
public const string ROLE_PROOFREADER = "Proofreader";
public const string ROLE_TRANSLATOR = "Translator";
public const string ROLE_SUPERTRANSLATOR = "SuperTranslator";
public const string ROLE_COLLABORATOR = "Collaborator";
public const string ROLE_CURATOR = "Curator";
public const string ROLE_PHYSICALCURATOR = "PhysicalCurator";
public const string ROLE_TECHNICIAN = "Technician";
public const string ROLE_SUPERTECHNICIAN = "SuperTechnician";
public const string ROLE_ADMIN = "Administrator";
public const string ROLE_NONE = "NormalUser";
public const string RoleUberAdmin = "UberAdmin";
public const string RoleWriter = "Writer";
public const string RoleProofreader = "Proofreader";
public const string RoleTranslator = "Translator";
public const string RoleSuperTranslator = "SuperTranslator";
public const string RoleCollaborator = "Collaborator";
public const string RoleCurator = "Curator";
public const string RolePhysicalCurator = "PhysicalCurator";
public const string RoleTechnician = "Technician";
public const string RoleSuperTechnician = "SuperTechnician";
public const string RoleAdmin = "Administrator";
public const string RoleNone = "NormalUser";
public ApplicationRole() => Created = DateTime.UtcNow;
@@ -60,4 +60,3 @@ namespace Marechai.Database.Models
public string Description { get; set; }
public DateTime Created { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Identity;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class ApplicationUser : IdentityUser
{
public virtual ICollection<MachinePhoto> Photos { get; set; }
@@ -38,4 +38,3 @@ namespace Marechai.Database.Models
public virtual ICollection<DocumentScan> DocumentScans { get; set; }
public virtual ICollection<MagazineScan> MagazineScans { get; set; }
}
}

View File

@@ -2,8 +2,8 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Audit : BaseModel<long>
{
public AuditType Type { get; set; }
@@ -22,4 +22,3 @@ namespace Marechai.Database.Models
[Required]
public virtual ApplicationUser User { get; set; }
}
}

View File

@@ -28,15 +28,18 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Aaru.CommonTypes.Structs;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public abstract class BaseFile : BaseModel<ulong>
{
[StringLength(8192), Required]
[StringLength(8192)]
[Required]
public string Path { get; set; }
[StringLength(255), Required]
[StringLength(255)]
[Required]
public string Name { get; set; }
[Required, DefaultValue('/')]
[Required]
[DefaultValue('/')]
public char PathSeparator { get; set; }
public bool IsDirectory { get; set; }
public DateTime? CreationDate { get; set; }
@@ -52,4 +55,3 @@ namespace Marechai.Database.Models
public ulong? Inode { get; set; }
public ulong? Links { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public abstract class BaseModel<TKey>
{
public TKey Id { get; set; }
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime UpdatedOn { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public abstract class BasePhoto : BaseModel<Guid>
{
public double? Aperture { get; set; }
@@ -99,4 +99,3 @@ namespace Marechai.Database.Models
public int LicenseId { get; set; }
public string UserId { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public abstract class BaseScan : BaseModel<Guid>
{
public string Author { get; set; }
@@ -60,4 +60,3 @@ namespace Marechai.Database.Models
public string UserId { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Book : DocumentBase
{
[StringLength(13, MinimumLength = 10)]
@@ -48,4 +48,3 @@ namespace Marechai.Database.Models
public virtual ICollection<BooksByMachineFamily> MachineFamilies { get; set; }
public virtual ICollection<BookScan> Scans { get; set; }
}
}

View File

@@ -25,12 +25,11 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class BookScan : DocumentScanBase
{
[Required]
public virtual Book Book { get; set; }
public long BookId { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class BooksByMachine : BaseModel<long>
{
public long BookId { get; set; }
@@ -33,4 +33,3 @@ namespace Marechai.Database.Models
public virtual Book Book { get; set; }
public virtual Machine Machine { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class BooksByMachineFamily : BaseModel<long>
{
public long BookId { get; set; }
@@ -33,4 +33,3 @@ namespace Marechai.Database.Models
public virtual Book Book { get; set; }
public virtual MachineFamily MachineFamily { get; set; }
}
}

View File

@@ -26,41 +26,54 @@
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class BrowserTest : BaseModel<int>
{
[DisplayName("User agent"), Required, StringLength(128)]
[DisplayName("User agent")]
[Required]
[StringLength(128)]
public string UserAgent { get; set; }
[Required, StringLength(64)]
[Required]
[StringLength(64)]
public string Browser { get; set; }
[Required, StringLength(16)]
[Required]
[StringLength(16)]
public string Version { get; set; }
[DisplayName("Operating system"), Required, StringLength(32)]
[DisplayName("Operating system")]
[Required]
[StringLength(32)]
public string Os { get; set; }
[Required, StringLength(8)]
[Required]
[StringLength(8)]
public string Platform { get; set; }
[DisplayName("GIF87"), DefaultValue(false)]
[DisplayName("GIF87")]
[DefaultValue(false)]
public bool Gif87 { get; set; }
[DisplayName("GIF89"), DefaultValue(false)]
[DisplayName("GIF89")]
[DefaultValue(false)]
public bool Gif89 { get; set; }
[DisplayName("JPEG"), DefaultValue(false)]
[DisplayName("JPEG")]
[DefaultValue(false)]
public bool Jpeg { get; set; }
[DisplayName("PNG"), DefaultValue(false)]
[DisplayName("PNG")]
[DefaultValue(false)]
public bool Png { get; set; }
[DisplayName("Transparent PNG"), DefaultValue(false)]
[DisplayName("Transparent PNG")]
[DefaultValue(false)]
public bool Pngt { get; set; }
[DisplayName("Animated GIF"), DefaultValue(false)]
[DisplayName("Animated GIF")]
[DefaultValue(false)]
public bool Agif { get; set; }
[DefaultValue(false)]
public bool Table { get; set; }
[DefaultValue(false)]
public bool Colors { get; set; }
[DisplayName("JavaScript"), DefaultValue(false)]
[DisplayName("JavaScript")]
[DefaultValue(false)]
public bool Js { get; set; }
[DefaultValue(false)]
public bool Frames { get; set; }
[DefaultValue(false)]
public bool Flash { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompaniesByBook : BaseModel<long>
{
public int CompanyId { get; set; }
public long BookId { get; set; }
[Column(TypeName = "char(3)"), Required]
[Column(TypeName = "char(3)")]
[Required]
public string RoleId { get; set; }
public virtual DocumentCompany Company { get; set; }
public virtual Book Book { get; set; }
public virtual DocumentRole Role { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompaniesByDocument : BaseModel<long>
{
public int CompanyId { get; set; }
public long DocumentId { get; set; }
[Column(TypeName = "char(3)"), Required]
[Column(TypeName = "char(3)")]
[Required]
public string RoleId { get; set; }
public virtual DocumentCompany Company { get; set; }
public virtual Document Document { get; set; }
public virtual DocumentRole Role { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompaniesByMagazine : BaseModel<long>
{
public int CompanyId { get; set; }
public long MagazineId { get; set; }
[Column(TypeName = "char(3)"), Required]
[Column(TypeName = "char(3)")]
[Required]
public string RoleId { get; set; }
public virtual DocumentCompany Company { get; set; }
public virtual Magazine Magazine { get; set; }
public virtual DocumentRole Role { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompaniesBySoftwareFamily : BaseModel<ulong>
{
[Required]
@@ -40,4 +40,3 @@ namespace Marechai.Database.Models
public int CompanyId { get; set; }
public ulong SoftwareFamilyId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompaniesBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -40,4 +40,3 @@ namespace Marechai.Database.Models
public int CompanyId { get; set; }
public ulong SoftwareVariantId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompaniesBySoftwareVersion : BaseModel<ulong>
{
[Required]
@@ -40,4 +40,3 @@ namespace Marechai.Database.Models
public int CompanyId { get; set; }
public ulong SoftwareVersionId { get; set; }
}
}

View File

@@ -29,8 +29,8 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Company : BaseModel<int>
{
public Company()
@@ -46,15 +46,18 @@ namespace Marechai.Database.Models
[Required]
public string Name { get; set; }
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
public DateTime? Founded { get; set; }
[Url, StringLength(255)]
[Url]
[StringLength(255)]
public string Website { get; set; }
[StringLength(45)]
public string Twitter { get; set; }
[StringLength(45)]
public string Facebook { get; set; }
[DisplayFormat(DataFormatString = "{0:d}"), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime? Sold { get; set; }
public int? SoldToId { get; set; }
[StringLength(80)]
@@ -63,7 +66,8 @@ namespace Marechai.Database.Models
public string City { get; set; }
[StringLength(80)]
public string Province { get; set; }
[StringLength(25), DisplayName("Postal code")]
[StringLength(25)]
[DisplayName("Postal code")]
public string PostalCode { get; set; }
public short? CountryId { get; set; }
[Required]
@@ -97,4 +101,3 @@ namespace Marechai.Database.Models
public virtual ICollection<CompaniesBySoftwareVersion> SoftwareVersions { get; set; }
public virtual ICollection<CompaniesBySoftwareVariant> SoftwareVariants { get; set; }
}
}

View File

@@ -26,16 +26,17 @@
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompanyDescription : BaseModel<int>
{
public int CompanyId { get; set; }
[MaxLength(262144, ErrorMessage = "Description is too long"), Required]
[MaxLength(262144, ErrorMessage = "Description is too long")]
[Required]
public string Text { get; set; }
[MaxLength(262144, ErrorMessage = "Description is too long"), DisplayName("HTML")]
[MaxLength(262144, ErrorMessage = "Description is too long")]
[DisplayName("HTML")]
public string Html { get; set; }
public virtual Company Company { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CompanyLogo : BaseModel<int>
{
public int CompanyId { get; set; }
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public virtual Company Company { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CurrencyInflation : BaseModel<int>
{
[Required]
@@ -35,4 +35,3 @@ namespace Marechai.Database.Models
public float Inflation { get; set; }
public string CurrencyCode { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class CurrencyPegging : BaseModel<int>
{
[Required]
@@ -43,4 +43,3 @@ namespace Marechai.Database.Models
public string SourceCode { get; set; }
public string DestinationCode { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.Collections.Generic;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Document : DocumentBase
{
public virtual Iso31661Numeric Country { get; set; }
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public virtual ICollection<DocumentsByMachineFamily> MachineFamilies { get; set; }
public virtual ICollection<DocumentScan> Scans { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public abstract class DocumentBase : BaseModel<long>
{
[Required]
public string Title { get; set; }
public string NativeTitle { get; set; }
[DisplayFormat(DataFormatString = "{0:d}"), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime? Published { get; set; }
public short? CountryId { get; set; }
[MaxLength(262144, ErrorMessage = "Synopsis is too long")]
public string Synopsis { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DocumentCompany : BaseModel<int>
{
[Required]
@@ -41,4 +41,3 @@ namespace Marechai.Database.Models
public virtual ICollection<CompaniesByBook> Books { get; set; }
public virtual ICollection<CompaniesByMagazine> Magazines { get; set; }
}
}

View File

@@ -28,8 +28,8 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DocumentPerson : BaseModel<int>
{
[Required]
@@ -41,7 +41,8 @@ namespace Marechai.Database.Models
[DisplayName("Name to be displayed")]
public string DisplayName { get; set; }
[NotMapped, DisplayName("Name")]
[NotMapped]
[DisplayName("Name")]
public string FullName => DisplayName ?? Alias ?? $"{Name} {Surname}";
[DisplayName("Linked person")]
@@ -50,4 +51,3 @@ namespace Marechai.Database.Models
public virtual ICollection<PeopleByBook> Books { get; set; }
public virtual ICollection<PeopleByMagazine> Magazines { get; set; }
}
}

View File

@@ -27,14 +27,15 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DocumentRole
{
[Column(TypeName = "char(3)"), Key, Required]
[Column(TypeName = "char(3)")]
[Key]
[Required]
public string Id { get; set; }
public string Name { get; set; }
[DefaultValue(false)]
public bool Enabled { get; set; }
}
}

View File

@@ -25,12 +25,11 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DocumentScan : DocumentScanBase
{
[Required]
public virtual Document Document { get; set; }
public long DocumentId { get; set; }
}
}

View File

@@ -23,11 +23,10 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public abstract class DocumentScanBase : BaseScan
{
public DocumentScanType Type { get; set; }
public uint? Page { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DocumentsByMachine : BaseModel<long>
{
public long DocumentId { get; set; }
@@ -33,4 +33,3 @@ namespace Marechai.Database.Models
public virtual Document Document { get; set; }
public virtual Machine Machine { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DocumentsByMachineFamily : BaseModel<long>
{
public long DocumentId { get; set; }
@@ -33,4 +33,3 @@ namespace Marechai.Database.Models
public virtual Document Document { get; set; }
public virtual MachineFamily MachineFamily { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Dump : BaseModel<ulong>
{
[Required]
@@ -46,4 +46,3 @@ namespace Marechai.Database.Models
public ulong MediaId { get; set; }
public ulong MediaDumpId { get; set; }
}
}

View File

@@ -26,13 +26,14 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DumpHardware : BaseModel<ulong>
{
[StringLength(48)]
public string Manufacturer { get; set; }
[StringLength(48), Required]
[StringLength(48)]
[Required]
public string Model { get; set; }
[StringLength(48)]
public string Revision { get; set; }
@@ -40,15 +41,16 @@ namespace Marechai.Database.Models
public string Firmware { get; set; }
[StringLength(64)]
public string Serial { get; set; }
[StringLength(64), Required]
[StringLength(64)]
[Required]
public string SoftwareName { get; set; }
[StringLength(32)]
public string SoftwareVersion { get; set; }
[StringLength(64)]
public string SoftwareOperatingSystem { get; set; }
[Required, Column(TypeName = "json")]
[Required]
[Column(TypeName = "json")]
public Extent[] Extents { get; set; }
[Required]
public virtual Dump Dump { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
// Not for table
public class Extent
{
@@ -32,4 +32,3 @@ namespace Marechai.Database.Models
public long End { get; set; }
public bool Error { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class DbFile : BaseModel<ulong>
{
[Required]
@@ -52,4 +52,3 @@ namespace Marechai.Database.Models
public bool Hack { get; set; }
public string HackGroup { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class FileDataStream : BaseModel<ulong>
{
[StringLength(255)]
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public ulong FileId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class FileDataStreamsByMediaFile : BaseModel<ulong>
{
[Required]
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public ulong FileDataStreamId { get; set; }
public ulong MediaFileId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class FileDataStreamsByStandaloneFile : BaseModel<ulong>
{
[Required]
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public ulong FileDataStreamId { get; set; }
public ulong StandaloneFileId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class FilesByFilesystem : BaseModel<ulong>
{
[Required]
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public ulong FilesystemId { get; set; }
public ulong FileId { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Filesystem : BaseModel<ulong>
{
[Required]
@@ -55,4 +55,3 @@ namespace Marechai.Database.Models
public virtual ICollection<FilesystemsByMediaDumpFile> MediaDumpFileImages { get; set; }
public virtual ICollection<FilesByFilesystem> Files { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class FilesystemsByLogicalPartition : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual LogicalPartition Partition { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class FilesystemsByMediaDumpFile : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual MediaDumpFileImage MediaDumpFileImage { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Forbidden : BaseModel<int>
{
public string Browser { get; set; }
@@ -32,4 +32,3 @@ namespace Marechai.Database.Models
public string Ip { get; set; }
public string Referer { get; set; }
}
}

View File

@@ -28,8 +28,8 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Gpu : BaseModel<int>
{
public Gpu()
@@ -38,12 +38,15 @@ namespace Marechai.Database.Models
ResolutionsByGpu = new HashSet<ResolutionsByGpu>();
}
[Required, StringLength(128)]
[Required]
[StringLength(128)]
public string Name { get; set; }
public int? CompanyId { get; set; }
[DisplayName("Model code"), StringLength(45)]
[DisplayName("Model code")]
[StringLength(45)]
public string ModelCode { get; set; }
[DisplayFormat(DataFormatString = "{0:d}"), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime? Introduced { get; set; }
[StringLength(45)]
public string Package { get; set; }
@@ -61,4 +64,3 @@ namespace Marechai.Database.Models
public virtual ICollection<ResolutionsByGpu> ResolutionsByGpu { get; set; }
public virtual ICollection<GpusBySoftwareVariant> Software { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class GpusByMachine : BaseModel<long>
{
public int GpuId { get; set; }
@@ -36,4 +36,3 @@ namespace Marechai.Database.Models
public virtual Gpu Gpu { get; set; }
public virtual Machine Machine { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class GpusByOwnedMachine : BaseModel<long>
{
public int GpuId { get; set; }
@@ -36,4 +36,3 @@ namespace Marechai.Database.Models
public virtual Gpu Gpu { get; set; }
public virtual OwnedMachine OwnedMachine { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class GpusBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -36,4 +36,3 @@ namespace Marechai.Database.Models
public bool? Minimum { get; set; }
public bool? Recommended { get; set; }
}
}

View File

@@ -27,16 +27,17 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class InstructionSet : BaseModel<int>
{
public InstructionSet() => Processors = new HashSet<Processor>();
[Required, StringLength(45), Remote("VerifyUnique", "InstructionSets", "Admin")]
[Required]
[StringLength(45)]
[Remote("VerifyUnique", "InstructionSets", "Admin")]
public string Name { get; set; }
public virtual ICollection<Processor> Processors { get; set; }
public virtual ICollection<InstructionSetsBySoftwareVariant> Software { get; set; }
}
}

View File

@@ -28,20 +28,18 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class InstructionSetExtension : BaseModel<int>
{
public InstructionSetExtension() =>
InstructionSetExtensionsByProcessor = new HashSet<InstructionSetExtensionsByProcessor>();
[DisplayName("Name"), Required, StringLength(45), Remote("VerifyUnique", "InstructionSetExtensions", "Admin")]
[DisplayName("Name")]
[Required]
[StringLength(45)]
[Remote("VerifyUnique", "InstructionSetExtensions", "Admin")]
public string Extension { get; set; }
public virtual ICollection<InstructionSetExtensionsByProcessor> InstructionSetExtensionsByProcessor
{
get;
set;
}
}
public virtual ICollection<InstructionSetExtensionsByProcessor> InstructionSetExtensionsByProcessor { get; set; }
}

View File

@@ -25,8 +25,8 @@
using Microsoft.AspNetCore.Mvc;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class InstructionSetExtensionsByProcessor : BaseModel<int>
{
[Remote("VerifyUnique", "InstructionSetExtensionsByProcessor", "Admin", AdditionalFields = nameof(ExtensionId))]
@@ -37,4 +37,3 @@ namespace Marechai.Database.Models
public virtual InstructionSetExtension Extension { get; set; }
public virtual Processor Processor { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class InstructionSetsBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual SoftwareVariant SoftwareVariant { get; set; }
}
}

View File

@@ -28,8 +28,8 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Iso31661Numeric
{
public Iso31661Numeric() => Companies = new HashSet<Company>();
@@ -41,7 +41,8 @@ namespace Marechai.Database.Models
[Required]
public short Id { get; set; }
[Required, StringLength(64)]
[Required]
[StringLength(64)]
public string Name { get; set; }
public virtual ICollection<Company> Companies { get; set; }
@@ -50,4 +51,3 @@ namespace Marechai.Database.Models
public virtual ICollection<Book> Books { get; set; }
public virtual ICollection<Magazine> Magazines { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Iso4217
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
@@ -36,14 +36,17 @@ namespace Marechai.Database.Models
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime UpdatedOn { get; set; }
[StringLength(3), Required, Key]
[StringLength(3)]
[Required]
[Key]
public string Code { get; set; }
[Column(TypeName = "smallint(3)"), Required]
[Column(TypeName = "smallint(3)")]
[Required]
public short Numeric { get; set; }
public byte? MinorUnits { get; set; }
[StringLength(150), Required]
[StringLength(150)]
[Required]
public string Name { get; set; }
[DataType(DataType.Date)]
public DateTime? Withdrawn { get; set; }
}
}

View File

@@ -28,8 +28,8 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
/// <summary>ISO-639 codes</summary>
public class Iso639
{
@@ -38,7 +38,9 @@ namespace Marechai.Database.Models
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime UpdatedOn { get; set; }
[Column(TypeName = "char(3)"), Key, Required]
[Column(TypeName = "char(3)")]
[Key]
[Required]
public string Id { get; set; }
[Column(TypeName = "char(3)")]
public string Part2B { get; set; }
@@ -46,15 +48,17 @@ namespace Marechai.Database.Models
public string Part2T { get; set; }
[Column(TypeName = "char(2)")]
public string Part1 { get; set; }
[Column(TypeName = "char(1)"), Required]
[Column(TypeName = "char(1)")]
[Required]
public string Scope { get; set; }
[Column(TypeName = "char(1)"), Required]
[Column(TypeName = "char(1)")]
[Required]
public string Type { get; set; }
[Column(TypeName = "varchar(150)"), Required]
[Column(TypeName = "varchar(150)")]
[Required]
public string ReferenceName { get; set; }
[Column(TypeName = "varchar(150)")]
public string Comment { get; set; }
public virtual ICollection<LanguagesBySoftwareVariant> Software { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class LanguagesBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual SoftwareVariant SoftwareVariant { get; set; }
}
}

View File

@@ -28,24 +28,31 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class License : BaseModel<int>
{
[Required]
public string Name { get; set; }
[DisplayName("SPDX identifier")]
public string SPDX { get; set; }
[DisplayName("FSF approved"), Required, DefaultValue(false)]
[DisplayName("FSF approved")]
[Required]
[DefaultValue(false)]
public bool FsfApproved { get; set; }
[DisplayName("OSI approved"), Required, DefaultValue(false)]
[DisplayName("OSI approved")]
[Required]
[DefaultValue(false)]
public bool OsiApproved { get; set; }
[DisplayName("License text link"), StringLength(512), Url]
[DisplayName("License text link")]
[StringLength(512)]
[Url]
public string Link { get; set; }
[DisplayName("License text"), Column(TypeName = "longtext"), StringLength(131072),
DataType(DataType.MultilineText)]
[DisplayName("License text")]
[Column(TypeName = "longtext")]
[StringLength(131072)]
[DataType(DataType.MultilineText)]
public string Text { get; set; }
public virtual ICollection<MachinePhoto> Photos { get; set; }
public virtual ICollection<OwnedMachinePhoto> OwnedMachinePhotos { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Log : BaseModel<int>
{
public string Browser { get; set; }
@@ -32,4 +32,3 @@ namespace Marechai.Database.Models
public string Date { get; set; }
public string Referer { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class LogicalPartition : BaseModel<ulong>
{
public uint Sequence { get; set; }
@@ -43,4 +43,3 @@ namespace Marechai.Database.Models
public virtual ICollection<FilesystemsByLogicalPartition> Filesystems { get; set; }
public virtual ICollection<LogicalPartitionsByMedia> Media { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class LogicalPartitionsByMedia : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual LogicalPartition Partition { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Machine : BaseModel<int>
{
public Machine()
@@ -42,11 +42,13 @@ namespace Marechai.Database.Models
[Required]
public int CompanyId { get; set; }
[Required, StringLength(255)]
[Required]
[StringLength(255)]
public string Name { get; set; }
[Required]
public MachineType Type { get; set; }
[DisplayFormat(DataFormatString = "{0:d}"), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime? Introduced { get; set; }
public int? FamilyId { get; set; }
[StringLength(50)]
@@ -66,4 +68,3 @@ namespace Marechai.Database.Models
public virtual ICollection<MagazinesByMachine> Magazines { get; set; }
public virtual ICollection<MachinesBySoftwareVariant> Software { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MachineFamiliesBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual SoftwareVariant SoftwareVariant { get; set; }
}
}

View File

@@ -26,14 +26,15 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MachineFamily : BaseModel<int>
{
public MachineFamily() => Machines = new HashSet<Machine>();
public int CompanyId { get; set; }
[Required, StringLength(255)]
[Required]
[StringLength(255)]
public string Name { get; set; }
public virtual Company Company { get; set; }
@@ -43,4 +44,3 @@ namespace Marechai.Database.Models
public virtual ICollection<MagazinesByMachineFamily> Magazines { get; set; }
public virtual ICollection<MachineFamiliesBySoftwareVariant> Software { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MachinePhoto : BasePhoto
{
[Url]
@@ -36,4 +36,3 @@ namespace Marechai.Database.Models
public int MachineId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MachinesBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual SoftwareVariant SoftwareVariant { get; set; }
}
}

View File

@@ -27,17 +27,17 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Magazine : DocumentBase
{
[StringLength(8, MinimumLength = 8)]
public string Issn { get; set; }
[DisplayFormat(DataFormatString = "{0:d}"), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime? FirstPublication { get; set; }
public virtual Iso31661Numeric Country { get; set; }
public virtual ICollection<MagazineIssue> Issues { get; set; }
public virtual ICollection<CompaniesByMagazine> Companies { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MagazineIssue : BaseModel<long>
{
[Required]
@@ -36,7 +36,8 @@ namespace Marechai.Database.Models
[Required]
public string Caption { get; set; }
public string NativeCaption { get; set; }
[DisplayFormat(DataFormatString = "{0:d}"), DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime? Published { get; set; }
[StringLength(18)]
public string ProductCode { get; set; }
@@ -50,4 +51,3 @@ namespace Marechai.Database.Models
public virtual ICollection<Media> Coverdiscs { get; set; }
public virtual ICollection<MagazineScan> Scans { get; set; }
}
}

View File

@@ -25,12 +25,11 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MagazineScan : DocumentScanBase
{
[Required]
public virtual MagazineIssue Magazine { get; set; }
public long MagazineId { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MagazinesByMachine : BaseModel<long>
{
public long MagazineId { get; set; }
@@ -33,4 +33,3 @@ namespace Marechai.Database.Models
public virtual MagazineIssue Magazine { get; set; }
public virtual Machine Machine { get; set; }
}
}

View File

@@ -23,8 +23,8 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MagazinesByMachineFamily : BaseModel<long>
{
public long MagazineId { get; set; }
@@ -33,4 +33,3 @@ namespace Marechai.Database.Models
public virtual MagazineIssue Magazine { get; set; }
public virtual MachineFamily MachineFamily { get; set; }
}
}

View File

@@ -33,11 +33,11 @@ using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Microsoft.Extensions.Configuration;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MarechaiContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
readonly ValueConverter<string, byte[]> hexToBytesConverter =
readonly ValueConverter<string, byte[]> _hexToBytesConverter =
new(v => HexStringToBytesConverter.StringToHex(v), v => HexStringToBytesConverter.HexToString(v));
public MarechaiContext() {}
@@ -136,28 +136,26 @@ namespace Marechai.Database.Models
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if(optionsBuilder.IsConfigured)
return;
if(optionsBuilder.IsConfigured) return;
IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
IConfigurationRoot configuration = builder.Build();
optionsBuilder.
UseMySql(configuration.GetConnectionString("DefaultConnection"),
new MariaDbServerVersion(new Version(10, 5, 0)), b => b.UseMicrosoftJson()).
UseLazyLoadingProxies();
optionsBuilder
.UseMySql(configuration.GetConnectionString("DefaultConnection"),
new MariaDbServerVersion(new Version(10, 5, 0)),
b => b.UseMicrosoftJson())
.UseLazyLoadingProxies();
}
public async Task<int> SaveChangesWithUserAsync(string userId)
{
ChangeTracker.DetectChanges();
List<Audit> audits = new();
List<Audit> audits = [];
foreach(EntityEntry entry in ChangeTracker.Entries())
{
if(entry.Entity is Audit ||
entry.State == EntityState.Detached ||
entry.State == EntityState.Unchanged)
if(entry.Entity is Audit || entry.State == EntityState.Detached || entry.State == EntityState.Unchanged)
continue;
var audit = new Audit();
@@ -167,7 +165,7 @@ namespace Marechai.Database.Models
Dictionary<string, object> keys = new();
Dictionary<string, object> olds = new();
Dictionary<string, object> news = new();
List<string> columns = new();
List<string> columns = [];
foreach(PropertyEntry property in entry.Properties)
{
@@ -207,17 +205,13 @@ namespace Marechai.Database.Models
}
}
if(keys.Count > 0)
audit.Keys = keys;
if(keys.Count > 0) audit.Keys = keys;
if(olds.Count > 0)
audit.OldValues = olds;
if(olds.Count > 0) audit.OldValues = olds;
if(news.Count > 0)
audit.NewValues = news;
if(news.Count > 0) audit.NewValues = news;
if(columns.Count > 0)
audit.AffectedColumns = columns;
if(columns.Count > 0) audit.AffectedColumns = columns;
audits.Add(audit);
}
@@ -249,11 +243,15 @@ namespace Marechai.Database.Models
entity.HasIndex(e => e.Edition);
entity.HasOne(d => d.Previous).WithOne(d => d.Next).HasForeignKey<Book>(d => d.PreviousId).
OnDelete(DeleteBehavior.ClientSetNull);
entity.HasOne(d => d.Previous)
.WithOne(d => d.Next)
.HasForeignKey<Book>(d => d.PreviousId)
.OnDelete(DeleteBehavior.ClientSetNull);
entity.HasOne(d => d.Source).WithMany(d => d.Derivates).HasForeignKey(d => d.SourceId).
OnDelete(DeleteBehavior.ClientSetNull);
entity.HasOne(d => d.Source)
.WithMany(d => d.Derivates)
.HasForeignKey(d => d.SourceId)
.OnDelete(DeleteBehavior.ClientSetNull);
entity.HasOne(d => d.Country).WithMany(p => p.Books).HasForeignKey(d => d.CountryId);
});
@@ -296,51 +294,63 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.Agif).HasColumnName("agif").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Agif).HasColumnName("agif").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Browser).IsRequired().HasColumnName("browser").HasColumnType("varchar(64)").
HasDefaultValueSql("''");
entity.Property(e => e.Browser)
.IsRequired()
.HasColumnName("browser")
.HasColumnType("varchar(64)")
.HasDefaultValueSql("''");
entity.Property(e => e.Colors).HasColumnName("colors").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Colors)
.HasColumnName("colors")
.HasColumnType("tinyint(1)")
.HasDefaultValueSql("'0'");
entity.Property(e => e.Flash).HasColumnName("flash").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Flash).HasColumnName("flash").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Frames).HasColumnName("frames").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Frames)
.HasColumnName("frames")
.HasColumnType("tinyint(1)")
.HasDefaultValueSql("'0'");
entity.Property(e => e.Gif87).HasColumnName("gif87").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Gif87).HasColumnName("gif87").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Gif89).HasColumnName("gif89").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Gif89).HasColumnName("gif89").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Jpeg).HasColumnName("jpeg").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Jpeg).HasColumnName("jpeg").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Js).HasColumnName("js").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Os).IsRequired().HasColumnName("os").HasColumnType("varchar(32)").
HasDefaultValueSql("''");
entity.Property(e => e.Os)
.IsRequired()
.HasColumnName("os")
.HasColumnType("varchar(32)")
.HasDefaultValueSql("''");
entity.Property(e => e.Platform).IsRequired().HasColumnName("platform").HasColumnType("varchar(8)").
HasDefaultValueSql("''");
entity.Property(e => e.Platform)
.IsRequired()
.HasColumnName("platform")
.HasColumnType("varchar(8)")
.HasDefaultValueSql("''");
entity.Property(e => e.Png).HasColumnName("png").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Pngt).HasColumnName("pngt").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Pngt).HasColumnName("pngt").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Table).HasColumnName("table").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Table).HasColumnName("table").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.UserAgent).IsRequired().HasColumnName("user_agent").
HasColumnType("varchar(128)").HasDefaultValueSql("''");
entity.Property(e => e.UserAgent)
.IsRequired()
.HasColumnName("user_agent")
.HasColumnType("varchar(128)")
.HasDefaultValueSql("''");
entity.Property(e => e.Version).IsRequired().HasColumnName("version").HasColumnType("varchar(16)").
HasDefaultValueSql("''");
entity.Property(e => e.Version)
.IsRequired()
.HasColumnName("version")
.HasColumnType("varchar(16)")
.HasDefaultValueSql("''");
});
modelBuilder.Entity<MarechaiDb>(entity =>
@@ -349,8 +359,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.Updated).HasColumnName("updated").HasColumnType("datetime").
HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.Updated)
.HasColumnName("updated")
.HasColumnType("datetime")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.Version).HasColumnName("version").HasColumnType("int(11)");
});
@@ -436,8 +448,11 @@ namespace Marechai.Database.Models
entity.Property(e => e.Founded).HasColumnName("founded").HasColumnType("datetime");
entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("varchar(128)").
HasDefaultValueSql("''");
entity.Property(e => e.Name)
.IsRequired()
.HasColumnName("name")
.HasColumnType("varchar(128)")
.HasDefaultValueSql("''");
entity.Property(e => e.PostalCode).HasColumnName("postal_code").HasColumnType("varchar(25)");
@@ -453,14 +468,20 @@ namespace Marechai.Database.Models
entity.Property(e => e.Website).HasColumnName("website").HasColumnType("varchar(255)");
entity.HasOne(d => d.Country).WithMany(p => p.Companies).HasForeignKey(d => d.CountryId).
HasConstraintName("fk_companies_country");
entity.HasOne(d => d.Country)
.WithMany(p => p.Companies)
.HasForeignKey(d => d.CountryId)
.HasConstraintName("fk_companies_country");
entity.HasOne(d => d.SoldTo).WithMany(p => p.InverseSoldToNavigation).HasForeignKey(d => d.SoldToId).
HasConstraintName("fk_companies_sold_to");
entity.HasOne(d => d.SoldTo)
.WithMany(p => p.InverseSoldToNavigation)
.HasForeignKey(d => d.SoldToId)
.HasConstraintName("fk_companies_sold_to");
entity.HasOne(d => d.DocumentCompany).WithOne(p => p.Company).
HasForeignKey<DocumentCompany>(d => d.CompanyId).OnDelete(DeleteBehavior.SetNull);
entity.HasOne(d => d.DocumentCompany)
.WithOne(p => p.Company)
.HasForeignKey<DocumentCompany>(d => d.CompanyId)
.OnDelete(DeleteBehavior.SetNull);
});
modelBuilder.Entity<CompanyDescription>().HasIndex(e => e.Text).IsFullText();
@@ -490,8 +511,11 @@ namespace Marechai.Database.Models
entity.Property(e => e.Year).HasColumnName("year").HasColumnType("int(4)");
entity.HasOne(d => d.Company).WithMany(p => p.Logos).HasForeignKey(d => d.CompanyId).
OnDelete(DeleteBehavior.ClientSetNull).HasConstraintName("fk_company_logos_company1");
entity.HasOne(d => d.Company)
.WithMany(p => p.Logos)
.HasForeignKey(d => d.CompanyId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_company_logos_company1");
});
modelBuilder.Entity<Document>(entity =>
@@ -528,8 +552,10 @@ namespace Marechai.Database.Models
entity.HasIndex(e => e.DisplayName);
entity.HasOne(d => d.Person).WithOne(p => p.DocumentPerson).
HasForeignKey<Person>(d => d.DocumentPersonId).OnDelete(DeleteBehavior.SetNull);
entity.HasOne(d => d.Person)
.WithOne(p => p.DocumentPerson)
.HasForeignKey<Person>(d => d.DocumentPersonId)
.OnDelete(DeleteBehavior.SetNull);
});
modelBuilder.Entity<DocumentRole>(entity =>
@@ -579,17 +605,29 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.Browser).IsRequired().HasColumnName("browser").HasColumnType("char(128)").
HasDefaultValueSql("''");
entity.Property(e => e.Browser)
.IsRequired()
.HasColumnName("browser")
.HasColumnType("char(128)")
.HasDefaultValueSql("''");
entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("char(20)").
HasDefaultValueSql("''");
entity.Property(e => e.Date)
.IsRequired()
.HasColumnName("date")
.HasColumnType("char(20)")
.HasDefaultValueSql("''");
entity.Property(e => e.Ip).IsRequired().HasColumnName("ip").HasColumnType("char(16)").
HasDefaultValueSql("''");
entity.Property(e => e.Ip)
.IsRequired()
.HasColumnName("ip")
.HasColumnType("char(16)")
.HasDefaultValueSql("''");
entity.Property(e => e.Referer).IsRequired().HasColumnName("referer").HasColumnType("char(255)").
HasDefaultValueSql("''");
entity.Property(e => e.Referer)
.IsRequired()
.HasColumnName("referer")
.HasColumnType("char(255)")
.HasDefaultValueSql("''");
});
modelBuilder.Entity<Gpu>(entity =>
@@ -624,8 +662,11 @@ namespace Marechai.Database.Models
entity.Property(e => e.ModelCode).HasColumnName("model_code").HasColumnType("varchar(45)");
entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("char(128)").
HasDefaultValueSql("''");
entity.Property(e => e.Name)
.IsRequired()
.HasColumnName("name")
.HasColumnType("char(128)")
.HasDefaultValueSql("''");
entity.Property(e => e.Package).HasColumnName("package").HasColumnType("varchar(45)");
@@ -635,8 +676,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.Transistors).HasColumnName("transistors").HasColumnType("bigint(20)");
entity.HasOne(d => d.Company).WithMany(p => p.Gpus).HasForeignKey(d => d.CompanyId).
HasConstraintName("fk_gpus_company");
entity.HasOne(d => d.Company)
.WithMany(p => p.Gpus)
.HasForeignKey(d => d.CompanyId)
.HasConstraintName("fk_gpus_company");
});
modelBuilder.Entity<GpusByMachine>(entity =>
@@ -653,11 +696,15 @@ namespace Marechai.Database.Models
entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)");
entity.HasOne(d => d.Gpu).WithMany(p => p.GpusByMachine).HasForeignKey(d => d.GpuId).
HasConstraintName("fk_gpus_by_machine_gpu");
entity.HasOne(d => d.Gpu)
.WithMany(p => p.GpusByMachine)
.HasForeignKey(d => d.GpuId)
.HasConstraintName("fk_gpus_by_machine_gpu");
entity.HasOne(d => d.Machine).WithMany(p => p.Gpus).HasForeignKey(d => d.MachineId).
HasConstraintName("fk_gpus_by_machine_machine");
entity.HasOne(d => d.Machine)
.WithMany(p => p.Gpus)
.HasForeignKey(d => d.MachineId)
.HasConstraintName("fk_gpus_by_machine_machine");
});
modelBuilder.Entity<GpusByOwnedMachine>(entity =>
@@ -699,13 +746,17 @@ namespace Marechai.Database.Models
entity.Property(e => e.ExtensionId).HasColumnName("extension_id").HasColumnType("int(11)");
entity.HasOne(d => d.Extension).WithMany(p => p.InstructionSetExtensionsByProcessor).
HasForeignKey(d => d.ExtensionId).OnDelete(DeleteBehavior.ClientSetNull).
HasConstraintName("fk_extension_extension_id");
entity.HasOne(d => d.Extension)
.WithMany(p => p.InstructionSetExtensionsByProcessor)
.HasForeignKey(d => d.ExtensionId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_extension_extension_id");
entity.HasOne(d => d.Processor).WithMany(p => p.InstructionSetExtensions).
HasForeignKey(d => d.ProcessorId).OnDelete(DeleteBehavior.ClientSetNull).
HasConstraintName("fk_extension_processor_id");
entity.HasOne(d => d.Processor)
.WithMany(p => p.InstructionSetExtensions)
.HasForeignKey(d => d.ProcessorId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_extension_processor_id");
});
modelBuilder.Entity<InstructionSet>(entity =>
@@ -765,17 +816,29 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.Browser).IsRequired().HasColumnName("browser").HasColumnType("char(128)").
HasDefaultValueSql("''");
entity.Property(e => e.Browser)
.IsRequired()
.HasColumnName("browser")
.HasColumnType("char(128)")
.HasDefaultValueSql("''");
entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("char(20)").
HasDefaultValueSql("''");
entity.Property(e => e.Date)
.IsRequired()
.HasColumnName("date")
.HasColumnType("char(20)")
.HasDefaultValueSql("''");
entity.Property(e => e.Ip).IsRequired().HasColumnName("ip").HasColumnType("char(16)").
HasDefaultValueSql("''");
entity.Property(e => e.Ip)
.IsRequired()
.HasColumnName("ip")
.HasColumnType("char(16)")
.HasDefaultValueSql("''");
entity.Property(e => e.Referer).IsRequired().HasColumnName("referer").HasColumnType("char(255)").
HasDefaultValueSql("''");
entity.Property(e => e.Referer)
.IsRequired()
.HasColumnName("referer")
.HasColumnType("char(255)")
.HasDefaultValueSql("''");
});
modelBuilder.Entity<MachineFamily>(entity =>
@@ -792,8 +855,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("varchar(255)");
entity.HasOne(d => d.Company).WithMany(p => p.MachineFamilies).HasForeignKey(d => d.CompanyId).
HasConstraintName("fk_machine_families_company");
entity.HasOne(d => d.Company)
.WithMany(p => p.MachineFamilies)
.HasForeignKey(d => d.CompanyId)
.HasConstraintName("fk_machine_families_company");
});
modelBuilder.Entity<Machine>(entity =>
@@ -814,8 +879,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.CompanyId).HasColumnName("company").HasColumnType("int(11)").
HasDefaultValueSql("'0'");
entity.Property(e => e.CompanyId)
.HasColumnName("company")
.HasColumnType("int(11)")
.HasDefaultValueSql("'0'");
entity.Property(e => e.FamilyId).HasColumnName("family").HasColumnType("int(11)");
@@ -827,11 +894,16 @@ namespace Marechai.Database.Models
entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)").HasDefaultValueSql("'0'");
entity.HasOne(d => d.Company).WithMany(p => p.Machines).HasForeignKey(d => d.CompanyId).
OnDelete(DeleteBehavior.ClientSetNull).HasConstraintName("fk_machines_company");
entity.HasOne(d => d.Company)
.WithMany(p => p.Machines)
.HasForeignKey(d => d.CompanyId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_machines_company");
entity.HasOne(d => d.Family).WithMany(p => p.Machines).HasForeignKey(d => d.FamilyId).
HasConstraintName("fk_machines_family");
entity.HasOne(d => d.Family)
.WithMany(p => p.Machines)
.HasForeignKey(d => d.FamilyId)
.HasConstraintName("fk_machines_family");
});
modelBuilder.Entity<OwnedMachine>(entity =>
@@ -1091,8 +1163,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.Usage).HasColumnName("usage").HasColumnType("int(11)").HasDefaultValueSql("'0'");
entity.HasOne(d => d.Machine).WithMany(p => p.Memory).HasForeignKey(d => d.MachineId).
HasConstraintName("fk_memory_by_machine_machine");
entity.HasOne(d => d.Machine)
.WithMany(p => p.Memory)
.HasForeignKey(d => d.MachineId)
.HasConstraintName("fk_memory_by_machine_machine");
});
modelBuilder.Entity<MemoryByOwnedMachine>(entity =>
@@ -1120,11 +1194,16 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.Donator).IsRequired().HasColumnName("donator").HasColumnType("char(128)").
HasDefaultValueSql("''");
entity.Property(e => e.Donator)
.IsRequired()
.HasColumnName("donator")
.HasColumnType("char(128)")
.HasDefaultValueSql("''");
entity.Property(e => e.Quantity).HasColumnName("quantity").HasColumnType("decimal(11,2)").
HasDefaultValueSql("'0.00'");
entity.Property(e => e.Quantity)
.HasColumnName("quantity")
.HasColumnType("decimal(11,2)")
.HasDefaultValueSql("'0.00'");
});
modelBuilder.Entity<News>(entity =>
@@ -1139,8 +1218,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.AddedId).HasColumnName("added_id").HasColumnType("int(11)").
HasDefaultValueSql("'0'");
entity.Property(e => e.AddedId)
.HasColumnName("added_id")
.HasColumnType("int(11)")
.HasDefaultValueSql("'0'");
entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("datetime");
@@ -1223,8 +1304,10 @@ namespace Marechai.Database.Models
entity.HasOne(d => d.CountryOfBirth).WithMany(p => p.People).HasForeignKey(d => d.CountryOfBirthId);
entity.HasOne(d => d.DocumentPerson).WithOne(p => p.Person).
HasForeignKey<DocumentPerson>(d => d.PersonId).OnDelete(DeleteBehavior.SetNull);
entity.HasOne(d => d.DocumentPerson)
.WithOne(p => p.Person)
.HasForeignKey<DocumentPerson>(d => d.PersonId)
.OnDelete(DeleteBehavior.SetNull);
});
modelBuilder.Entity<Processor>(entity =>
@@ -1311,8 +1394,11 @@ namespace Marechai.Database.Models
entity.Property(e => e.ModelCode).HasColumnName("model_code").HasColumnType("varchar(45)");
entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("char(50)").
HasDefaultValueSql("''");
entity.Property(e => e.Name)
.IsRequired()
.HasColumnName("name")
.HasColumnType("char(50)")
.HasDefaultValueSql("''");
entity.Property(e => e.Package).HasColumnName("package").HasColumnType("varchar(45)");
@@ -1330,11 +1416,15 @@ namespace Marechai.Database.Models
entity.Property(e => e.Transistors).HasColumnName("transistors").HasColumnType("bigint(20)");
entity.HasOne(d => d.Company).WithMany(p => p.Processors).HasForeignKey(d => d.CompanyId).
HasConstraintName("fk_processors_company");
entity.HasOne(d => d.Company)
.WithMany(p => p.Processors)
.HasForeignKey(d => d.CompanyId)
.HasConstraintName("fk_processors_company");
entity.HasOne(d => d.InstructionSet).WithMany(p => p.Processors).HasForeignKey(d => d.InstructionSetId).
HasConstraintName("fk_processors_instruction_set");
entity.HasOne(d => d.InstructionSet)
.WithMany(p => p.Processors)
.HasForeignKey(d => d.InstructionSetId)
.HasConstraintName("fk_processors_instruction_set");
});
modelBuilder.Entity<ProcessorsByMachine>(entity =>
@@ -1355,11 +1445,15 @@ namespace Marechai.Database.Models
entity.Property(e => e.Speed).HasColumnName("speed");
entity.HasOne(d => d.Machine).WithMany(p => p.Processors).HasForeignKey(d => d.MachineId).
HasConstraintName("fk_processors_by_machine_machine");
entity.HasOne(d => d.Machine)
.WithMany(p => p.Processors)
.HasForeignKey(d => d.MachineId)
.HasConstraintName("fk_processors_by_machine_machine");
entity.HasOne(d => d.Processor).WithMany(p => p.ProcessorsByMachine).HasForeignKey(d => d.ProcessorId).
HasConstraintName("fk_processors_by_machine_processor");
entity.HasOne(d => d.Processor)
.WithMany(p => p.ProcessorsByMachine)
.HasForeignKey(d => d.ProcessorId)
.HasConstraintName("fk_processors_by_machine_processor");
});
modelBuilder.Entity<ProcessorsByOwnedMachine>(entity =>
@@ -1389,14 +1483,16 @@ namespace Marechai.Database.Models
{
e.Width,
e.Height
}).HasDatabaseName("idx_resolutions_resolution");
})
.HasDatabaseName("idx_resolutions_resolution");
entity.HasIndex(e => new
{
e.Width,
e.Height,
e.Colors
}).HasDatabaseName("idx_resolutions_resolution_with_color");
})
.HasDatabaseName("idx_resolutions_resolution_with_color");
entity.HasIndex(e => new
{
@@ -1404,17 +1500,16 @@ namespace Marechai.Database.Models
e.Height,
e.Colors,
e.Palette
}).HasDatabaseName("idx_resolutions_resolution_with_color_and_palette");
})
.HasDatabaseName("idx_resolutions_resolution_with_color_and_palette");
entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)");
entity.Property(e => e.Chars).HasColumnName("chars").HasColumnType("tinyint(1)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Chars).HasColumnName("chars").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'");
entity.Property(e => e.Colors).HasColumnName("colors").HasColumnType("bigint(20)");
entity.Property(e => e.Height).HasColumnName("height").HasColumnType("int(11)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Height).HasColumnName("height").HasColumnType("int(11)").HasDefaultValueSql("'0'");
entity.Property(e => e.Palette).HasColumnName("palette").HasColumnType("bigint(20)");
@@ -1435,11 +1530,15 @@ namespace Marechai.Database.Models
entity.Property(e => e.ResolutionId).HasColumnName("resolution").HasColumnType("int(11)");
entity.HasOne(d => d.Gpu).WithMany(p => p.ResolutionsByGpu).HasForeignKey(d => d.GpuId).
HasConstraintName("fk_resolutions_by_gpu_gpu");
entity.HasOne(d => d.Gpu)
.WithMany(p => p.ResolutionsByGpu)
.HasForeignKey(d => d.GpuId)
.HasConstraintName("fk_resolutions_by_gpu_gpu");
entity.HasOne(d => d.Resolution).WithMany(p => p.ResolutionsByGpu).HasForeignKey(d => d.ResolutionId).
HasConstraintName("fk_resolutions_by_gpu_resolution");
entity.HasOne(d => d.Resolution)
.WithMany(p => p.ResolutionsByGpu)
.HasForeignKey(d => d.ResolutionId)
.HasConstraintName("fk_resolutions_by_gpu_resolution");
});
modelBuilder.Entity<ResolutionsByScreen>(entity =>
@@ -1485,11 +1584,15 @@ namespace Marechai.Database.Models
entity.Property(e => e.SoundSynthId).HasColumnName("sound_synth").HasColumnType("int(11)");
entity.HasOne(d => d.Machine).WithMany(p => p.Sound).HasForeignKey(d => d.MachineId).
HasConstraintName("fk_sound_by_machine_machine");
entity.HasOne(d => d.Machine)
.WithMany(p => p.Sound)
.HasForeignKey(d => d.MachineId)
.HasConstraintName("fk_sound_by_machine_machine");
entity.HasOne(d => d.SoundSynth).WithMany(p => p.SoundByMachine).HasForeignKey(d => d.SoundSynthId).
HasConstraintName("fk_sound_by_machine_sound_synth");
entity.HasOne(d => d.SoundSynth)
.WithMany(p => p.SoundByMachine)
.HasForeignKey(d => d.SoundSynthId)
.HasConstraintName("fk_sound_by_machine_sound_synth");
});
modelBuilder.Entity<SoundByOwnedMachine>(entity =>
@@ -1537,8 +1640,11 @@ namespace Marechai.Database.Models
entity.Property(e => e.ModelCode).HasColumnName("model_code").HasColumnType("varchar(45)");
entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("char(50)").
HasDefaultValueSql("''");
entity.Property(e => e.Name)
.IsRequired()
.HasColumnName("name")
.HasColumnType("char(50)")
.HasDefaultValueSql("''");
entity.Property(e => e.SquareWave).HasColumnName("square_wave").HasColumnType("int(11)");
@@ -1548,8 +1654,10 @@ namespace Marechai.Database.Models
entity.Property(e => e.WhiteNoise).HasColumnName("white_noise").HasColumnType("int(11)");
entity.HasOne(d => d.Company).WithMany(p => p.SoundSynths).HasForeignKey(d => d.CompanyId).
HasConstraintName("fk_sound_synths_company");
entity.HasOne(d => d.Company)
.WithMany(p => p.SoundSynths)
.HasForeignKey(d => d.CompanyId)
.HasConstraintName("fk_sound_synths_company");
});
modelBuilder.Entity<StorageByMachine>(entity =>
@@ -1568,15 +1676,19 @@ namespace Marechai.Database.Models
entity.Property(e => e.Capacity).HasColumnName("capacity").HasColumnType("bigint(20)");
entity.Property(e => e.Interface).HasColumnName("interface").HasColumnType("int(11)").
HasDefaultValueSql("'0'");
entity.Property(e => e.Interface)
.HasColumnName("interface")
.HasColumnType("int(11)")
.HasDefaultValueSql("'0'");
entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)");
entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)").HasDefaultValueSql("'0'");
entity.HasOne(d => d.Machine).WithMany(p => p.Storage).HasForeignKey(d => d.MachineId).
HasConstraintName("fk_storage_by_machine_machine");
entity.HasOne(d => d.Machine)
.WithMany(p => p.Storage)
.HasForeignKey(d => d.MachineId)
.HasConstraintName("fk_storage_by_machine_machine");
});
modelBuilder.Entity<StorageByOwnedMachine>(entity =>
@@ -1612,10 +1724,7 @@ namespace Marechai.Database.Models
entity.HasIndex(d => d.Withdrawn);
});
modelBuilder.Entity<CurrencyInflation>(entity =>
{
entity.HasIndex(d => d.Year);
});
modelBuilder.Entity<CurrencyInflation>(entity => { entity.HasIndex(d => d.Year); });
modelBuilder.Entity<CurrencyPegging>(entity =>
{
@@ -1639,10 +1748,10 @@ namespace Marechai.Database.Models
modelBuilder.Entity<DbFile>(entity =>
{
entity.Property(e => e.Md5).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter);
entity.Property(e => e.Md5).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(_hexToBytesConverter);
entity.HasIndex(e => e.Size);
entity.HasIndex(e => e.Md5);
@@ -1731,10 +1840,10 @@ namespace Marechai.Database.Models
modelBuilder.Entity<MediaDumpFileImage>(entity =>
{
entity.Property(e => e.Md5).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter);
entity.Property(e => e.Md5).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(_hexToBytesConverter);
entity.HasOne(d => d.MediaDump).WithMany(p => p.Files).OnDelete(DeleteBehavior.Cascade);
@@ -1755,10 +1864,10 @@ namespace Marechai.Database.Models
modelBuilder.Entity<MediaDumpImage>(entity =>
{
entity.Property(e => e.Md5).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter);
entity.Property(e => e.Md5).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(_hexToBytesConverter);
entity.HasOne(d => d.MediaDump).WithOne(p => p.Image).OnDelete(DeleteBehavior.Cascade);
@@ -1773,10 +1882,10 @@ namespace Marechai.Database.Models
modelBuilder.Entity<MediaDumpSubchannelImage>(entity =>
{
entity.Property(e => e.Md5).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter);
entity.Property(e => e.Md5).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(_hexToBytesConverter);
entity.HasOne(d => d.MediaDump).WithOne(p => p.Subchannel).OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Track).WithOne(p => p.Subchannel).OnDelete(DeleteBehavior.Cascade);
@@ -1791,10 +1900,10 @@ namespace Marechai.Database.Models
modelBuilder.Entity<MediaDumpTrackImage>(entity =>
{
entity.Property(e => e.Md5).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter);
entity.Property(e => e.Md5).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha1).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha256).HasConversion(_hexToBytesConverter);
entity.Property(e => e.Sha3).HasConversion(_hexToBytesConverter);
entity.HasOne(d => d.MediaDump).WithMany(p => p.Tracks).OnDelete(DeleteBehavior.Cascade);
@@ -1823,12 +1932,16 @@ namespace Marechai.Database.Models
modelBuilder.Entity<FileDataStreamsByMediaFile>(entity =>
{
entity.HasOne(d => d.MediaFile).WithMany(p => p.DataStreams).OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.MediaFile)
.WithMany(p => p.DataStreams)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<FilesByFilesystem>(entity =>
{
entity.HasOne(d => d.Filesystem).WithMany(p => p.Files).OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Filesystem)
.WithMany(p => p.Files)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<Dump>(entity =>
@@ -1974,14 +2087,16 @@ namespace Marechai.Database.Models
modelBuilder.Entity<RequiredOperatingSystemsBySofwareVariant>(entity =>
{
entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.RequiredOperatingSystems).
OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.SoftwareVariant)
.WithMany(p => p.RequiredOperatingSystems)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<RequiredSoftwareBySoftwareVariant>(entity =>
{
entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.RequiredSoftware).
OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.SoftwareVariant)
.WithMany(p => p.RequiredSoftware)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<SoundBySoftwareVariant>(entity =>
@@ -1992,7 +2107,9 @@ namespace Marechai.Database.Models
modelBuilder.Entity<FileDataStreamsByStandaloneFile>(entity =>
{
entity.HasOne(d => d.StandaloneFile).WithMany(p => p.DataStreams).OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.StandaloneFile)
.WithMany(p => p.DataStreams)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<StandaloneFile>(entity =>
@@ -2025,10 +2142,7 @@ namespace Marechai.Database.Models
entity.HasOne(e => e.MediaDump).WithMany(e => e.Tags).OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<SoftwareVariantByCompilationMedia>(entity =>
{
entity.HasIndex(e => e.Path);
});
modelBuilder.Entity<SoftwareVariantByCompilationMedia>(entity => { entity.HasIndex(e => e.Path); });
modelBuilder.Entity<BookScan>(entity =>
{
@@ -2136,4 +2250,3 @@ namespace Marechai.Database.Models
});
}
}
}

View File

@@ -25,12 +25,11 @@
using System;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MarechaiDb
{
public int Id { get; set; }
public int Version { get; set; }
public DateTimeOffset? Updated { get; set; }
}
}

View File

@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MasteringText : BaseModel<ulong>
{
public MasteringTextType Type { get; set; }
@@ -12,4 +12,3 @@ namespace Marechai.Database.Models
[Required]
public virtual Media Media { get; set; }
}
}

View File

@@ -28,8 +28,8 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Aaru.CommonTypes;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class Media : BaseModel<ulong>
{
[Required]
@@ -68,4 +68,3 @@ namespace Marechai.Database.Models
public virtual ICollection<MediaBySoftwareVariant> Software { get; set; }
public virtual ICollection<MasteringText> MasteringTexts { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaBySoftwareVariant : BaseModel<ulong>
{
[Required]
@@ -34,4 +34,3 @@ namespace Marechai.Database.Models
[Required]
public virtual SoftwareVariant SoftwareVariant { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaDump : BaseModel<ulong>
{
[Required]
@@ -42,4 +42,3 @@ namespace Marechai.Database.Models
public virtual ICollection<Dump> Dumps { get; set; }
public virtual ICollection<MediaTagDump> Tags { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaDumpFileImage : BaseModel<ulong>
{
[Required]
@@ -48,4 +48,3 @@ namespace Marechai.Database.Models
public virtual ICollection<FilesystemsByMediaDumpFile> Filesystems { get; set; }
}
}

View File

@@ -1,8 +1,8 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaDumpImage : BaseModel<ulong>
{
public ulong MediaDumpId { get; set; }
@@ -20,4 +20,3 @@ namespace Marechai.Database.Models
public string Spamsum { get; set; }
public string AccoustId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaDumpSubchannelImage : BaseModel<ulong>
{
public short TrackSequence { get; set; }
@@ -47,4 +47,3 @@ namespace Marechai.Database.Models
public virtual MediaDump MediaDump { get; set; }
public virtual MediaDumpTrackImage Track { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaDumpTrackImage : BaseModel<ulong>
{
public short TrackSequence { get; set; }
@@ -45,4 +45,3 @@ namespace Marechai.Database.Models
public virtual MediaDump MediaDump { get; set; }
public virtual MediaDumpSubchannelImage Subchannel { get; set; }
}
}

View File

@@ -25,10 +25,9 @@
using System.Collections.Generic;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaFile : BaseFile
{
public virtual ICollection<FileDataStreamsByMediaFile> DataStreams { get; set; }
}
}

View File

@@ -1,8 +1,8 @@
using System.ComponentModel.DataAnnotations;
using Aaru.CommonTypes.Enums;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MediaTagDump : BaseModel<ulong>
{
[Required]
@@ -13,4 +13,3 @@ namespace Marechai.Database.Models
public ulong FileId { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MemoryByMachine : BaseModel<long>
{
public int MachineId { get; set; }
@@ -38,4 +38,3 @@ namespace Marechai.Database.Models
public virtual Machine Machine { get; set; }
}
}

View File

@@ -25,8 +25,8 @@
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MemoryByOwnedMachine : BaseModel<long>
{
public long OwnedMachineId { get; set; }
@@ -38,4 +38,3 @@ namespace Marechai.Database.Models
public virtual OwnedMachine OwnedMachine { get; set; }
}
}

View File

@@ -23,11 +23,10 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class MoneyDonation : BaseModel<int>
{
public string Donator { get; set; }
public decimal Quantity { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System;
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class News : BaseModel<int>
{
public DateTime Date { get; set; }
@@ -35,4 +35,3 @@ namespace Marechai.Database.Models
[DisplayName("Affected ID")]
public int AddedId { get; set; }
}
}

View File

@@ -1,7 +1,7 @@
using Aaru.CommonTypes.Enums;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
// Not for a table
public class OpticalDiscTrack
{
@@ -11,4 +11,3 @@ namespace Marechai.Database.Models
public long LastSector { get; set; }
public TrackType Type { get; set; }
}
}

View File

@@ -27,8 +27,8 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class OwnedMachine : BaseModel<long>
{
[DisplayName("Acquisition date")]
@@ -38,15 +38,19 @@ namespace Marechai.Database.Models
public StatusType Status { get; set; }
[DisplayName("Last status check date")]
public DateTime? LastStatusDate { get; set; }
[DisplayName("Available for trade or sale"), DefaultValue(false)]
[DisplayName("Available for trade or sale")]
[DefaultValue(false)]
public bool Trade { get; set; }
[DisplayName("Has original boxes"), DefaultValue(false)]
[DisplayName("Has original boxes")]
[DefaultValue(false)]
public bool Boxed { get; set; }
[DisplayName("Has original manuals"), DefaultValue(false)]
[DisplayName("Has original manuals")]
[DefaultValue(false)]
public bool Manuals { get; set; }
[DisplayName("Serial number")]
public string SerialNumber { get; set; }
[DisplayName("Serial number visible to other users"), DefaultValue(false)]
[DisplayName("Serial number visible to other users")]
[DefaultValue(false)]
public bool SerialNumberVisible { get; set; }
public int MachineId { get; set; }
public string UserId { get; set; }
@@ -61,4 +65,3 @@ namespace Marechai.Database.Models
public virtual ApplicationUser User { get; set; }
public virtual Machine Machine { get; set; }
}
}

View File

@@ -23,11 +23,10 @@
// Copyright © 2003-2021 Natalia Portillo
*******************************************************************************/
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class OwnedMachinePhoto : BasePhoto
{
public virtual OwnedMachine OwnedMachine { get; set; }
public long OwnedMachineId { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class PeopleByBook : BaseModel<long>
{
public int PersonId { get; set; }
public long BookId { get; set; }
[Column(TypeName = "char(3)"), Required]
[Column(TypeName = "char(3)")]
[Required]
public string RoleId { get; set; }
public virtual DocumentPerson Person { get; set; }
public virtual Book Book { get; set; }
public virtual DocumentRole Role { get; set; }
}
}

View File

@@ -26,8 +26,8 @@
using System;
using System.ComponentModel;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class PeopleByCompany : BaseModel<long>
{
public int PersonId { get; set; }
@@ -41,4 +41,3 @@ namespace Marechai.Database.Models
public virtual Person Person { get; set; }
public virtual Company Company { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class PeopleByDocument : BaseModel<long>
{
public int PersonId { get; set; }
public long DocumentId { get; set; }
[Column(TypeName = "char(3)"), Required]
[Column(TypeName = "char(3)")]
[Required]
public string RoleId { get; set; }
public virtual DocumentPerson Person { get; set; }
public virtual Document Document { get; set; }
public virtual DocumentRole Role { get; set; }
}
}

View File

@@ -26,17 +26,17 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marechai.Database.Models
{
namespace Marechai.Database.Models;
public class PeopleByMagazine : BaseModel<long>
{
public int PersonId { get; set; }
public long MagazineId { get; set; }
[Column(TypeName = "char(3)"), Required]
[Column(TypeName = "char(3)")]
[Required]
public string RoleId { get; set; }
public virtual DocumentPerson Person { get; set; }
public virtual MagazineIssue Magazine { get; set; }
public virtual DocumentRole Role { get; set; }
}
}

Some files were not shown because too many files have changed in this diff Show More