mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-07-16 17:47:22 +00:00
148 lines
3.6 KiB
C++
148 lines
3.6 KiB
C++
#ifndef BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_
|
|
#define BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_
|
|
|
|
/**
|
|
* @file data_model/generated_models.h
|
|
* @brief Generated output models from the pipeline: brewery/user results,
|
|
* enriched data, and complete generation results.
|
|
*/
|
|
|
|
#include <optional>
|
|
#include <string>
|
|
|
|
#include "data_model/models.h"
|
|
|
|
// ============================================================================
|
|
// Generation Output Models
|
|
// ============================================================================
|
|
|
|
/**
|
|
* @brief Generated brewery payload.
|
|
*/
|
|
struct BreweryResult {
|
|
/**
|
|
* @brief Brewery display name in English.
|
|
*/
|
|
std::string name_en;
|
|
|
|
/**
|
|
* @brief Brewery description text in English.
|
|
*/
|
|
std::string description_en;
|
|
|
|
/**
|
|
* @brief Brewery display name in the local language.
|
|
*/
|
|
std::string name_local;
|
|
|
|
/**
|
|
* @brief Brewery description text in the local language.
|
|
*/
|
|
std::string description_local;
|
|
};
|
|
|
|
/**
|
|
* @brief Generated user profile payload.
|
|
*/
|
|
struct UserResult {
|
|
/**
|
|
* @brief First (given) name, copied from the sampled Name -- not
|
|
* LLM-invented.
|
|
*/
|
|
std::string first_name{};
|
|
|
|
/**
|
|
* @brief Last (family) name, copied from the sampled Name -- not
|
|
* LLM-invented.
|
|
*/
|
|
std::string last_name{};
|
|
|
|
/**
|
|
* @brief Gender associated with the sampled first name, copied from the
|
|
* sampled Name -- not LLM-invented.
|
|
*/
|
|
std::string gender{};
|
|
|
|
/**
|
|
* @brief Username handle.
|
|
*/
|
|
std::string username{};
|
|
|
|
/**
|
|
* @brief Short user biography.
|
|
*/
|
|
std::string bio{};
|
|
|
|
/**
|
|
* @brief Relative check-in/activity weight for this user, used to drive
|
|
* a J-curve activity profile in later pipeline phases.
|
|
*/
|
|
float activity_weight{};
|
|
};
|
|
|
|
// ============================================================================
|
|
// Pipeline Data Models
|
|
// ============================================================================
|
|
|
|
/**
|
|
* @brief Enriched city data with Wikipedia context.
|
|
*/
|
|
struct EnrichedCity {
|
|
City location;
|
|
std::string region_context{};
|
|
};
|
|
|
|
/**
|
|
* @brief A brewery's address. Owns the `City` it belongs to alongside its
|
|
* street-level fields. Mirrors the `brewery_addresses` table and the
|
|
* backend's `BreweryPostLocation` shape.
|
|
*
|
|
* Only `city` and `postal_code` are populated today -- street-address
|
|
* generation has no fixture data or service yet, so the address lines stay
|
|
* empty.
|
|
*/
|
|
struct BreweryAddress {
|
|
City city{};
|
|
std::optional<std::string> address_line_1{};
|
|
std::optional<std::string> address_line_2{};
|
|
std::string postal_code{};
|
|
};
|
|
|
|
/**
|
|
* @brief A user's address. Owns the `City` it belongs to alongside its
|
|
* street-level fields. Mirrors the `user_addresses` table.
|
|
*
|
|
* Only `city` is populated today; the street-level columns exist for future
|
|
* enrichment.
|
|
*/
|
|
struct UserAddress {
|
|
City city{};
|
|
std::optional<std::string> address_line_1{};
|
|
std::optional<std::string> address_line_2{};
|
|
std::optional<std::string> postal_code{};
|
|
};
|
|
|
|
/**
|
|
* @brief Helper struct to store generated brewery data.
|
|
*/
|
|
struct BreweryRecord {
|
|
BreweryAddress address;
|
|
BreweryResult brewery;
|
|
};
|
|
|
|
/**
|
|
* @brief Helper struct to store generated user data.
|
|
*
|
|
* `email` and `date_of_birth` are programmatically generated by the
|
|
* orchestrator (never LLM-authored) so a downstream auth-account seeding
|
|
* consumer can register real accounts from the pipeline's SQLite export.
|
|
*/
|
|
struct UserRecord {
|
|
UserAddress address{};
|
|
UserResult user;
|
|
std::string email{};
|
|
std::string date_of_birth{};
|
|
};
|
|
|
|
#endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_
|