During the daily maintenance task, server logs are now deleted in 1000
record chunks. It repeats this a maximum of 1000 times or until there
are no more records left to delete.
During the weekly maintenance task, the optimise task now has a longer
timeout.
Closes#352
* Resolved missing table errors.
* These were due to some dynamically created tables being queried before
they were created.
* These tables are now created at start up.
* Resolved many "INSERT" errors that were polluting the logs:
* These were due to a race condition where sometimes the database would
return the data as not being in the database causing Gaseous to try to
insert it - even though the data was already there.
When hashing large files, it can appear that nothing is happening. This
change adds log entries before hashes are generated to indicate that
hashing is about to begin.
This PR modifies the build process to generate two docker images; the
standard image, and one with MariaDB embedded into it for one click
installs.
This embedded MariaDB image is meant to support users on systems like
Unraid that don't easily support docker-compose.
Also; for users on Unraid, it will allow the creation of a single click
install template to be submitted to the Unraid marketplace (this will be
done at a later date after the release of 1.7.4).
This change provides the ability to upload save states.
When a state is downloaded, the state (savestate.state), screenshot
(screenshot.jpg), and a json file (rominfo.json) describing the save
state are zipped and downloaded.
The json file description is defined as follows:
```json
{
"Name": "Super Mario Bros. (1985-09-13)(Nintendo)(JP-US).zip",
"StateDateTime": "2024-06-24T05:34:38",
"StateName": "",
"MD5": "7d158dcd242e77ba249ac8342474aa77",
"SHA1": "3d4b04dc78f9d998f17d9fe9ad982a83b5ed72df",
"Type": "ROM"
}
```
| Attribute | Value |
| -------- | ------|
| Name | The name of the ROM that the state belongs to. This is merely a
convenience attribute. |
| StateDateTime | The date and time (in UTC) when the state was
initially saved. |
| StateName | The name of the state |
| MD5 | The MD5 hash of the ROM that the state belongs to. |
| SHA1 | The SHA1 hash of the ROM that the state belongs to. |
| Type | Whether the state belongs to a ROM or ROM Group |
If the zip is re-uploaded, the above json file will be used to
automatically match the saved state to the ROM that created it.
If a zip is uploaded without the above three files, the upload will
fail.
If a file is uploaded that is not a zip, it will be stored against the
currently running ROM and a warning will be displayed that Gaseous was
unable to verify that the state belongs to the ROM, and may not function
as expected.
Closes#336
All compressed archives (zip, rar, and 7z) are decompressed when a media group is created.
Only files with an extension defined in the platform mapping are added to the M3U file.
Closes#307
* Update to .net8.0 LTS (closes#271)
* Add ARM docker container support (closes#245)
* Library updates (closes#260 and #261)
* Database updates to support changes in the latest IGDB client version
* Version number will no longer be displayed when built from source