From cc75241e0fb094b8e385cee778f9805361773236 Mon Sep 17 00:00:00 2001 From: Chris Bell Date: Mon, 19 Jan 2026 21:38:29 -0600 Subject: [PATCH] Starting to add template data types --- test_dataset.json => data/test_dataset.json | 3 +- main.odin | 20 ++++++--- shell.nix | 13 ++++++ szlib/data.odin | 46 +++++++++++++-------- 4 files changed, 57 insertions(+), 25 deletions(-) rename test_dataset.json => data/test_dataset.json (84%) create mode 100644 shell.nix diff --git a/test_dataset.json b/data/test_dataset.json similarity index 84% rename from test_dataset.json rename to data/test_dataset.json index a781394..10a2ac5 100644 --- a/test_dataset.json +++ b/data/test_dataset.json @@ -1,12 +1,13 @@ { "name": "Test Dataset", "id": "test_dataset", - "uuid": "019bd8f5-7e61-7cac-b4b6-630aba8721a8", + "uuid": "019bd96e-0b04-752b-a8f3-8dcdf27bc344", "data_object_type": "items", "objects": [ { "name": "Test Item", "id": "test-item", + "template_id": "", "fields": [ { "id": "cost", diff --git a/main.odin b/main.odin index ce29bdc..1e31884 100644 --- a/main.odin +++ b/main.odin @@ -1,20 +1,27 @@ package main import "core:fmt" - +import "core:os/os2" +import "core:path/slashpath" import sz "szlib" -json_path :: "test_dataset.json" - main :: proc() { + data_path, dp_error := sz.get_data_directory() + if dp_error != os2.General_Error.None { + fmt.eprintln("Could not get application data path") + } + + json_path := slashpath.join({data_path, "test_dataset.json"}) + + test_dataset := sz.create_test_dataset() sz.write_dataset_to_json(test_dataset, json_path) parsed_dataset, ok := sz.parse_json_to_dataset(json_path) if !ok { - fmt.eprintfln("Failed to parse json tto dataset") - return + fmt.eprintfln("Failed to parse json to dataset") + return } fmt.println("Dataset:", parsed_dataset.name) @@ -25,4 +32,5 @@ main :: proc() { fmt.println(" ", field.id, ":", field.type, "=", field.value) } } -} \ No newline at end of file +} + diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..92cf1ee --- /dev/null +++ b/shell.nix @@ -0,0 +1,13 @@ +{ pkgs ? import {} }: + +pkgs.mkShell { + + nativeBuildInputs = with pkgs; [ + odin + ols + ]; + + shellHook = '' + echo "Odin Shell" + ''; +} diff --git a/szlib/data.odin b/szlib/data.odin index 4992d55..a0cd85b 100644 --- a/szlib/data.odin +++ b/szlib/data.odin @@ -1,37 +1,47 @@ package szlib Dataset :: struct { - name: string, - id: string, - uuid: string, - data_object_type: string, - objects: [dynamic]SzDataObject + name: string, + id: string, + uuid: string, + data_object_type: string, + data_object_template_id: string, + objects: [dynamic]SzDataObject, } SzDataObject :: struct { - name: string, - id: string, - fields: [dynamic]SzField + name: string, + id: string, + fields: [dynamic]SzField, } SzField :: struct { - id: string, - type: SzFieldType, - is_list: bool, - value: string, + id: string, + type: SzFieldType, + is_list: bool, + value: string, } SzDataObjectTemplate :: struct { - + name: string, + id: string, + uuid: string, + data_object_type: string, + fields: [dynamic]SzTemplateField, } SzTemplateField :: struct { - id: string, - type: SzFieldType, - is_list: bool, - default_value: string, + id: string, + type: SzFieldType, + is_list: bool, + default_value: string, } SzFieldType :: enum { - TEXT, NUMBER, BOOL, FORMULA, REF + TEXT, + NUMBER, + BOOL, + FORMULA, + REF, } +