Starting to add template data types

This commit is contained in:
2026-01-19 21:38:29 -06:00
parent 3250398b96
commit cc75241e0f
4 changed files with 57 additions and 25 deletions

View File

@@ -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",

View File

@@ -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)
}
}
}
}

13
shell.nix Normal file
View File

@@ -0,0 +1,13 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
odin
ols
];
shellHook = ''
echo "Odin Shell"
'';
}

View File

@@ -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,
}