From 2a016dad8922a7d4b3a44aa31204ee88d522388d Mon Sep 17 00:00:00 2001 From: chrisbell Date: Tue, 3 Feb 2026 23:31:54 -0600 Subject: [PATCH] Now able to get a field from a path --- SzCore/SZ.cs | 4 +--- SzCore/SzDataHandler.cs | 27 +++++++++++++++++++++++++++ flake.lock | 27 +++++++++++++++++++++++++++ flake.nix | 30 ++++++++++++++++++++++++++++++ shell.nix | 1 + 5 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/SzCore/SZ.cs b/SzCore/SZ.cs index 40f86f2..8bdf6b9 100644 --- a/SzCore/SZ.cs +++ b/SzCore/SZ.cs @@ -1,5 +1,3 @@ -using System.Net.NetworkInformation; - namespace SzCore; public static class SZ @@ -130,4 +128,4 @@ public static class SZ { if (!IsInitalized) throw new Exception("SZ.Init has not been called."); } -} \ No newline at end of file +} diff --git a/SzCore/SzDataHandler.cs b/SzCore/SzDataHandler.cs index 902536a..a3c6aa9 100644 --- a/SzCore/SzDataHandler.cs +++ b/SzCore/SzDataHandler.cs @@ -88,6 +88,33 @@ public class SzDataHandler return SzResult.Success(newDataset); } + + public async Task> GetFieldValueFromPath(string path) + { + + var parts = path.Split('.'); + if (parts.Length < 3) return SzResult.Failure("Not enough arguments in path"); + + var datasetId = parts[0]; + var dataObjectId = parts[1]; + var fieldPath = string.Join(".", parts.Skip(2)); + + var datasetResult = await LoadDatasetAsync(datasetId); + if (!datasetResult.IsSuccess) + return SzResult.Failure($"Could not get field value, dataset with id '{datasetId}' could not be loaded: {datasetResult.Error}"); + + var dataset = datasetResult.Value; + if (dataset is null) return SzResult.Failure("Dataset was null somehow"); + + if (!dataset.DataObjects.TryGetValue(dataObjectId, out var dataObject)) + return SzResult.Failure($"Data object {dataObjectId} does not exist in dataset {datasetId}"); + + if (!dataObject.Fields.TryGetValue(fieldPath, out var field)) + return SzResult.Failure($"Field {fieldPath} does not exist in Data Object {dataObjectId}"); + + return SzResult.Success(field.Value); + + } #endregion #region Templates diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c2a8a2c --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1770115704, + "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..8452abd --- /dev/null +++ b/flake.nix @@ -0,0 +1,30 @@ +{ + description = "Session Zero development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs }: + let + supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + + forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f { + pkgs = import nixpkgs { inherit system; }; + }); + in + { + devShells = forAllSystems ({ pkgs }: { + default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + dotnet-sdk + omnisharp-roslyn + ]; + + shellHook = '' + echo "// SESSION ZERO DEV SHELL //" + ''; + }; + }); + }; +} diff --git a/shell.nix b/shell.nix index cb64eaa..d96b938 100644 --- a/shell.nix +++ b/shell.nix @@ -5,6 +5,7 @@ pkgs.mkShell { nativeBuildInputs = with pkgs; [ dotnet-sdk omnisharp-roslyn + ]; shellHook = ''