Files
herolib/examples/vfs/vfs_db/ourdb_vfs.vsh
2025-10-12 12:30:19 +03:00

72 lines
2.3 KiB
GLSL
Executable File

#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
import os
import rand
import incubaid.herolib.vfs.vfs_db
import incubaid.herolib.data.ourdb
example_data_dir := os.join_path(os.temp_dir(), 'ourdb_example_data_${rand.string(3)}')
os.mkdir_all(example_data_dir)!
// Create separate directories for data and metadata
data_dir := os.join_path(example_data_dir, 'data')
metadata_dir := os.join_path(example_data_dir, 'metadata')
os.mkdir_all(data_dir)!
os.mkdir_all(metadata_dir)!
// Create separate databases for data and metadata
mut db_data := ourdb.new(
path: data_dir
incremental_mode: false
)!
mut db_metadata := ourdb.new(
path: metadata_dir
incremental_mode: false
)!
// Create VFS with separate databases for data and metadata
mut vfs := vfs_db.new_with_separate_dbs(mut db_data, mut db_metadata,
data_dir: data_dir
metadata_dir: metadata_dir
)!
// Create a root directory if it doesn't exist
if !vfs.exists('/') {
vfs.dir_create('/')!
}
// Create some files and directories
vfs.dir_create('/test_dir')!
vfs.file_create('/test_file.txt')!
vfs.file_write('/test_file.txt', 'Hello, world!'.bytes())!
// Create a file in the directory
vfs.file_create('/test_dir/nested_file.txt')!
vfs.file_write('/test_dir/nested_file.txt', 'This is a nested file.'.bytes())!
// Read the files
println('File content: ${vfs.file_read('/test_file.txt')!.bytestr()}')
println('Nested file content: ${vfs.file_read('/test_dir/nested_file.txt')!.bytestr()}')
// List directory contents
println('Root directory contents:')
root_entries := vfs.dir_list('/')!
for entry in root_entries {
println('- ${entry.get_metadata().name} (${entry.get_metadata().file_type})')
}
println('Test directory contents:')
test_dir_entries := vfs.dir_list('/test_dir')!
for entry in test_dir_entries {
println('- ${entry.get_metadata().name} (${entry.get_metadata().file_type})')
}
// Create a duplicate file with the same content
vfs.file_create('/duplicate_file.txt')!
vfs.file_write('/duplicate_file.txt', 'Hello, world!'.bytes())!
// Demonstrate that data and metadata are stored separately
println('Data DB Size: ${os.file_size(os.join_path(data_dir, '0.ourdb'))} bytes')
println('Metadata DB Size: ${os.file_size(os.join_path(metadata_dir, '0.ourdb'))} bytes')