syntax = "proto3";
package retrom;
message ConnectionConfig {
optional int32 port = 1;
optional string db_url = 2;
}
message IgnorePatterns {
repeated string patterns = 1;
}
enum StorageType {
// Standard library directory with single-file games
// e.g. /contentDir/platformX/game.rom
SINGLE_FILE_GAME = 0;
// Standard library directory with multi-file games
// e.g. /contentDir/platformX/game/game.rom
MULTI_FILE_GAME = 1;
// Custom, user-defined structure composed of named macros
// used for non-standard library directories and/or automatic
// tagging of scanned entries
//
// example user definition: "/some/path/{platform}/{game}/{region}/{file}"
CUSTOM = 2;
}
message CustomLibraryDefinition {
string definition = 1;
}
message ContentDirectory {
string path = 1;
optional StorageType storage_type = 2;
optional IgnorePatterns ignore_patterns = 3;
optional CustomLibraryDefinition custom_library_definition = 4;
}
message IGDBConfig {
string client_id = 1;
string client_secret = 2;
}
message SteamConfig {
string api_key = 1;
string user_id = 2;
}
message SavesConfig {
int32 max_save_files_backups = 1;
int32 max_save_states_backups = 2;
}
message MetadataConfig {
enum ImageFormat {
UNSPECIFIED = 0;
JPEG = 1;
PNG = 2;
WEBP = 3;
}
message OptimizationConfig {
// JPEG quality for stored images (0-100)
uint32 jpeg_quality = 1;
// Perform lossless optimization on stored JPEG images
bool jpeg_optimization = 2;
// WebP quality for stored images (0-100)
uint32 webp_quality = 3;
// Perform lossless encoding for stored WebP images
bool webp_lossless = 4;
// PNG quality for stored images (0-100)
uint32 png_quality = 5;
// Lossless compression level on stored PNG images (0-6)
uint32 png_optimization_level = 6;
// Perform lossless optimization on stored PNG images
bool png_optimization = 7;
// Preferred image format for storing metadata images
optional ImageFormat preferred_image_format = 8;
}
bool store_metadata_locally = 1;
OptimizationConfig optimization = 2;
}
message ServerConfig {
message TelemetryConfig {
bool enabled = 1;
}
ConnectionConfig connection = 1;
repeated ContentDirectory content_directories = 2;
optional IGDBConfig igdb = 3;
optional SteamConfig steam = 4;
optional SavesConfig saves = 5;
optional TelemetryConfig telemetry = 6;
optional MetadataConfig metadata = 7;
}