solidb 1.0.2

A lightweight, high-performance structured database server written in Rust.
# SoliDB Enhanced Lua Methods - Implementation Progress

## โœ… Completed Features

### 1. Data Validation & Schema
- `solidb.validate(data, schema) -> boolean` - JSON schema validation
- `solidb.validate_detailed(data, schema) -> table` - Detailed validation with errors
- `solidb.sanitize(data, operations) -> cleaned_data` - Input sanitization
- `solidb.typeof(value) -> string` - Enhanced type checking

### 2. HTTP & API Utilities
- `solidb.redirect(url) -> error with redirect` - HTTP redirects
- `solidb.set_cookie(name, value, options)` - Cookie management
- `solidb.cache(key, value, ttl_seconds) -> boolean` - Response caching
- `solidb.cache_get(key) -> value` - Cache retrieval

### 3. Response Helpers
- `response.json(data)` - JSON responses (existing)
- `response.html(content)` - HTML responses
- `response.file(path)` - File downloads
- `response.stream(data)` - Streaming responses
- `response.cors(options)` - CORS headers

### 4. Error Handling
- `solidb.error(message, code) -> never returns` - Standardized errors
- `solidb.assert(condition, message) -> boolean or error` - Assertions
- `solidb.try(fn, catch_fn) -> result` - Try-catch patterns
- `solidb.validate_condition(condition, error_message, error_code)` - Validation helpers
- `solidb.check_permissions(user, required_permissions)` - Permission checking
- `solidb.validate_input(input, rules)` - Input validation

## ๐Ÿšง In Progress

### 5. String & Data Utilities (Implementation Started)
- String slugification
- Text truncation
- String formatting with templates
- Deep table merging

## ๐Ÿ“‹ Remaining Tasks

### 6. Collection Helper Methods
- `db:find(collection, filter) -> array` - Simplified queries
- `db:find_one(collection, filter) -> document or nil` - Single document lookup
- `db:upsert(collection, filter, data) -> document` - Update or insert
- `db:bulk_insert(collection, docs) -> array` - Batch operations
- `db:count(collection, filter) -> number` - Count with filters

### 7. Authentication & Authorization
- `solidb.auth.user() -> user info or nil` - Current user info
- `solidb.auth.has_role(role) -> boolean` - Role checking
- `solidb.auth.require_role(role) -> error if no role` - Authorization guard

### 8. File & Media Handling
- `solidb.upload(data, options) -> file info` - File uploads
- `solidb.file_info(path) -> metadata` - File metadata
- `solidb.image_process(image, operations) -> processed_image` - Image manipulation

### 9. Background Jobs & Development Tools
- `solidb.job.async(script, params) -> job_id` - Fire-and-forget jobs
- `solidb.job.cron(schedule, script) -> job_id` - Scheduled jobs
- `solidb.job.status(job_id) -> job_info` - Job status checking
- `solidb.debug(data) -> enhanced debug output` - Debug utilities
- `solidb.profile(fn) -> execution time` - Performance profiling
- `solidb.mock(collection, data) -> test data setup` - Test data

## ๐Ÿงช Testing

### Completed Test Modules
- `lua_validation_tests.rs` - Validation and sanitization tests
- `lua_http_helpers_tests.rs` - HTTP helpers tests
- `lua_error_handling_tests.rs` - Error handling tests

### Test Coverage
- โœ… Basic validation functionality
- โœ… Detailed validation with error reporting
- โœ… Input sanitization
- โœ… Type checking
- โœ… HTTP redirects
- โœ… Cookie management
- โœ… Response caching
- โœ… Error handling patterns
- โœ… Try-catch functionality

## ๐Ÿš€ Usage Examples

### Validation
```lua
local schema = {
    type = "object",
    properties = {
        email = { type = "string", format = "email" },
        age = { type = "number", minimum = 0 }
    },
    required = {"email"}
}

local is_valid = solidb.validate(user_data, schema)
local result = solidb.validate_detailed(user_data, schema)

-- Sanitize input
local clean_data = solidb.sanitize(dirty_data, {
    trim = true,
    lowercase = {"email"}
})
```

### Error Handling
```lua
-- Standardized errors
solidb.error("User not found", 404)

-- Assertions
solidb.assert(user.email, "Email is required")

-- Try-catch patterns
local result = solidb.try(risky_operation, function(error)
    return { success = false, error = error }
end)
```

### HTTP Helpers
```lua
-- Redirects
solidb.redirect("https://example.com/target")

-- Cookies
solidb.set_cookie("session_id", "abc123", {
    expires = "2024-12-31T23:59:59Z",
    secure = true,
    httpOnly = true
})

-- Caching
solidb.cache("user:123", user_data, 3600)
local cached_data = solidb.cache_get("user:123")
```

### Response Helpers
```lua
-- HTML response
response.html("<h1>Hello World</h1>")

-- File download
response.file("/path/to/file.pdf")

-- CORS headers
response.cors({
    origins = {"https://example.com"},
    methods = {"GET", "POST"},
    credentials = true
})
```

## ๐Ÿ“ˆ Next Steps

1. Complete collection helpers implementation
2. Implement authentication helpers
3. Add file and media handling capabilities
4. Build background job processing system
5. Create development tools
6. Comprehensive documentation and examples

## ๐ŸŽฏ Impact

These enhanced Lua methods significantly reduce boilerplate code for common patterns:

- **Before**: 50+ lines for validation and error handling
- **After**: 5-10 lines with built-in helpers

- **Before**: Manual HTTP response construction
- **After**: Simple helper functions

- **Before**: Complex try-catch patterns
- **After**: `solidb.try()` with automatic error handling

This implementation makes SoliDB Lua scripting more productive, maintainable, and developer-friendly while maintaining security and performance standards.