diff options
| author | dam <dam@gudinoff> | 2023-02-18 02:12:02 +0000 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2023-02-18 02:12:02 +0000 |
| commit | 1c4f10d917b8bdff3c2b066f4b51843d4ad490b7 (patch) | |
| tree | 99643b377ad50d6bad907eef523910f533a4a10a | |
| parent | d4d373de28e94e78e44a4f849dbae4d70f48eef9 (diff) | |
| download | task-time-tracker-1c4f10d917b8bdff3c2b066f4b51843d4ad490b7.tar.zst task-time-tracker-1c4f10d917b8bdff3c2b066f4b51843d4ad490b7.zip | |
First functional prototype of database load and store.
| -rw-r--r-- | ttt.jai | 67 |
1 files changed, 43 insertions, 24 deletions
@@ -55,11 +55,15 @@ Task :: struct { name.data = cast(*~s8 u8) (0x80 ^ 0x01); // *name_data[0]; } -Database :: struct { - active_task : *~s64 Task = null; - selected_task : *~s64 Task = null; +DatabaseCore :: struct { + active_idx : s64; + selected_task : s64; modified_on : s64; total_times : [NUM_WEEK_DAYS] s64; +} + +Database :: struct { + #as using base : DatabaseCore; tasks : [..] Task; } @@ -1264,24 +1268,40 @@ Database :: struct { // also... the array_add // TODO WIP - //load_database(*db, db_file_path); - - task : Task; - memcpy(task.name.data, "bazinga".data, 7); - task.name.count = 7; - print(">>>'%'\n", task.name); - print("###%\n\n", task); + load_database(*db, db_file_path); - add_task(*db, *task); - store_database(db, db_file_path); +// task : Task; +// memcpy(task.name.data, "bazinga".data, 7); +// task.name.count = 7; +// { +// path := join(app_directory, "/", "test"); +// file := file_open(path, for_writing = true); +// file_write(*file, *task, size_of(Task)); +// file_close(*file); +// +// data: Task; +// file = file_open(path); +// file_read(file, *data, size_of(Task)); +// print("### > %\n", data); +// } +// array_add(*db.tasks, task); +// store_database(db, db_file_path); - //array_add(*db.tasks, task); - //memcpy(*db.tasks[0], *task, size_of(Task)); +// print("size_of([..]) = %\n", size_of([..] Task)); //print("www\n"); print("loaded: %\n", db); +// print(">>>'%'\n", task.name); +// print("###%\n\n", task); +// print(":%\n", size_of(type_of(db.tasks))); - + array_add :: (array: *[..] $T/Task, item: T) #no_abc { + print("my_array\n"); + maybe_grow(array); +// array.data[array.count] = item; + memcpy(*array.data[array.count], *item, size_of(T)); + array.count += 1; + } add_task :: (db: *Database, task: *Task) { idx := db.tasks.count; @@ -1290,7 +1310,6 @@ Database :: struct { memcpy(*db.tasks[idx], task, size_of(Task)); } - // Stores data from database into binary file. // Returns success. store_database :: (db: Database, path: string) -> success: bool { @@ -1305,7 +1324,9 @@ Database :: struct { } file_write(*file, DB_FILE_SIGN_STR); - file_write(*file, *db, size_of(Database)); + file_write(*file, *db, size_of(DatabaseCore)); + file_write(*file, *db.tasks.count, size_of(type_of(Database.tasks.count))); + file_write(*file, db.tasks.data, size_of(Task) * db.tasks.count); //fwrite(DB_FILE_SIGN, SIZEOF_CHAR, DB_FILE_SIGN_LENGTH, file); //fwrite(db, SIZEOF_DATABASE_ST, 1, file); //fwrite(db->tasks, SIZEOF_TASK_ST, db->count, file); @@ -1338,13 +1359,11 @@ Database :: struct { } // Read database structure. - - read_success = file_read(file, db, size_of(Database)); - //if read_success == false print_error("Failed to read database info from '%'.", path); - - - //file_open :: (name: string, for_writing := false, keep_existing_content := false, log_errors := true) -> File, bool - //file_read :: (f: File, vdata: *void, bytes_to_read: s64) -> (success: bool, total_read: s64) + read_success = file_read(file, db, size_of(DatabaseCore)); + tasks_count: s64; + file_read(file, *tasks_count, size_of(type_of(Database.tasks.count))); + array_resize(*db.tasks, tasks_count, initialize = false); + file_read(file, db.tasks.data, size_of(Task) * tasks_count); return true; } |
