ores.assets.core

Table of Contents

1. Diagram

ores.assets.core component diagram

Figure 1: ores.assets.core

2. Summary

ores.assets.core manages dynamically loaded images (SVG), tags, image-tag associations, and currency-to-image mappings in ORE Studio. It provides the business logic and persistence layer — domain services, temporal ORM repositories, and NATS message handlers in the 0x4000–0x4FFF range — that let clients store, categorise, and retrieve asset images at runtime. It also ships a synthetic-data generator for test and development use.

3. Inputs

  • NATS request messages from UI clients (image create/update/query, tag operations, currency-image lookups) in the 0x4000–0x4FFF range.
  • PostgreSQL connections to ores_assets_* tables (images, tags, image_tags, currency_images) with temporal versioning.
  • DQ population events via publish_from_dq_handler when assets are loaded from the data-quality pipeline.

4. Outputs

  • Image, tag, and association records persisted to the ores_assets schema with bitemporal history (valid_from / valid_to).
  • NATS response messages returned to callers.

5. Entry points

  • include/ores.assets.core/ores.assets.hpp — aggregate include.
  • include/ores.assets.core/messaging/registrar.hpp — registers all NATS handlers with the service host.
  • include/ores.assets.core/service/assets_service.hpp — top-level business logic entry point.

6. Dependencies

  • ores.assets.api — shared domain types and NATS protocol schemas.
  • ores.dq — ORM base classes and data-quality infrastructure.
  • ores.iam.core — identity and authorisation context.
  • soci — SQL ORM for PostgreSQL persistence.
  • nats.c — NATS messaging client.

7. Build dependencies

What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.

8. See also

9. Test dependencies

The suites link what the profile cannot know about.

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.assets.api.lib
        ores.nats.lib
    PRIVATE
        ores.dq.api.lib
        ores.service.lib
        ores.telemetry.core.lib
        ores.utility.lib
        ores.database.lib
        ores.security.lib
        ores.history.core.lib
        faker-cxx::faker-cxx
        libfort::fort
        Boost::boost)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.telemetry.core.lib
        ores.utility.lib
        ores.logging.lib
        ores.eventing.api.lib
        ores.eventing.core.lib
        ores.testing.lib
        Catch2::Catch2
        faker-cxx::faker-cxx
        ores.openssl_cleanup
        Threads::Threads)

Emacs 29.3 (Org mode 9.6.15)