e8fdb39ea2
Promote service modules to services/ directory; add AmqpConnection + async IPL
...
- Flat src/amqp.rs, src/mongo.rs, src/mariadb.rs promoted to src/services/{amqp,mongo,mariadb}/
- services/amqp/connection.rs: AmqpConnection struct with connect() and declare_exchange()
- services/amqp/error.rs: AmqpError type (thiserror, wraps lapin::Error)
- ipl() made async; #[tokio::main] added to main()
- IPL step 3b: authenticate to RabbitMQ + declare beds.events topic exchange (durable)
- Added lapin = "2" and tokio = { version = "1", features = ["full"] } to Cargo.toml
- 12 unit tests pass
- Docs: README, CLAUDE.md, wiki/04-ipl.md, wiki/06-queue-topology.md updated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 16:52:18 -07:00
2a9afe7d77
Add MariaDB IPL validation, topology docs in beds.toml, and developer wiki
...
- Add MariaDB (REL) IPL validation — master required, secondary non-fatal
- Add RelNodeConfig / RelInstanceConfig structs with master/secondary pattern
- Add rel_services section to beds.toml and test fixture
- Add detailed topology commentary to beds.toml covering standalone,
master/replica, Galera cluster, and multi-DB-per-node configurations
- Add developer wiki (wiki/) covering:
- Origin story — PHP Namaste history, production record, why Rust
- Architecture overview — full system diagram, all layers explained
- The four nodes — appServer, admin, segundo, tercero with real-world context
- IPL sequence — every step documented with rationale for ordering
- Configuration system — layering, env selection, adding new sections
- Queue topology — exchanges, routing keys, broker bindings, vhost isolation
- Template system — REC/REL, TLA convention, cache map, warehousing
- Event lineage — compound event IDs, parent/child tracking, msLogs schema
- Glossary
- Update README with wiki index and MariaDB status
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 15:41:28 -07:00
2ce87710ff
Add MongoDB reachability validation to IPL sequence
...
- Add rec_services config section to beds.toml and test fixture
- Add RecNodeConfig struct; export from config module
- Add mongo::validate() and validate_all() — TCP ping per configured REC node
- Wire mongo::validate_all() into ipl() with env-aware error handling
- Add mongodb crate dependency (sync feature)
- Add unit tests for mongo validate error paths (closed port, bad address)
- Update README status table and project structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 15:12:13 -07:00
119ec0ea45
Update README and CLAUDE.md to reflect current project state
...
- Project structure updated: amqp.rs, lib.rs, tests/, templates/, env_* config files
- Configuration section updated: BEDS_ENV-based env file selection
- Status table updated: completed items marked done, next steps listed
- CLAUDE.md: split current structure from planned additions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-02 19:34:40 -07:00
c1d1ff14a5
Add RabbitMQ validation, test scaffolding, and config refactor
...
- Extract ipl() from main() with env-aware error handling (fatal in prod, warn in dev)
- Add amqp::validate() — TCP reachability check for RabbitMQ at IPL
- Refactor config::load() into load() + load_from() for testability
- Add lib.rs to expose public API to integration test harness
- Add test fixture scaffolding: tests/fixtures/beds_test.toml, tests/common/mod.rs
- Add unit tests for amqp::validate() error paths (closed port, bad address)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-02 19:32:24 -07:00
8a89fe3403
Architecture session: queue topology, log schema, REC templates, config refinements
...
- Rename env.toml to env_{dev,qa,prod}.toml for self-documentation; enforce via gitignore
- Config loader selects env file via BEDS_ENV environment variable, defaults to dev
- Set wbid to "ms" in beds.toml
- Define queue topology: rel/rec .read .write .obj, log, adm, mig
- Define log event schema: compound event_id (node.env.guid), parent_id, depth,
level/level_val, resource, service, env, node, file, method, line, trace, message, created
- Add example_rec.toml — canonical self-documenting REC template for future developers
- Add mst_logger_rec.toml — logger collection template derived from log event schema
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-02 17:07:18 -07:00
850993edb1
Drop DynamoDB from scope
...
Was originally a proof of concept in the PHP version. Dropped in
production as too expensive. Removed all references from docs.
Supported backends are MySQL/MariaDB and MongoDB only.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 11:06:20 -07:00
c87c3f1bac
Add README
...
Documents architecture, design principles, node topology, scaling
model, config system, and performance baseline inherited from the
PHP predecessor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-30 12:35:41 -07:00
22c74b2671
Establish config loading and logging infrastructure
...
First working milestone of the Rust rewrite. Implements the two
foundational systems every other component depends on:
- TOML-based layered config (beds.toml + env.toml override) replacing
the PHP XML config system, fully deserialized into typed structs via
serde — no runtime string key lookups, shape enforced at compile time
- Structured logging via tracing + tracing-journald, with optional
console mirror, initialized from config before any services start
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-30 12:33:52 -07:00
bb6df8314c
Initial commit
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-30 11:20:27 -07:00