diff --git a/examples/hero/heromodels/heroserver_example.vsh b/examples/hero/heromodels/heroserver_example.vsh index 01cb77f0..72259b07 100755 --- a/examples/hero/heromodels/heroserver_example.vsh +++ b/examples/hero/heromodels/heroserver_example.vsh @@ -2,20 +2,47 @@ import freeflowuniverse.herolib.hero.heromodels import freeflowuniverse.herolib.hero.db +import freeflowuniverse.herolib.core.redisclient +import freeflowuniverse.herolib.crypt.herocrypt import time +import os fn main() { + // Environment variable configuration with defaults + redis_host := os.getenv_opt('REDIS_HOST') or { 'localhost' } + redis_port := (os.getenv_opt('REDIS_PORT') or { '6379' }).int() + crypto_redis_host := os.getenv_opt('CRYPTO_REDIS_HOST') or { 'localhost' } + crypto_redis_port := (os.getenv_opt('CRYPTO_REDIS_PORT') or { '6381' }).int() + reset_db := (os.getenv_opt('RESET_DB') or { 'true' }).bool() + models_name := os.getenv_opt('MODELS_NAME') or { 'test' } + server_name := os.getenv_opt('SERVER_NAME') or { 'test' } + server_port := (os.getenv_opt('SERVER_PORT') or { '8080' }).int() + server_host := os.getenv_opt('SERVER_HOST') or { 'localhost' } + auth_enabled := (os.getenv_opt('AUTH_ENABLED') or { 'false' }).bool() + cors_enabled := (os.getenv_opt('CORS_ENABLED') or { 'true' }).bool() + allowed_origin := os.getenv_opt('ALLOWED_ORIGIN') or { 'http://localhost:5173' } + // Start the server in a background thread with authentication disabled for testing - spawn fn () ! { - heromodels.new(reset: true, name: 'test')! + spawn fn [redis_host, redis_port, crypto_redis_host, crypto_redis_port, reset_db, models_name, server_name, server_port, server_host, auth_enabled, cors_enabled, allowed_origin] () ! { + // Configure Redis connection for main database + mut redis6379 := redisclient.core_get(redisclient.RedisURL{ + address: redis_host + port: redis_port + })! + + // Configure Redis connection for crypto database + mut crypto_client := herocrypt.new('${crypto_redis_host}:${crypto_redis_port}')! + + heromodels.new(reset: reset_db, name: models_name, redis: redis6379)! heromodels.server_start( - name: 'test' - port: 8080 - auth_enabled: false // Disable auth for testing - cors_enabled: true - reset: true + name: server_name + port: server_port + host: server_host + auth_enabled: auth_enabled + cors_enabled: cors_enabled + crypto_client: crypto_client allowed_origins: [ - 'http://localhost:5173', + allowed_origin ] ) or { panic('Failed to start HeroModels server: ${err}') } }() diff --git a/lib/hero/heromodels/factory_server.v b/lib/hero/heromodels/factory_server.v index 3d7125bb..87f53bfa 100644 --- a/lib/hero/heromodels/factory_server.v +++ b/lib/hero/heromodels/factory_server.v @@ -1,6 +1,7 @@ module heromodels import freeflowuniverse.herolib.hero.heroserver +import freeflowuniverse.herolib.crypt.herocrypt // Start heromodels server using heroserver @[params] @@ -13,6 +14,7 @@ pub mut: reset bool allowed_origins []string = ['*'] // Default allows all origins name string + crypto_client ?&herocrypt.HeroCrypt } pub fn server_start(args ServerArgs) ! { @@ -23,6 +25,7 @@ pub fn server_start(args ServerArgs) ! { auth_enabled: args.auth_enabled cors_enabled: args.cors_enabled allowed_origins: args.allowed_origins + crypto_client: args.crypto_client )! mut f := get(args.name)!