From 3e7f2a54876c2fd18d0d6e4151dd70e6f1028bfc Mon Sep 17 00:00:00 2001 From: Nilton Constantino Date: Sun, 18 Jan 2026 05:08:33 +0000 Subject: [PATCH] added cartridge dto --- crates/prometeu-core/src/model/cartridge.rs | 25 +++++++++++++++++++ .../src/model/cartridge_loader.rs | 8 +++--- crates/prometeu-core/src/model/mod.rs | 2 +- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/crates/prometeu-core/src/model/cartridge.rs b/crates/prometeu-core/src/model/cartridge.rs index 07a45ecb..f45a8793 100644 --- a/crates/prometeu-core/src/model/cartridge.rs +++ b/crates/prometeu-core/src/model/cartridge.rs @@ -18,6 +18,31 @@ pub struct Cartridge { pub assets_path: Option, } +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct CartridgeDTO { + pub app_id: u32, + pub title: String, + pub app_version: String, + pub app_mode: AppMode, + pub entrypoint: String, + pub program: Vec, + pub assets_path: Option, +} + +impl From for Cartridge { + fn from(dto: CartridgeDTO) -> Self { + Self { + app_id: dto.app_id, + title: dto.title, + app_version: dto.app_version, + app_mode: dto.app_mode, + entrypoint: dto.entrypoint, + program: dto.program, + assets_path: dto.assets_path, + } + } +} + #[derive(Debug)] pub enum CartridgeError { NotFound, diff --git a/crates/prometeu-core/src/model/cartridge_loader.rs b/crates/prometeu-core/src/model/cartridge_loader.rs index be4efeb6..391d81e2 100644 --- a/crates/prometeu-core/src/model/cartridge_loader.rs +++ b/crates/prometeu-core/src/model/cartridge_loader.rs @@ -1,6 +1,6 @@ use std::fs; use std::path::Path; -use crate::model::cartridge::{Cartridge, CartridgeError, CartridgeManifest}; +use crate::model::cartridge::{Cartridge, CartridgeDTO, CartridgeError, CartridgeManifest}; pub struct CartridgeLoader; @@ -55,7 +55,7 @@ impl DirectoryCartridgeLoader { None }; - Ok(Cartridge { + let dto = CartridgeDTO { app_id: manifest.app_id, title: manifest.title, app_version: manifest.app_version, @@ -63,7 +63,9 @@ impl DirectoryCartridgeLoader { entrypoint: manifest.entrypoint, program, assets_path, - }) + }; + + Ok(Cartridge::from(dto)) } } diff --git a/crates/prometeu-core/src/model/mod.rs b/crates/prometeu-core/src/model/mod.rs index f668bc8a..fc42885a 100644 --- a/crates/prometeu-core/src/model/mod.rs +++ b/crates/prometeu-core/src/model/mod.rs @@ -10,7 +10,7 @@ mod cartridge_loader; mod window; pub use button::Button; -pub use cartridge::{AppMode, Cartridge, CartridgeError}; +pub use cartridge::{AppMode, Cartridge, CartridgeDTO, CartridgeError}; pub use cartridge_loader::{CartridgeLoader, DirectoryCartridgeLoader, PackedCartridgeLoader}; pub use color::Color; pub use sample::Sample;