Make all host/ports configable and use env vars for all opts

This commit is contained in:
Scott Yeager
2025-10-02 13:15:29 -07:00
parent b63efd2247
commit 0566d10a69
2 changed files with 38 additions and 8 deletions

View File

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

View File

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