diff --git a/Documentation/sad/06-ai-content-and-translation.adoc b/Documentation/sad/06-ai-content-and-translation.adoc
index 8d1e9eef..0b273fab 100644
--- a/Documentation/sad/06-ai-content-and-translation.adoc
+++ b/Documentation/sad/06-ai-content-and-translation.adoc
@@ -41,7 +41,7 @@ The translation service implements a fallback chain:
=== Supported Languages
-Translations are produced for the following eight languages, identified by ISO 639-3 codes and mapped to NLLB language tags:
+Translations are produced for the following seven languages, identified by ISO 639-3 codes and mapped to NLLB language tags:
[cols="^1,^2,^2", options="header"]
|===
@@ -53,7 +53,6 @@ Translations are produced for the following eight languages, identified by ISO 6
| fra | French | fra_Latn
| ita | Italian | ita_Latn
| nld | Dutch | nld_Latn
-| lat | Latin | lat_Latn
| por | Portuguese | por_Latn
|===
diff --git a/Marechai.App/Resources/Resources.la.resx b/Marechai.App/Resources/Resources.la.resx
deleted file mode 100644
index 713abc7a..00000000
--- a/Marechai.App/Resources/Resources.la.resx
+++ /dev/null
@@ -1,2129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Marechai.App-la
-
-
- Nuntii
-
-
- Libri
-
-
- Societates
-
-
- Computatra
-
-
- Consolae Ludorum
-
-
- Smartphones
-
-
- Documenta
-
-
- Effusiones
-
-
- Unitates Processoris Graphici
-
-
- Acta Diurna
-
-
- Personae
-
-
- Processores
-
-
- Programmata
-
-
- Synthesizatores Soni
-
-
- Configuratio
-
-
- Intrare
-
-
- Exire
-
-
- Societas activa est.
-
-
- Societas vendita est ad {0} die {1}.
-
-
- Societas vendita est die {0} ad societatem ignotam.
-
-
- Societas vendita est ad {0} die ignoto.
-
-
- Societas vendita est ad societatem ignotam die ignoto.
-
-
- Societas coniuncta est die {0} ad formandum {1}.
-
-
- Societas coniuncta est die {0} ad formandam societatem ignotam.
-
-
- Societas coniuncta est die ignoto ad formandum {0}.
-
-
- Societas coniuncta est ad formandam societatem ignotam die ignoto.
-
-
- Status societatis praesens ignotus est.
-
-
- dies ignotus
-
-
- Societas ruinam declaravit die {0}.
-
-
- Societas ruinam declaravit die ignoto.
-
-
- Societas operationes cessavit die {0}.
-
-
- Societas operationes cessavit die ignoto.
-
-
- Societas renominata est ad {0} die {1}.
-
-
- Societas renominata est die {0} ad nomen ignotum.
-
-
- Societas renominata est ad {0} die ignoto.
-
-
- Societas renominata est die ignoto ad nomen ignotum.
-
-
- Aspectus
-
-
- Elige thema tuum praeferendum
-
-
- Thema
-
-
- Mutationes thematis applicabuntur proximo applicationis initio.
-
-
- De Hac
-
-
- Versio 1.0
-
-
- Lucidum
-
-
- Obscurum
-
-
- Systema
-
-
- Praefinitum
-
-
- Windows 3.11
-
-
- Mac OS 9
-
-
- DOS / Turbo Vision
-
-
- Amiga Workbench
-
-
- CDE / Motif
-
-
- CDE / Motif (Solaris)
-
-
- Cyberpunctum
-
-
- Phosphorus (CRT Viridis)
-
-
- Phosphorus (CRT Sucinus)
-
-
- Windows 95
-
-
- Claritas
-
-
- Thema Coloris
-
-
- Systema Designi
-
-
- Mutationes systematis designi applicabuntur proximo applicationis initio. Mutationes thematis coloris statim applicabuntur.
-
-
- Intra in Marechai
-
-
- Salve iterum! Quaeso intra ut procedas.
-
-
- Inscriptio Electronica
-
-
- Inscribe inscriptionem electronicam tuam
-
-
- Tessera
-
-
- Inscribe tesseram tuam
-
-
- Intrare
-
-
- Intrare
-
-
- Intrans...
-
-
- Oblitus es tesseram tuam?
-
-
- Non habes rationem?
-
-
- Inscribere
-
-
- Tessera oblita
-
-
- Inscriptionem electronicam rationis tuae insere et nexum tibi mittemus ad tesseram restituendam. Aperi nexum in navigatro telae ut tesseram novam eligas.
-
-
- Inscriptio electronica
-
-
- Mitte nexum
-
-
- Reverti ad inscriptionem
-
-
- Inspice cistam tuam intrantem
-
-
- Si ratio cum ea inscriptione electronica exstat, nexum tesserae restituendae ei misimus. Aperi nexum in navigatro telae ut tesseram novam eligas.
-
-
- Inscriptio electronica necessaria est.
-
-
- Inscriptio electronica necessaria est.
-
-
- Tessera necessaria est.
-
-
- Ingressus defecit. Quaeso verifica testimonia tua et iterum conare.
-
-
- Administratio Usorum
-
-
- Navigatio
-
-
- Societates
-
-
- Societates in repositorio
-
-
- Nullae societates inventae
-
-
- Societatum data onerare non potuit. Quaeso iterum postea conare.
-
-
- Particularia Societatis
-
-
- ID societatis invalidus.
-
-
- Societas non inventa.
-
-
- Particularia societatis onerare non potuit. Quaeso iterum postea conare.
-
-
- Nulla computatra inventa pro hoc filtro
-
-
- Computatra onerare non potuit. Quaeso iterum postea conare.
-
-
- Omnia Computatra
-
-
- Perscrutans omnia computatra in repositorio
-
-
- Computatra Incipientis cum
-
-
- Monstrans computatra quae incipiunt cum
-
-
- Computatra ex
-
-
- Monstrans computatra emissa in
-
-
- Computatra
-
-
- Computatra in repositorio
-
-
- Perscrutare per Annum ({0} - {1})
-
-
- Nulla computatra inventa
-
-
- Computatrorum data onerare non potuit. Quaeso iterum postea conare.
-
-
- Navigare non potuit. Quaeso iterum conare.
-
-
- Nullae consolae inventa pro hoc filtro
-
-
- Consolae onerare non potuit. Quaeso iterum postea conare.
-
-
- Perscrutans omnes consolas in repositorio
-
-
- Monstrans consolas quae incipiunt cum
-
-
- Monstrans consolas emissas in
-
-
- Consolae Ludorum
-
-
- Consolae in repositorio
-
-
- Consolarum data onerare non potuit. Quaeso iterum postea conare.
-
-
- Particularia GPU
-
-
- ID GPU invalidus
-
-
- Unitas processoris graphici non inventa
-
-
- Framebuffer
-
-
- Programmata
-
-
- Nulla
-
-
- Textus
-
-
- Pixel
-
-
- {0}x{1} characteres
-
-
- Unitates Processoris Graphici
-
-
- Nullae unitates processoris graphici inventae
-
-
- Unitates processoris graphici onerare non potuit. Quaeso iterum postea conare.
-
-
- Machina non inventa
-
-
- {0} MHz
-
-
- {0} bits
-
-
- {0} nuclei
-
-
- {0} bytes ({1})
-
-
- {0} bytes
-
-
- Ignotus
-
-
- {0} voces
-
-
- Repositorium
-
-
- Novum computatrum in repositorio
-
-
- Nova consola in repositorio
-
-
- Novum computatrum in collectione
-
-
- Nova consola in collectione
-
-
- Computatrum renovatum in repositorio
-
-
- Consola renovata in repositorio
-
-
- Computatrum renovatum in collectione
-
-
- Consola renovata in collectione
-
-
- Liber novus in datorum basi
-
-
- Liber renovatus in datorum basi
-
-
- Documentum novum in datorum basi
-
-
- Documentum renovatum in datorum basi
-
-
- Ephemeris nova in datorum basi
-
-
- Ephemeris renovata in datorum basi
-
-
- Persona nova in datorum basi
-
-
- Persona renovata in datorum basi
-
-
- Programma novum in datorum basi
-
-
- Programma renovatum in datorum basi
-
-
- Versio programmatis nova in datorum basi
-
-
- Versio programmatis renovata in datorum basi
-
-
- Editio programmatis nova in datorum basi
-
-
- Editio programmatis renovata in datorum basi
-
-
- GPU novum in datorum basi
-
-
- GPU renovatum in datorum basi
-
-
- Synthesizer sonorum novus in datorum basi
-
-
- Synthesizer sonorum renovatus in datorum basi
-
-
- Processor novus in datorum basi
-
-
- Processor renovatus in datorum basi
-
-
- Nulli nuntii disponibiles
-
-
- Nuntios onerare non potuit. Quaeso iterum postea conare.
-
-
- Photographia non inventa
-
-
- {0} DPI
-
-
- d MMMM yyyy 'hora' HH:mm
-
-
- Imaginem photographiae onerare non potuit
-
-
- Particularia Processoris
-
-
- ID processoris invalidus
-
-
- Processor non inventus
-
-
- Particularia processoris onerare non potuit. Quaeso iterum postea conare.
-
-
- Processores
-
-
- Nulli processores inventi
-
-
- Processores onerare non potuit. Quaeso iterum postea conare.
-
-
- Configuratio
-
-
- Particularia Synthesizatoris Soni
-
-
- ID synthesizatoris soni invalidus
-
-
- Synthesizator soni non inventus
-
-
- Particularia synthesizatoris soni onerare non potuit. Quaeso iterum postea conare.
-
-
- Ignota
-
-
- Synthesizatores soni onerare non potuit. Quaeso iterum postea conare.
-
-
- Usores onerare non potuit. Quaeso iterum conare.
-
-
- Usorem delere non potuit.
-
-
- Addere Usorem
-
-
- Emendare Usorem
-
-
- Mutare Tesseram
-
-
- Administrare Munera
-
-
- Inscriptio electronica et nomen usoris necessaria sunt.
-
-
- Tessera necessaria est pro novis usoribus.
-
-
- Tesserae non conveniunt.
-
-
- Usorem servare non potuit.
-
-
- Tessera necessaria est.
-
-
- Tesseram mutare non potuit.
-
-
- Usor iam habet hoc munus.
-
-
- Munus addere non potuit.
-
-
- Munus removere non potuit.
-
-
- Retro
-
-
- Quaerere societates...
-
-
- Onerando...
-
-
- Error
-
-
- Status
-
-
- Fundata
-
-
- Nomen Legale
-
-
- Patria
-
-
- Inscriptio
-
-
- Nexus
-
-
- Pagina Interretialis
-
-
- Twitter
-
-
- Facebook
-
-
- Historia Insignis
-
-
- Computatra
-
-
- Filtrare computatra...
-
-
- Consolae
-
-
- Filtrare consolas...
-
-
- Computatra Onerare Non Potest
-
-
- Iterum Conare
-
-
- EVENTUS:
-
-
- computatra
-
-
- Perscrutare per Litteram
-
-
- Omnia Computatra
-
-
- Quaerere computatra...
-
-
- Consolas Onerare Non Potest
-
-
- consolae
-
-
- Omnes Consolae
-
-
- Quaerere consolas...
-
-
- Fabricator
-
-
- Fabricator
-
-
- Editor
-
-
- Distributor
-
-
- Portator
-
-
- Localizator
-
-
- Fabricator
-
-
- Licentiator
-
-
- Graphica addita
-
-
- Protectio copiae
-
-
- Scaenae cinematicae
-
-
- Captio motus
-
-
- Sonus additus
-
-
- Designatio involucri
-
-
- Registratio vocis
-
-
- Machina ludi
-
-
- Middleware
-
-
- Probatio
-
-
- Contributiones
-
-
- Litterae
-
-
- Productor
-
-
- Alia
-
-
- Codex Exemplaris
-
-
- Introductum
-
-
- Fasciculus
-
-
- Processus
-
-
- Processus (nm)
-
-
- Magnitudo Die (mm²)
-
-
- Transistores
-
-
- Resolutiones Susceptae
-
-
- Unitates Processoris Graphici Onerare Non Potest
-
-
- unitates processoris graphici
-
-
- Machinam Onerare Non Potest
-
-
- PROTOTYPUS
-
-
- Dies Introductionis
-
-
- Familia
-
-
- Exemplar
-
-
- Processores
-
-
- Memoria
-
-
- Unitates Processoris Graphici
-
-
- Synthesizatores Soni
-
-
- Repositorium
-
-
- Programma
-
-
- Photographiae
-
-
- Nuntii Recentes
-
-
- Mane certior de additionibus recentissimis repositorii
-
-
- Onerando nuntios recentes...
-
-
- Nuntios Onerare Non Potest
-
-
- Onerando photographiam...
-
-
- Photographiam Onerare Non Potest
-
-
- Machina
-
-
- Nomen
-
-
- Societas
-
-
- Camera
-
-
- Fabricator
-
-
- Exemplar
-
-
- Lens
-
-
- Programmata
-
-
- Configuratio Expositionis
-
-
- Apertura
-
-
- Tempus Expositionis
-
-
- Modus Expositionis
-
-
- Programma Expositionis
-
-
- Valor ISO
-
-
- Fulgor & Lux
-
-
- Fulgor
-
-
- Fons Lucis
-
-
- Modus Mensurae
-
-
- Aequilibrium Albi
-
-
- Longitudo Focalis
-
-
- Aequivalens 35mm
-
-
- Zoom Digitalis
-
-
- Proprietates Imaginis
-
-
- Spatium Coloris
-
-
- Contrarium
-
-
- Saturatio
-
-
- Acumen
-
-
- Orientatio
-
-
- Typus Capturae Scenae
-
-
- Resolutio
-
-
- Resolutio Horizontalis
-
-
- Resolutio Verticalis
-
-
- Unitas Resolutionis
-
-
- Archivum & Metadata
-
-
- Forma Originalis
-
-
- Dies Captus
-
-
- Dies Impositus
-
-
- Versio EXIF
-
-
- Auctor
-
-
- Licentia
-
-
- Commentarii
-
-
- Fons
-
-
- Provecta
-
-
- Methodus Sensus
-
-
- Spatium Distantiae Subiecti
-
-
- Velocitas (MHz)
-
-
- Nuclei
-
-
- Fila per Nucleum
-
-
- Processores
-
-
- Onerando processores...
-
-
- Processores Onerare Non Potest
-
-
- Voces
-
-
- Frequentia (Hz)
-
-
- Profunditas (bits)
-
-
- Typus
-
-
- Synthesizatores Soni Onerare Non Potest
-
-
- synthesizatores soni
-
-
- Administratio Usorum
-
-
- Administrare usores, munera, et potestates
-
-
- Accessus Denegatus
-
-
- Debes esse Uberadmin ad administrationem usorum accedere.
-
-
- Usores Onerare Non Potest
-
-
- Addere Usorem
-
-
- Renovare
-
-
- Inscriptio Electronica
-
-
- Nomen Usoris
-
-
- Telephonium
-
-
- Munera
-
-
- Actiones
-
-
- Emendare
-
-
- Tessera
-
-
- Munera
-
-
- Delere
-
-
- Inscriptio electronica necessaria est
-
-
- Tessera necessaria est
-
-
- Petitio mala
-
-
- Testimonia invalida
-
-
- Administratio
-
-
- Administratio
-
-
- Reditus ad Navigationem
-
-
- Administratio Societatum
-
-
- Administratio Societatum
-
-
- Societates earumque singula administrare
-
-
- Aditus Negatus
-
-
- Administrator esse debes ad societatum administrationem.
-
-
- Societatem Addere
-
-
- Renovare
-
-
- Nomen
-
-
- Nomen Legale
-
-
- Natio
-
-
- Vendita Ad
-
-
- Mutare
-
-
- Delere
-
-
- Descriptio
-
-
- Societatem Addere
-
-
- Societatem Mutare
-
-
- Descriptionem Mutare
-
-
- Nomen
-
-
- Nomen Legale
-
-
- Status
-
-
- Condita
-
-
- Dies Venditionis
-
-
- Vendita Ad
-
-
- Natio
-
-
- Inscriptio
-
-
- Urbs
-
-
- Provincia
-
-
- Numerus Postalis
-
-
- Mensis conditionis ignotus
-
-
- Dies conditionis ignotus
-
-
- Mensis venditionis ignotus
-
-
- Dies venditionis ignotus
-
-
- Servare
-
-
- Rescindere
-
-
- Nomen necessarium est.
-
-
- Societates onerare non potuit.
-
-
- Societatem servare non potuit.
-
-
- Societatem delere non potuit.
-
-
- Descriptionem servare non potuit.
-
-
- Ignotum
-
-
- Activa
-
-
- Vendita
-
-
- Coniuncta
-
-
- Decoctrix
-
-
- Exstincta
-
-
- Renominata
-
-
- Administratio GPU
-
-
- Administratio GPU
-
-
- Unitates processus graphici administrare
-
-
- Aditus Negatus
-
-
- Administrator esse debes ad GPU administrationem.
-
-
- GPU Addere
-
-
- Renovare
-
-
- GPUs filtrare...
-
-
- Nomen
-
-
- Societas
-
-
- Codex Exemplaris
-
-
- Mutare
-
-
- Delere
-
-
- GPU Addere
-
-
- GPU Mutare
-
-
- Nomen
-
-
- Societas
-
-
- Codex Exemplaris
-
-
- Introductum
-
-
- Involucrum
-
-
- Processus
-
-
- Processus (nm)
-
-
- Magnitudo Die (mm²)
-
-
- Transistores
-
-
- Resolutiones Sustentae
-
-
- Resolutionem ad addendum eligere...
-
-
- GPUs onerare non potuit.
-
-
- GPU servare non potuit.
-
-
- GPU delere non potuit.
-
- Administratio Processorum
- Administratio Processorum
- Processores eorumque specificaciones administrare
- Aditus Negatus
- Administrator esse debes ad processorum administrationem.
- Processorem Addere
- Renovare
- Processores filtrare...
- Nomen
- Societas
- Codex Exemplaris
- Mutare
- Delere
- Processorem Addere
- Processorem Mutare
- Nomen
- Societas
- Codex Exemplaris
- Instructionum Corpus
- Introductum
- Celeritas (MHz)
- Nuclei
- Fila per Nucleum
- Via Datorum (bits)
- Via Inscriptionum (bits)
- Involucrum
- Processus
- Processus (nm)
- Magnitudo Die (mm²)
- Transistores
- Registra Generalia
- Magnitudo GPR (bits)
- Registra Puncti Fluitantis
- Magnitudo FPR (bits)
- Registra SIMD
- Magnitudo SIMD (bits)
- Cache L1 Instructionum (KiB)
- Cache L1 Datorum (KiB)
- Cache L2 (KiB)
- Cache L3 (KiB)
- Informationes Fundamentales
- Praestantia
- Via
- Fabricatio
- Registra
- Cache
- Extensiones ISA
- Extensionem ad addendum eligere...
- Processores onerare non potuit.
- Processorem servare non potuit.
- Processorem delere non potuit.
- Administratio Corporum Instructionum
- Administratio Corporum Instructionum
- Corpora instructionum processorum administrare
- Aditus Negatus
- Administrator esse debes ad corporum instructionum administrationem.
- Corpus Instructionum Addere
- Renovare
- Corpora instructionum filtrare...
- Nomen
- Mutare
- Delere
- Corpus Instructionum Addere
- Corpus Instructionum Mutare
- Nomen
- Hoc nomen iam ab alio corpore instructionum adhibetur.
- Corpora instructionum onerare non potuit.
- Corpus instructionum servare non potuit.
- Corpus instructionum delere non potuit.
- Administratio Extensionum ISA
- Administratio Extensionum Corporum Instructionum
- Extensiones corporum instructionum administrare
- Aditus Negatus
- Administrator esse debes ad extensionum ISA administrationem.
- Extensionem Addere
- Renovare
- Extensiones filtrare...
- Extensio
- Mutare
- Delere
- Extensionem Addere
- Extensionem Mutare
- Nomen Extensionis
- Hoc nomen extensionis iam adhibetur.
- Extensiones onerare non potuit.
- Extensionem servare non potuit.
- Extensionem delere non potuit.
- Administratio Resolutionum
- Administratio Resolutionum
- Resolutiones scrinii administrare
- Aditus Negatus
- Administrator esse debes ad resolutionum administrationem.
- Resolutionem Addere
- Renovare
- Resolutiones filtrare...
- Latitudo
- Altitudo
- Colores
- Paleta
- Char.
- Gris.
- Mutare
- Delere
- Resolutionem Addere
- Resolutionem Mutare
- Latitudo (puncta)
- Altitudo (puncta)
- Colores
- Magnitudo Paletae
- Characteribus fundatum
- Gradatio grisea
- Latitudo et altitudo saltem 1 esse debent.
- Resolutiones onerare non potuit.
- Resolutionem servare non potuit.
- Resolutionem delere non potuit.
- Administratio Synthetizatorum
- Administratio Synthetizatorum Soni
- Synthetizatores soni et microchipas audio administrare
- Aditus Negatus
- Administrator esse debes ad synthetizatorum administrationem.
- Synthetizatorem Addere
- Renovare
- Synthetizatores filtrare...
- Nomen
- Societas
- Codex Exemplaris
- Mutare
- Delere
- Synthetizatorem Addere
- Synthetizatorem Mutare
- Nomen
- Societas
- Codex Exemplaris
- Introductum
- Voces PCM
- Frequentia (Hz)
- Profunditas Bitorum
- Canales Undae Quadratae
- Canales Strepitus Albi
- Genus
- Synthetizatores onerare non potuit.
- Synthetizatorem servare non potuit.
- Synthetizatorem delere non potuit.
- Administratio Scriniorum
- Administratio Scriniorum
- Scrinia ostendendi administrare
- Aditus Negatus
- Administrator esse debes ad scriniorum administrationem.
- Scrinium Addere
- Renovare
- Scrinia filtrare...
- Diagonalis (")
- Genus
- Magnitudo
- Mutare
- Delere
- Scrinium Addere
- Scrinium Mutare
- Diagonalis (unciae)
- Genus (e.g. CRT, LCD, OLED)
- Latitudo (mm)
- Altitudo (mm)
- Colores Efficaces
- Resolutio Nativa
- Resolutiones Sustentae
- Resolutionem ad addendum eligere...
- Diagonalis maior quam 0 esse debet.
- Resolutio nativa eligi debet.
- Scrinia onerare non potuit.
- Scrinium servare non potuit.
- Scrinium delere non potuit.
- Administratio Machinarum
- Administratio Machinarum
- Computatores et consolia administrare
- Aditus Negatus
- Administrator esse debes ad machinarum administrationem.
- Machinam Addere
- Renovare
- Machinas filtrare...
- Nomen
- Societas
- Exemplar
- Mutare
- Delere
- Informationes Fundamentales
- Nomen
- Exemplar
- Genus
- Introductum
- Societas
- Familia
- GPUs
- Processores
- Synthetizatores Soni
- Scrinia
- Memoria
- Repositorium
- Programmatum suggestus
- Societas eligi debet.
- Ignotum
- Computator
- Consolium
- Machinas onerare non potuit.
- Machinam servare non potuit.
- Machinam delere non potuit.
- Administratio Familiarum
- Administratio Familiarum Machinarum
- Familias productorum administrare
- Aditus Negatus
- Administrator esse debes ad familiarum administrationem.
- Familiam Addere
- Renovare
- Familias filtrare...
- Nomen
- Societas
- Mutare
- Delere
- Familiam Addere
- Familiam Mutare
- Nomen
- Societas
- Familias onerare non potuit.
- Familiam servare non potuit.
- Familiam delere non potuit.
- Insignia societatis
- Insignia societatis videre, imponere et administrare
- Aditus negatus
- Administrator esse debes ut insignia societatis administres.
- Insigne imponere
- Renovare
- Annum mutare
- Delere
- Annum insignis mutare
- Annus
- Annus ignotus
- Insigne imponitur...
- Insignia onerare non potuit.
- Insigne imponere non potuit.
- Insigne delere non potuit.
- Annum servare non potuit.
- Insignia
- Imagines machinae
- Videre, imponere et administrare imagines machinarum
- Accessus negatus
- Administrator esse debes ut imagines machinarum administres.
- Imaginem imponere
- Licentiam elige...
- Licentiam elige antequam imponas.
- Fons URL (optionalis)
- Imaginem imponere
- Imago imponitur...
- Imagines onerare non potuit.
- Imaginem imponere non potuit.
- Imaginem delere non potuit.
- Singula videre
- Delere
- Imagines
- Renovare
- Administratio personarum
- Administratio personarum
- Personas addere, mutare et delere
- Accessus negatus
- Privilegia administratoris ad personas administrandas necessaria sunt.
- Personam addere
- Personas renovare
- Personas quaerere...
- Nomen
- Cognomen
- Patria natalis
- Dies natalis
- Dies mortis
- Mutare
- Delere
- Nomen
- Cognomen
- Cognomen fictum
- Nomen ostendendum
- Patria natalis
- Dies natalis
- Dies mortis
- Pagina interretialis
- Twitter
- Facebook
- Personam addere
- Personam mutare
- Personas onerare non potuit.
- Personam delere non potuit.
- Personam servare non potuit.
- Nomen necessarium est.
- Lingua
- Translationes exsistentes
- Translationem delere non potuit.
- Descriptio
- Administratio librorum
- Libros in basi datorum administrare
- Aditus denegatus
- Potestatem libros administrandi non habes.
- Librum addere
- Renovare
- Libros quaerere...
- Titulus
- Titulus originalis
- Titulus ordinationis
- ISBN
- Paginae
- Patria
- Mutare
- Delere
- Synopsis
- Titulus
- Titulus originalis
- Titulus ordinationis
- ISBN
- Paginae
- Editio
- Publicatum
- Patria
- Editio prior
- Liber fons
- Personae
- Societates
- Machinae
- Familiae machinarum
- Synopsis
- Librum addere
- Librum mutare
- Libros onerare non potuit.
- Librum delere non potuit.
- Librum servare non potuit.
- Titulus necessarius est.
- Administratio librorum
- Tegumentum
- Tegumentum imponere
- Tegumentum delere
- Nulla imago tegumenti imposita.
- Tegumentum imponitur...
- Tegumentum imponere non potuit.
- Tegumentum delere non potuit.
- Administratio Documentorum
- Documenta in basi datorum administrare
- Accessus Denegatus
- Privilegia administratoris necessaria sunt ad documenta administranda.
- Documentum Addere
- Renovare
- Documenta quaerere...
- Titulus
- Titulus Originalis
- Titulus ordinationis
- Natio
- Emendare
- Delere
- Titulus
- Titulus Originalis
- Titulus ordinationis
- Editum
- Natio
- Personae
- Societates
- Machinae
- Familiae Machinarum
- Administratio Documentorum
- Documentum Addere
- Documentum Emendare
- Documenta onerare non potuit.
- Documentum servare non potuit.
- Documentum delere non potuit.
- Titulus necessarius est.
- Administratio ephemeridum
- Administrare ephemerides
- Aditus negatus
- Aditus administratoris requiritur ad ephemerides administrandas.
- Addere ephemeridem
- Renovare
- Quaerere ephemerides...
- Titulus
- Titulus originalis
- Titulus ordinationis
- ISSN
- Patria
- Mutare
- Delere
- Titulus
- Titulus originalis
- Titulus ordinationis
- ISSN
- Editum
- Prima publicatio
- Patria
- Personae
- Societates
- Machinae
- Familiae machinarum
- Administratio ephemeridum
- Addere ephemeridem
- Mutare ephemeridem
- Ephemerides onerare non potuit.
- Ephemeridem servare non potuit.
- Ephemeridem delere non potuit.
- Titulus necessarius est.
-
- Aditus denegatus
- Privilegia administratoris necessaria sunt ad hanc paginam adiendum.
- Addere
- Mutare
- Nomen
- Nomen
- Quaerere...
- Error
- Societas
- Munus
- Parens
- Introductum
- Societates
- Munera societatum
- Versiones
- Variantes
- Subvariantes
- Systema operans
- Ludus
- Series versionis necessaria est.
- Versio programmatis necessaria est.
-
- Parens
- Introductum
- Familia
- Versio
- Versio publica
- Nomen secretum
- Versio programmatis
- Suggestus
- Regio
- Editor
- Dies editionis
-
- Series versionis
- Versio publica
- Nomen secretum
- Versio parentis
- Versio programmatis
- Suggestus
- Regio
- Editor
- Dies editionis
-
- Administratio suggestuum programmaticiorum
- Administrare suggestus programmaticos (e.g., x86, ARM, PowerPC)
- Aditus denegatus
- Privilegia administratoris necessaria sunt ad suggestus programmaticos administrandos.
- Suggestus quaerere...
- Addere suggestum
- Administratio familiarum programmaticiorum
- Administrare familias programmaticas (e.g., Windows, macOS, Linux)
- Administratio programmatum
- Administrare programmata
- Administratio editionum programmatum
- Administrare editiones programmatum per suggestus et regiones
-
- Programmata
- Editiones programmatum
- Suggestus programmatici
- Familiae programmaticae
-
- Addere suggestum programmaticum
- Mutare suggestum programmaticum
- Addere familiam programmaticam
- Mutare familiam programmaticam
- Addere programma
- Mutare programma
- Addere versionem
- Mutare versionem
- Addere editionem programmatis
- Mutare editionem programmatis
-
- Versiones pro: {0}
-
- Suggestus programmaticos onerare non potuit.
- Suggestum programmaticum delere non potuit.
- Suggestum programmaticum servare non potuit.
- Familias programmaticas onerare non potuit.
- Familiam programmaticam delere non potuit.
- Familiam programmaticam servare non potuit.
- Programmata onerare non potuit.
- Programma delere non potuit.
- Programma servare non potuit.
- Versiones programmatum onerare non potuit.
- Versionem programmatis delere non potuit.
- Versionem programmatis servare non potuit.
- Editiones programmatum onerare non potuit.
- Editionem programmatis delere non potuit.
- Editionem programmatis servare non potuit.
- Omnes libri
- Libros quaerere...
- Error in libris onerandis
- libri
- Synopsis
- Auctores et contributores
- Editores et societates
- Machinae pertinentes
- Familiae machinarum pertinentes
- Editio prior
- Libri
- Libri in basi datorum
- Nulli libri inventi
- Error in datis librorum onerandis. Quaeso, iterum posterius tempta.
- Omnes libri
- Omnes libros in basi datorum perlustrare
- Libri incipientes ab
- Libri ostenduntur qui incipiunt ab
- Libri ab anno
- Libri ostenduntur editi anno
- Nulli libri inventi pro hoc filtro
- Error in libris onerandis. Quaeso, iterum posterius tempta.
- Liber non inventus
- Omnia documenta
- Documenta quaerere...
- Error in documentis onerandis
- documenta
- Synopsis
- Auctores et contributores
- Editores et societates
- Machinae pertinentes
- Familiae machinarum pertinentes
- Documenta
- Documenta in basi datorum
- Nulla documenta inventa
- Error in datis documentorum onerandis. Quaeso, iterum posterius tempta.
- Omnia documenta
- Omnia documenta in basi datorum perlustrare
- Documenta incipientia ab
- Documenta ostenduntur quae incipiunt ab
- Documenta ab anno
- Documenta ostenduntur edita anno
- Nulla documenta inventa pro hoc filtro
- Error in documentis onerandis. Quaeso, iterum posterius tempta.
- Documentum non inventum
- Omnes ephemerides
- Ephemerides quaerere...
- Error in ephemeridibus onerandis
- ephemerides
- Synopsis
- Auctores et contributores
- Editores et societates
- Machinae pertinentes
- Familiae machinarum pertinentes
- Ephemerides
- Ephemerides in basi datorum
- Nullae ephemerides inventae
- Error in datis ephemeridum onerandis. Quaeso, iterum posterius tempta.
- Omnes ephemerides
- Omnes ephemerides in basi datorum perlustrare
- Ephemerides incipientes ab
- Ephemerides ostenduntur quae incipiunt ab
- Ephemerides ab anno
- Ephemerides ostenduntur primum editae anno
- Nullae ephemerides inventae pro hoc filtro
- Error in ephemeridibus onerandis. Quaeso, iterum posterius tempta.
- Ephemeris non inventa
- Personae
- Munus
- Initium
- Finis
- In cursu
- Personae
- In cursu
- Personae
- Personae in datorum basi
- Nullae personae inventae
- Error in personarum datis onerandis. Iterum postea temptes.
- Omnes personae
- Omnes personae in datorum basi perscrutandae
- Personae incipientes cum
- Personae ostenduntur incipientes cum
- Personae natae anno
- Personae ostenduntur natae anno
- Nullae personae inventae pro hoc filtro
- Error in personis onerandis. Iterum postea temptes.
- Persona non inventa
- Omnes personae
- Quaerere personas...
- Error in personis onerandis
- personae
- Societates
- Libri
- Documenta
- Ephemerides
-
- Programmata in datorum basi
- Nulla programmata inventa
- Erratum in programmatis datis onerando. Iterum postea conare.
- Erratum in navigando. Iterum conare.
- Omnia programmata
- Per suggestum inspicere
- Omnia programmata
- Omnia programmata in datorum basi inspiciens
- Programmata incipientes cum
- Programmata monstrantes incipientes cum
- Programmata ex
- Programmata monstrantes edita in
- Programmata per suggestum
- Programmata monstrantes pro suggestu electo
- Nulla programmata inventa pro hoc filtro
- Erratum in programmatis onerando. Iterum postea conare.
- programmata
- Erratum in programmatis onerando
- Programma non inventum
- Familia
- Societates
- Versiones
- Systema operandi
- Ludus
- Programma
- Compilatio
- Per genus filtrare
- Quodlibet genus
- Per genus filtratum: {0}
- Programma systematis
- Applicatio
- Programma evolutionis
- Programma servitoris
- Programma medium
- Firmamentum
- Programma insertum
- Genus
- Editio non inventa
- Editio programmatis
- Suggestum
- Regio
- Regiones
- Regiones
- Regionem addere
- Linguae
- Lingua
- Linguam addere
- Editor
- Dies editionis
- Codices striati
- Codices productorum
- Codex striatus
- Genus codicis striati
- Codex producti
- Editor
- GPU minima
- GPU commendatae
- Synthesizatores soni sustentati
- Synthesizator soni
-
- Software Screenshots
- Software Screenshots
- Manage screenshots for software
- Upload Screenshot
- Upload Screenshot
- Uploading screenshot...
- Edit Screenshot
- Caption
- Version
- Screenshots
- Loading screenshot...
- Zoom In
- Zoom Out
- Reset Zoom
- General
- Please select a software first
- Failed to load screenshots
- Failed to upload screenshot
- Failed to delete screenshot
- Failed to save screenshot
- Compilatio
- Programmata inclusa
- Error addendi versionem inclusam
- Error removendi versionem inclusam
- Selectio programmatis necessaria est pro editionibus non compilationis.
- Error addendi programma inclusum
- Error removendi programma inclusum
-Praecisio dieiDies plenusMensis et annus tantumAnnus tantum Software
- Credita
- Software
- Credita
-
- Codex verificationis requiritur.
- Authenticatio duplicis factoris
- Codex verificationis
- Codex recuperationis
- Verificare
- Codicem recuperationis verificare
- Mittere codicem ad epistulam meam
- Uti codice recuperationis
- Redire ad authenticatorem
- Inactivare 2FA
- Inactivare 2FA pro usuario defecit.
- Securitas
- Authenticatio duplicis factoris activa:
- Applicatio authenticatoris activa:
- Duplex factor per epistulam activus:
- Codices recuperationis reliqui:
- Applicatio authenticatoris
- Authenticatorem instituere
- Clavis manualis:
- Codex verificationis
- Activare
- Renuntiare
- Duplex factor per epistulam
- Mittere codicem ad epistulam meam
- Tessera hodierna
- Codices recuperationis loco tuto serva. Iterum non monstrabuntur.
- Servavi eos
- Configuratio authenticatoris generari non potuit.
- Codex verificationis requiritur.
- Codex verificationis invalidus.
- Authenticator activatus.
- Codex ad epistulam tuam missus.
- Codex mitti non potuit.
- Tessera et codex requiruntur.
- Duplex factor per epistulam activatus.
- Iterum mitte epistulam confirmationis
- Quaeso, electronicam tuam confirma antequam intres.
- Crea rationem
- Marechai communitas est solis invitatis. Insere codicem ab administro tibi datum, comple campos infra, et tibi mittemus per electronicam vinculum ad rationem confirmandam.
- Codex invitationis
- Electronica
- Nomen utentis
- Nomen ostentatum
- Publice in profilo tuo et contributionibus monstratur.
- Tessera
- Confirma tesseram
- Creare rationem
- Iam rationem habes? Intra
- Inspice tabellarium tuum
- Ratio creata. Misimus tibi epistulam confirmationis — preme vinculum intus (in navigatro tuo aperietur) ad rationem activandam, deinde huc reverte ad intrandum.
- Epistulam non accepisti? Iterum mitte
- Codex invitationis requiritur.
- Electronica requiritur.
- Nomen utentis requiritur.
- Nomen ostentatum requiritur.
- Tessera requiritur.
- Tesserae non congruunt.
- Inscriptio defecit.
- Iterum mitte epistulam confirmationis
- Insere electronicam qua inscripta es et tibi mittemus novum vinculum confirmationis.
- Electronica
- Mittere epistulam confirmationis
- Reverte ad introitum
- Inspice tabellarium tuum
- Si ratio cum hac electronica exstat et nondum confirmata est, novum vinculum confirmationis ad eam misimus. Aperi illud in navigatro ad activationem perficiendam.
- Electronica requiritur.
- Dele rationem meam
- Hoc rationem tuam ac data personalia perpetuo aufert. Contributiones publicae remanebunt sed anonymizatae. Post confirmationem, 30 dies habes ut sententiam mutes intrando et «Cancellare deletionem» eligendo.
- Tessera currens
- Duplex factor authenticationis activatus est
- Methodus duplicis factoris
- Mittere epistulam confirmationis
- Misimus tibi epistulam cum vinculo confirmationis. Preme illud (in navigatro tuo aperietur) ad incipiendum periodum gratiae 30 dierum.
- Reverte ad ordinationes
- Tessera currens requiritur.
- Codex duplicis factoris requiritur.
- Deletio rationis incipi non potuit.
- Ratio ad deletionem destinata
- Ratio tua ad perpetuam deletionem destinata est. Interea, maior pars sitis tibi non patet.
- Cancellare deletionem
- Demitte data mea
- Nulla petitio deletionis in ratione tua pendens est.
- Reverte ad ordinationes
- Deletio cancellata. Pergere potes uti ratione tua normaliter.
- Deletio cancellari non potuit. Quaeso, iterum proba.
- Exportatio datorum tuorum generari non potuit.
- Exportatio datorum servata.
-
\ No newline at end of file
diff --git a/Marechai.Database/Migrations/20260607183529_RemoveLatinTranslations.Designer.cs b/Marechai.Database/Migrations/20260607183529_RemoveLatinTranslations.Designer.cs
new file mode 100644
index 00000000..b8e5024c
--- /dev/null
+++ b/Marechai.Database/Migrations/20260607183529_RemoveLatinTranslations.Designer.cs
@@ -0,0 +1,12457 @@
+//
+using System;
+using Marechai.Database.Models;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Marechai.Database.Migrations
+{
+ [DbContext(typeof(MarechaiContext))]
+ [Migration("20260607183529_RemoveLatinTranslations")]
+ partial class RemoveLatinTranslations
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.11")
+ .HasAnnotation("Proxies:ChangeTracking", false)
+ .HasAnnotation("Proxies:CheckEquality", false)
+ .HasAnnotation("Proxies:LazyLoading", true)
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+ modelBuilder.Entity("Marechai.Database.Models.ApplicationRole", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("longtext");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasDatabaseName("RoleNameIndex");
+
+ b.ToTable("AspNetRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.ApplicationUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("AccessFailedCount")
+ .HasColumnType("int");
+
+ b.Property("AvatarGuid")
+ .HasColumnType("char(36)");
+
+ b.Property("Bio")
+ .HasMaxLength(2000)
+ .HasColumnType("varchar(2000)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("longtext");
+
+ b.Property("DeletionRequestedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("DisplayName")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Email")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("bit(1)");
+
+ b.Property("Facebook")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("GitHub")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("IsSystemAccount")
+ .HasColumnType("bit(1)");
+
+ b.Property("LastLanguageVisited")
+ .HasMaxLength(10)
+ .HasColumnType("varchar(10)");
+
+ b.Property("LinkedIn")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Location")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("LockoutEnabled")
+ .HasColumnType("bit(1)");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Mastodon")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("NotifyOnNewMessage")
+ .HasColumnType("bit(1)");
+
+ b.Property("OriginalAvatarExtension")
+ .HasMaxLength(10)
+ .HasColumnType("varchar(10)");
+
+ b.Property("PasswordHash")
+ .HasColumnType("longtext");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("longtext");
+
+ b.Property("PhoneNumberConfirmed")
+ .HasColumnType("bit(1)");
+
+ b.Property("PreferredThemeId")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SecurityStamp")
+ .HasColumnType("longtext");
+
+ b.Property("Twitter")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("TwoFactorEnabled")
+ .HasColumnType("bit(1)");
+
+ b.Property("TwoFactorViaAuthenticator")
+ .HasColumnType("bit(1)");
+
+ b.Property("TwoFactorViaEmail")
+ .HasColumnType("bit(1)");
+
+ b.Property("UseGravatar")
+ .HasColumnType("bit(1)");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Website")
+ .HasMaxLength(500)
+ .HasColumnType("varchar(500)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasDatabaseName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasDatabaseName("UserNameIndex");
+
+ b.ToTable("AspNetUsers", (string)null);
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.Audit", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("AffectedColumns")
+ .HasColumnType("json");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("Keys")
+ .HasColumnType("json");
+
+ b.Property("NewValues")
+ .HasColumnType("json");
+
+ b.Property("OldValues")
+ .HasColumnType("json");
+
+ b.Property("Table")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Type")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Table");
+
+ b.HasIndex("Type");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Audit");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.Book", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CountryId")
+ .HasColumnType("smallint(3)");
+
+ b.Property("CoverGuid")
+ .HasColumnType("char(36)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("Edition")
+ .HasColumnType("int");
+
+ b.Property("InternetArchiveUrl")
+ .HasMaxLength(2048)
+ .HasColumnType("varchar(2048)");
+
+ b.Property("Isbn")
+ .HasMaxLength(13)
+ .HasColumnType("varchar(13)");
+
+ b.Property("NativeTitle")
+ .HasColumnType("varchar(255)");
+
+ b.Property("OriginalCoverExtension")
+ .HasColumnType("longtext");
+
+ b.Property("Pages")
+ .HasColumnType("smallint");
+
+ b.Property("PreviousId")
+ .HasColumnType("bigint");
+
+ b.Property("Published")
+ .HasColumnType("datetime(6)");
+
+ b.Property("PublishedPrecision")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("SortTitle")
+ .HasColumnType("longtext");
+
+ b.Property("SourceId")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("CountryId");
+
+ b.HasIndex("Edition");
+
+ b.HasIndex("Isbn");
+
+ b.HasIndex("NativeTitle");
+
+ b.HasIndex("Pages");
+
+ b.HasIndex("PreviousId")
+ .IsUnique();
+
+ b.HasIndex("Published");
+
+ b.HasIndex("SourceId");
+
+ b.HasIndex("Title");
+
+ b.ToTable("Books");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.BookSynopsis", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("BookId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("LanguageCode")
+ .IsRequired()
+ .HasMaxLength(3)
+ .HasColumnType("char(3)");
+
+ b.Property("Text")
+ .IsRequired()
+ .HasMaxLength(262144)
+ .HasColumnType("longtext");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("LanguageCode");
+
+ b.HasIndex("Text")
+ .HasAnnotation("MySql:FullTextIndex", true);
+
+ b.HasIndex("BookId", "LanguageCode")
+ .IsUnique()
+ .HasDatabaseName("idx_book_synopses_book_language");
+
+ b.ToTable("BookSynopses");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.BooksByMachine", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("BookId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("MachineId")
+ .HasColumnType("int(11)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("BookId");
+
+ b.HasIndex("MachineId");
+
+ b.ToTable("BooksByMachines");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.BooksByMachineFamily", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("BookId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("MachineFamilyId")
+ .HasColumnType("int(11)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("BookId");
+
+ b.HasIndex("MachineFamilyId");
+
+ b.ToTable("BooksByMachineFamilies");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.BrowserTest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int(11)")
+ .HasColumnName("id");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Agif")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("agif");
+
+ b.Property("Browser")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(64)
+ .HasColumnType("varchar(64)")
+ .HasColumnName("browser")
+ .HasDefaultValueSql("''");
+
+ b.Property("Colors")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("colors");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("Flash")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("flash");
+
+ b.Property("Frames")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("frames");
+
+ b.Property("Gif87")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("gif87");
+
+ b.Property("Gif89")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("gif89");
+
+ b.Property("Jpeg")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("jpeg");
+
+ b.Property("Js")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("js");
+
+ b.Property("Os")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(32)
+ .HasColumnType("varchar(32)")
+ .HasColumnName("os")
+ .HasDefaultValueSql("''");
+
+ b.Property("Platform")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(8)
+ .HasColumnType("varchar(8)")
+ .HasColumnName("platform")
+ .HasDefaultValueSql("''");
+
+ b.Property("Png")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("png");
+
+ b.Property("Pngt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("pngt");
+
+ b.Property("Table")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("tinyint(1)")
+ .HasDefaultValue((sbyte)0)
+ .HasColumnName("table");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.Property("UserAgent")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)")
+ .HasColumnName("user_agent")
+ .HasDefaultValueSql("''");
+
+ b.Property("Version")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(16)
+ .HasColumnType("varchar(16)")
+ .HasColumnName("version")
+ .HasDefaultValueSql("''");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Browser")
+ .HasDatabaseName("idx_browser_tests_browser");
+
+ b.HasIndex("Os")
+ .HasDatabaseName("idx_browser_tests_os");
+
+ b.HasIndex("Platform")
+ .HasDatabaseName("idx_browser_tests_platform");
+
+ b.HasIndex("UserAgent")
+ .HasDatabaseName("idx_browser_tests_user_agent");
+
+ b.HasIndex("Version")
+ .HasDatabaseName("idx_browser_tests_version");
+
+ b.ToTable("browser_tests", (string)null);
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CollectedBook", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("BookId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.HasKey("UserId", "BookId");
+
+ b.HasIndex("BookId");
+
+ b.ToTable("CollectedBooks");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CollectedDocument", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("DocumentId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.HasKey("UserId", "DocumentId");
+
+ b.HasIndex("DocumentId");
+
+ b.ToTable("CollectedDocuments");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CollectedMagazineIssue", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("MagazineIssueId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.HasKey("UserId", "MagazineIssueId");
+
+ b.HasIndex("MagazineIssueId");
+
+ b.ToTable("CollectedMagazineIssues");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CollectedSoftwareRelease", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("SoftwareReleaseId")
+ .HasColumnType("bigint unsigned");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.HasKey("UserId", "SoftwareReleaseId");
+
+ b.HasIndex("SoftwareReleaseId");
+
+ b.ToTable("CollectedSoftwareReleases");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompaniesByBook", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("BookId")
+ .HasColumnType("bigint");
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("char(3)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("BookId");
+
+ b.HasIndex("CompanyId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("CompaniesByBooks");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompaniesByDocument", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("DocumentId")
+ .HasColumnType("bigint");
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("char(3)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.HasIndex("DocumentId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("CompaniesByDocuments");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompaniesByMagazine", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("MagazineId")
+ .HasColumnType("bigint");
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("char(3)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.HasIndex("MagazineId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("CompaniesByMagazines");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.Company", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int(11)")
+ .HasColumnName("id");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .HasMaxLength(80)
+ .HasColumnType("varchar(80)")
+ .HasColumnName("address");
+
+ b.Property("City")
+ .HasMaxLength(80)
+ .HasColumnType("varchar(80)")
+ .HasColumnName("city");
+
+ b.Property("CountryId")
+ .HasColumnType("smallint(3)")
+ .HasColumnName("country");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("Facebook")
+ .HasMaxLength(45)
+ .HasColumnType("varchar(45)")
+ .HasColumnName("facebook");
+
+ b.Property("Founded")
+ .HasColumnType("datetime")
+ .HasColumnName("founded");
+
+ b.Property("FoundedPrecision")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("LegalName")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasColumnType("varchar(128)")
+ .HasColumnName("name")
+ .HasDefaultValueSql("''");
+
+ b.Property("PostalCode")
+ .HasMaxLength(25)
+ .HasColumnType("varchar(25)")
+ .HasColumnName("postal_code");
+
+ b.Property("Province")
+ .HasMaxLength(80)
+ .HasColumnType("varchar(80)")
+ .HasColumnName("province");
+
+ b.Property("Sold")
+ .HasColumnType("datetime")
+ .HasColumnName("sold");
+
+ b.Property("SoldPrecision")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("SoldToId")
+ .HasColumnType("int(11)")
+ .HasColumnName("sold_to");
+
+ b.Property("Status")
+ .HasColumnType("int(11)")
+ .HasColumnName("status");
+
+ b.Property("Twitter")
+ .HasMaxLength(45)
+ .HasColumnType("varchar(45)")
+ .HasColumnName("twitter");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.Property("Website")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("website");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Address")
+ .HasDatabaseName("idx_companies_address");
+
+ b.HasIndex("City")
+ .HasDatabaseName("idx_companies_city");
+
+ b.HasIndex("CountryId")
+ .HasDatabaseName("idx_companies_country");
+
+ b.HasIndex("Facebook")
+ .HasDatabaseName("idx_companies_facebook");
+
+ b.HasIndex("Founded")
+ .HasDatabaseName("idx_companies_founded");
+
+ b.HasIndex("Name")
+ .HasDatabaseName("idx_companies_name");
+
+ b.HasIndex("PostalCode")
+ .HasDatabaseName("idx_companies_postal_code");
+
+ b.HasIndex("Province")
+ .HasDatabaseName("idx_companies_province");
+
+ b.HasIndex("Sold")
+ .HasDatabaseName("idx_companies_sold");
+
+ b.HasIndex("SoldToId")
+ .HasDatabaseName("idx_companies_sold_to");
+
+ b.HasIndex("Status")
+ .HasDatabaseName("idx_companies_status");
+
+ b.HasIndex("Twitter")
+ .HasDatabaseName("idx_companies_twitter");
+
+ b.HasIndex("Website")
+ .HasDatabaseName("idx_companies_website");
+
+ b.ToTable("companies", (string)null);
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompanyBySoftwareFamily", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint unsigned");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("char(3)");
+
+ b.Property("SoftwareFamilyId")
+ .HasColumnType("bigint unsigned");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.HasIndex("RoleId");
+
+ b.HasIndex("SoftwareFamilyId");
+
+ b.ToTable("CompaniesBySoftwareFamilies");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompanyBySoftwareVersion", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint unsigned");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("char(3)");
+
+ b.Property("SoftwareVersionId")
+ .HasColumnType("bigint unsigned");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.HasIndex("RoleId");
+
+ b.HasIndex("SoftwareVersionId");
+
+ b.ToTable("CompaniesBySoftwareVersions");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompanyDescription", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("Html")
+ .HasMaxLength(262144)
+ .HasColumnType("longtext");
+
+ b.Property("LanguageCode")
+ .IsRequired()
+ .HasMaxLength(3)
+ .HasColumnType("char(3)");
+
+ b.Property("Text")
+ .IsRequired()
+ .HasMaxLength(262144)
+ .HasColumnType("longtext");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("LanguageCode");
+
+ b.HasIndex("Text")
+ .HasAnnotation("MySql:FullTextIndex", true);
+
+ b.HasIndex("CompanyId", "LanguageCode")
+ .IsUnique()
+ .HasDatabaseName("idx_company_descriptions_company_language");
+
+ b.ToTable("CompanyDescriptions");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CompanyLogo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int(11)")
+ .HasColumnName("id");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int(11)")
+ .HasColumnName("company_id");
+
+ b.Property("Guid")
+ .HasColumnType("char(36)")
+ .HasColumnName("logo_guid");
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.Property("Year")
+ .HasColumnType("int(4)")
+ .HasColumnName("year");
+
+ b.HasKey("Id", "CompanyId", "Guid");
+
+ b.HasIndex("CompanyId")
+ .HasDatabaseName("idx_company_id");
+
+ b.HasIndex("Guid")
+ .HasDatabaseName("idx_guid");
+
+ b.HasIndex("Id")
+ .IsUnique()
+ .HasDatabaseName("idx_id");
+
+ b.ToTable("company_logos", (string)null);
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.Conversation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("IsSystemThread")
+ .HasColumnType("bit(1)");
+
+ b.Property("Subject")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("IsSystemThread");
+
+ b.ToTable("Conversations");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.ConversationParticipant", b =>
+ {
+ b.Property("ConversationId")
+ .HasColumnType("bigint");
+
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("JoinedOn")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LeftOn")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("ConversationId", "UserId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("ConversationParticipants");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CurrencyInflation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("CurrencyCode")
+ .IsRequired()
+ .HasColumnType("varchar(3)");
+
+ b.Property("Inflation")
+ .HasColumnType("float");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.Property("Year")
+ .HasColumnType("int unsigned");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CurrencyCode");
+
+ b.HasIndex("Year");
+
+ b.ToTable("CurrenciesInflation");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.CurrencyPegging", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CreatedOn")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedOn"));
+
+ b.Property("DestinationCode")
+ .IsRequired()
+ .HasColumnType("varchar(3)");
+
+ b.Property("End")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Ratio")
+ .HasColumnType("float");
+
+ b.Property("SourceCode")
+ .IsRequired()
+ .HasColumnType("varchar(3)");
+
+ b.Property("Start")
+ .HasColumnType("datetime(6)");
+
+ b.Property("UpdatedOn")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedOn"));
+
+ b.HasKey("Id");
+
+ b.HasIndex("DestinationCode");
+
+ b.HasIndex("End");
+
+ b.HasIndex("SourceCode");
+
+ b.HasIndex("Start");
+
+ b.ToTable("CurrenciesPegging");
+ });
+
+ modelBuilder.Entity("Marechai.Database.Models.DbFile", b =>
+ {
+ b.Property