From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id A4EA31FF179 for ; Wed, 26 Nov 2025 16:19:08 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3087110362; Wed, 26 Nov 2025 16:19:10 +0100 (CET) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Date: Wed, 26 Nov 2025 16:17:55 +0100 Message-ID: <20251126151833.3637080-3-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251126151833.3637080-1-d.csapak@proxmox.com> References: <20251126151833.3637080-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.030 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pdm-devel] [PATCH datacenter-manager v5 02/26] lib: api-types: add 'layout' property to ViewConfig X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" this is a simple string that holds the layout json. We can't currently add it as a normal property with 'correct' api types, since we want to use enum features that are not available with the api macro. Multiple reasons why we can't use the correct type here (currently): * our api macro does not support enum variants with struct types (so e.g. `Foo { bar: usize }`) so we can't generate an api schema for it. * using something generic like a `Value` does not work since that does not impl our UpdaterType and we can't here because of the orphan rule. * we could try to use a wrapper type around `Value` and implement the `UpdaterType` and `ApiType` ourselves, but the section config won't parse more complex types like an `ObjectSchema` So until these are possible, our best bet is to simply use a string and be careful what we accept (like parsing into the wanted type during parsing/updating). Signed-off-by: Dominik Csapak --- changes from v4: * adapted to lukas' changes: no need to adapt the tests anymore lib/pdm-api-types/src/views.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/pdm-api-types/src/views.rs b/lib/pdm-api-types/src/views.rs index 82ab8781..30da7476 100644 --- a/lib/pdm-api-types/src/views.rs +++ b/lib/pdm-api-types/src/views.rs @@ -47,7 +47,10 @@ pub const FILTER_RULE_LIST_SCHEMA: Schema = "exclude": { schema: FILTER_RULE_LIST_SCHEMA, optional: true, - } + }, + layout: { + optional: true, + }, } )] #[derive(Clone, Debug, Default, Deserialize, Serialize, Updater, PartialEq)] @@ -70,6 +73,13 @@ pub struct ViewConfig { #[serde(default, skip_serializing_if = "Vec::is_empty")] #[updater(serde(skip_serializing_if = "Option::is_none"))] pub exclude: Vec, + + // we can't currently describe this with the 'api' macro so save + // it simply as a string and check it in the add/update call + /// The configured layout, encoded as json + #[serde(default, skip_serializing_if = "String::is_empty")] + #[updater(serde(skip_serializing_if = "Option::is_none"))] + pub layout: String, } #[derive(Clone, Debug, Deserialize, Serialize, PartialEq)] -- 2.47.3 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel