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", "name": "Test Dataset",
"id": "test_dataset", "id": "test_dataset",
"uuid": "019bd8f5-7e61-7cac-b4b6-630aba8721a8", "uuid": "019bd96e-0b04-752b-a8f3-8dcdf27bc344",
"data_object_type": "items", "data_object_type": "items",
"objects": [ "objects": [
{ {
"name": "Test Item", "name": "Test Item",
"id": "test-item", "id": "test-item",
"template_id": "",
"fields": [ "fields": [
{ {
"id": "cost", "id": "cost",

View File

@@ -1,19 +1,26 @@
package main package main
import "core:fmt" import "core:fmt"
import "core:os/os2"
import "core:path/slashpath"
import sz "szlib" import sz "szlib"
json_path :: "test_dataset.json"
main :: proc() { 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() test_dataset := sz.create_test_dataset()
sz.write_dataset_to_json(test_dataset, json_path) sz.write_dataset_to_json(test_dataset, json_path)
parsed_dataset, ok := sz.parse_json_to_dataset(json_path) parsed_dataset, ok := sz.parse_json_to_dataset(json_path)
if !ok { if !ok {
fmt.eprintfln("Failed to parse json tto dataset") fmt.eprintfln("Failed to parse json to dataset")
return return
} }
@@ -26,3 +33,4 @@ main :: proc() {
} }
} }
} }

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 package szlib
Dataset :: struct { Dataset :: struct {
name: string, name: string,
id: string, id: string,
uuid: string, uuid: string,
data_object_type: string, data_object_type: string,
objects: [dynamic]SzDataObject data_object_template_id: string,
objects: [dynamic]SzDataObject,
} }
SzDataObject :: struct { SzDataObject :: struct {
name: string, name: string,
id: string, id: string,
fields: [dynamic]SzField fields: [dynamic]SzField,
} }
SzField :: struct { SzField :: struct {
id: string, id: string,
type: SzFieldType, type: SzFieldType,
is_list: bool, is_list: bool,
value: string, value: string,
} }
SzDataObjectTemplate :: struct { SzDataObjectTemplate :: struct {
name: string,
id: string,
uuid: string,
data_object_type: string,
fields: [dynamic]SzTemplateField,
} }
SzTemplateField :: struct { SzTemplateField :: struct {
id: string, id: string,
type: SzFieldType, type: SzFieldType,
is_list: bool, is_list: bool,
default_value: string, default_value: string,
} }
SzFieldType :: enum { SzFieldType :: enum {
TEXT, NUMBER, BOOL, FORMULA, REF TEXT,
NUMBER,
BOOL,
FORMULA,
REF,
} }