11#include "reusex/core/component_record.hpp"
12#include "reusex/core/survey.hpp"
13#include "reusex/types/point_types.hpp"
40struct MaterialPassport;
41struct MaterialPassportMetadata;
42struct SensorIntrinsics;
82 explicit ProjectDB(std::filesystem::path dbPath,
bool readOnly =
false);
138 const std::filesystem::
path &
path() const noexcept;
188 const cv::Mat &confidence,
189 const std::array<double, 16> &worldPose,
191 double timestamp = -1.0,
int scan_id = -1);
198 const std::array<double, 16> &worldPose);
260 std::array<double, 16>
pose = {1, 0, 0, 0, 0, 1, 0, 0,
261 0, 0, 1, 0, 0, 0, 0, 1};
270 const std::vector<uint8_t> &jpeg_data,
271 double timestamp = -1.0,
int nodeId = -1);
283 int inliers,
double rms);
298 const std::vector<cv::Mat> &labels);
315 std::string_view stage =
"",
316 std::string_view paramsJson =
"");
319 std::string_view stage =
"",
320 std::string_view paramsJson =
"");
323 std::string_view stage =
"",
324 std::string_view paramsJson =
"");
327 const pcl::PointCloud<pcl::PointXYZ> &cloud,
328 std::string_view stage =
"",
329 std::string_view paramsJson =
"");
334 pcl::PointCloud<pcl::PointXYZ>::Ptr
353 std::pair<std::string, std::string>
361 std::vector<uint8_t>
tile_index(std::string_view name)
const;
397 uint64_t limit)
const;
402 const std::map<int, std::string> &labelMap);
404 std::map<int, std::string>
422 const std::vector<InstanceRecord> &records);
425 std::vector<InstanceRecord>
instances(
const std::string &cloud_name)
const;
437 uint32_t instance_id,
int point_count);
442 uint32_t instance_id)
const;
453 std::string_view materialGuid);
457 int instanceId)
const;
460 std::map<int, std::string>
472 std::vector<std::pair<std::string, std::string>>
489 std::optional<MaterialAnnotation>
495 std::string_view stage =
"", std::string_view paramsJson =
"");
498 std::string_view stage =
"", std::string_view paramsJson =
"");
500 std::shared_ptr<pcl::PolygonMesh>
mesh(std::string_view name)
const;
501 std::shared_ptr<pcl::TextureMesh>
texture_mesh(std::string_view name)
const;
525 std::vector<MeshTextureMetadata>
566 const std::vector<uint8_t> &ply,
567 std::string_view stage =
"",
568 std::string_view parameters =
"");
639 std::string_view edge_type =
"");
658 const std::string &provenance_json =
"{}");
661 std::vector<ScanRecord>
scans()
const;
684 std::vector<std::string>
691 std::string_view paramsJson =
"");
698 std::string_view errorMsg =
"");
704 std::string_view errorMsg =
"");
773 std::vector<std::vector<TableCell>>
774 table_rows(std::string_view table, std::int64_t offset, std::int64_t limit,
775 std::size_t text_limit = 256)
const;
890 [[nodiscard]] std::vector<PropertyDefinition>
902 const std::string &type,
903 const std::vector<std::string> &options,
904 int sort_order,
int width = 200);
911 const std::string &name,
912 const std::string &type,
913 const std::vector<std::string> &options,
914 int sort_order,
int width);
927 [[nodiscard]] std::optional<std::pair<std::vector<std::uint8_t>, std::string>>
937 const std::vector<std::uint8_t> &blob,
938 const std::string &mime_type);
951 std::string_view projectId);
965 std::string_view projectId, std::string_view
id);
991 std::map<std::string, std::string>
1002 std::string_view fieldName)
const;
1042 std::string_view column,
1043 std::string_view value);
1058 std::string_view fieldName,
1059 std::string_view value);
1068 std::string_view fieldName);
1100 const std::string &label =
"",
1101 std::optional<int> blocking_types = std::nullopt);
1113 [[nodiscard]] std::optional<std::vector<std::uint8_t>>
1133 [[nodiscard]] std::optional<ResourceTemplateRecord>
1174 std::optional<std::string>
1176 std::optional<std::uint32_t>
1183 std::optional<std::string>
1205 [[nodiscard]] std::optional<SurveyTypeRecord>
survey_type(int64_t
id)
const;
1209 [[nodiscard]] std::optional<SurveyPartRecord>
1216 const std::vector<std::pair<std::string, double>> &code_quantities);
1218 std::uint32_t instance_id)
const;
1252 std::string_view new_name);
1288 const std::vector<int64_t> &type_ids = {},
1290 [[nodiscard]] std::vector<SampleRecord>
samples()
const;
1291 [[nodiscard]] std::optional<SampleRecord>
sample(int64_t
id)
const;
1298 const std::vector<int64_t> &type_ids);
1299 [[nodiscard]] std::vector<SampleRecord>
1337 std::unique_ptr<Impl> impl_;
Transaction(ProjectDB &db)
throws on a read-only project
Transaction & operator=(const Transaction &)=delete
Transaction(const Transaction &)=delete
double sensor_frame_timestamp(int nodeId) const
Get the timestamp (epoch seconds) of a sensor frame.
void add_survey_part(const SurveyPartRecord &rec)
int log_pipeline_start(std::string_view stage, std::string_view paramsJson="")
std::string point_cloud_type(std::string_view name) const
bool unlink_instance_material(std::string_view cloud_name, int instance_id)
Removes the instance_materials link of (cloud_name, instance_id).
bool has_point_cloud(std::string_view name) const
std::vector< SampleRecord > samples() const
bool delete_gaussian_splat(std::string_view name)
Deleting the metadata row cascades to its data chunks.
std::optional< SurveyPartRecord > survey_part(std::string_view code) const
std::vector< uint8_t > mesh_data_blob(std::string_view name) const
void dismiss_instance(std::string_view instance_guid)
Tombstones (schema v26, survey_dismissed_instances): instance guids whose survey part the user delete...
void add_material_passport(const core::MaterialPassport &passport, std::string_view projectId)
std::vector< ReportPdfRecord > list_report_pdfs() const
List all stored report PDFs, newest first.
bool is_passport_linked(std::string_view guid) const
True when a survey part or an instance link still references guid.
SurveyTypeRecord add_survey_type(const SurveyTypeRecord &rec)
bool has_sensor_frame_pose(int nodeId) const
True when this frame carries a usable stored world pose.
int max_survey_part_number() const
std::map< int, std::string > instance_materials(std::string_view cloudName) const
All instance_id → material_guid links for a cloud.
void save_point_cloud(std::string_view name, const pcl::PointCloud< pcl::PointXYZ > &cloud, std::string_view stage="", std::string_view paramsJson="")
bool has_passport_field_values(std::string_view name) const
True when any passport stores a value under the field name name (a leksikon name_en or a user column'...
void rename_passport_field(std::string_view old_name, std::string_view new_name)
Call inside a Transaction.
std::shared_ptr< pcl::TextureMesh > texture_mesh(std::string_view name) const
std::vector< SurveyPartRecord > survey_parts() const
bool has_segmentation_image(int nodeId) const
void log_pipeline_end(int logId, bool success, std::string_view errorMsg="")
Shim for the two-outcome form: success maps to PipelineOutcome:: success, !success to PipelineOutcome...
std::vector< std::string > list_building_components() const
CloudLPtr point_cloud_label(std::string_view name) const
std::vector< std::string > list_building_components(std::string_view type) const
Names of the components whose stored type discriminator equals type.
int nearest_sensor_frame_by_timestamp(double timestamp) const
Find the sensor frame with the closest timestamp to the given value.
bool has_pose_graph() const
True when the pose graph table exists and has at least one edge.
void set_survey_part_quantities(const std::vector< std::pair< std::string, double > > &code_quantities)
Set several parts' quantities in one transaction — all or nothing.
void delete_survey_part(std::string_view code)
std::array< double, 16 > sensor_frame_pose(int nodeId) const
The stored world pose, verbatim — row-major 4x4, identity when the row is missing,...
ResourceTemplateRecord add_resource_template(const ResourceTemplateRecord &rec)
id/timestamps are ignored.
std::vector< PipelineLogEntry > pipeline_log(int limit=0) const
std::vector< MeshTextureMetadata > mesh_texture_metadata(std::string_view name) const
void add_material_passport(const core::MaterialPassport &passport, std::string_view projectId, std::string_view id)
Add a material passport with a custom row ID.
void save_panoramic_image(const std::string &filename, const std::vector< uint8_t > &jpeg_data, double timestamp=-1.0, int nodeId=-1)
bool has_mesh(std::string_view name) const
std::vector< std::string > list_passport_guids() const
List document GUIDs ordered by created_at.
std::shared_ptr< pcl::PolygonMesh > mesh(std::string_view name) const
void set_passport_metadata_field(std::string_view documentGuid, std::string_view column, std::string_view value)
Set a metadata column on a material passport.
void add_instance(const std::string &cloud_name, const InstanceRecord &record)
Insert one instance row, leaving the cloud's other rows (and their instance_materials links,...
int add_pose_graph_edge(const PoseGraphEdge &edge)
Insert a single edge and return its row id.
void delete_panoramic_image(std::string_view filename)
void save_point_cloud(std::string_view name, const Cloud &cloud, std::string_view stage="", std::string_view paramsJson="")
std::vector< ScanRecord > scans() const
Returns all scan records ordered by id.
std::vector< int > sensor_frame_ids() const
SurveyPartRecord update_survey_part(std::string_view code, const SurveyPartPatch &patch)
bool delete_resource_template(int64_t id)
void save_instances(const std::string &cloud_name, const std::vector< InstanceRecord > &records)
Replace the full set of instance rows for a cloud (transactional).
std::vector< std::string > list_gaussian_splats() const
Empty on a pre-v12 schema, for the same reason as has_gaussian_splat().
std::size_t delete_passport_field_values(std::string_view name)
Call inside a Transaction.
std::vector< SurveyTypeRecord > survey_types() const
ProjectSummary project_summary() const
std::vector< core::MaterialPassport > all_material_passports() const
core::MaterialPassport material_passport(std::string_view documentGuid) const
void save_tile_index(std::string_view name, const std::vector< uint8_t > &blob)
Save a serialized tile index blob for the named cloud.
void save_segmentation_image(int nodeId, const cv::Mat &labels)
int schema_version() const
std::int64_t table_row_count(std::string_view table) const
Rows in table now (COUNT(*)).
void save_segmentation_images(const std::vector< int > &nodeIds, const std::vector< cv::Mat > &labels)
int building_component_count() const
ProjectDB(std::filesystem::path dbPath, bool readOnly=false)
Opens a ReUseX project database and validates its schema.
bool is_open() const noexcept
std::vector< std::string > dismissed_instances() const
Every dismissed instance guid, ascending. Empty before v26.
SurveyTypeRecord update_survey_type(int64_t id, const SurveyTypePatch &patch)
void save_pose_graph_edges(const std::vector< PoseGraphEdge > &edges)
Replace the stored pose graph atomically (delete-then-insert inside one transaction).
void delete_building_component(std::string_view name)
void save_mesh(std::string_view name, const pcl::TextureMesh &mesh, std::string_view stage="", std::string_view paramsJson="")
std::optional< int > passport_linked_node_id(std::string_view documentGuid) const
Return the sensor frame node_id this passport was linked to.
cv::Mat sensor_frame_confidence(int nodeId) const
void delete_point_cloud(std::string_view name)
bool is_instance_dismissed(std::string_view instance_guid) const
False on a read-only open of a pre-v26 project (no table).
GaussianSplatMetadata gaussian_splat_metadata(std::string_view name) const
cv::Mat sensor_frame_image(int nodeId) const
int panoramic_image_count() const
cv::Mat panoramic_image(std::string_view filename) const
std::vector< std::pair< int, int > > sensor_frame_ids_with_scan() const
Returns {node_id, scan_id} pairs ordered by node_id.
std::map< int, std::string > label_definitions(std::string_view cloudName) const
std::vector< InstanceRecord > instances(const std::string &cloud_name) const
All instance rows for a cloud, ordered by instance_id.
bool has_panoramic_image(std::string_view filename) const
cv::Mat segmentation_image(int nodeId) const
std::vector< std::string > list_project_ids() const
List all project IDs in the database.
void save_panorama_segmentation(int panoId, const cv::Mat &labels)
static ProbeResult probe(const std::filesystem::path &path) noexcept
Is path a ReUseX project, and at which schema?
PipelineOutcome
How a pipeline stage run ended.
void save_point_cloud(std::string_view name, const CloudL &cloud, std::string_view stage="", std::string_view paramsJson="")
std::string passport_property_value(std::string_view documentGuid, std::string_view fieldName) const
Get a single passport property value by field name.
std::optional< std::vector< std::uint8_t > > report_pdf(int64_t id) const
Fetch one stored PDF blob by id.
ProjectDB(std::filesystem::path dbPath, OpenOptions options)
std::vector< PanoramicImage > list_panoramic_images() const
core::ComponentRecord component_record(std::string_view name) const
Load the component row with the given name. Throws if absent.
void save_point_cloud(std::string_view name, const CloudN &cloud, std::string_view stage="", std::string_view paramsJson="")
ResourceTemplateRecord update_resource_template(int64_t id, const ResourceTemplatePatch &patch)
SampleRecord add_sample(std::string_view title, std::string_view what, const std::vector< int64_t > &type_ids={}, core::SampleStage stage=core::SampleStage::planlagt)
Register a sample, its type links and its initial stage in one transaction (duplicate type ids collap...
CloudPtr point_cloud_xyzrgb(std::string_view name) const
MeshMetadata mesh_metadata(std::string_view name) const
static int latest_schema_version() noexcept
std::vector< TableInfo > list_tables() const
Every user table, sorted by name, with its row count.
int delete_pose_graph_edges(int from_node_id, int to_node_id, std::string_view edge_type="")
Delete edges matching from_node_id and to_node_id.
std::vector< std::vector< TableCell > > table_rows(std::string_view table, std::int64_t offset, std::int64_t limit, std::size_t text_limit=256) const
Rows [offset, offset + limit) of table in rowid order (or primary-key order for a WITHOUT ROWID table...
void set_instance_point_count(const std::string &cloud_name, uint32_t instance_id, int point_count)
Update one instance row's point_count in place (no delete/re-insert).
void delete_material_thumbnail(const std::string &guid)
Delete a material's thumbnail if present (no-op when absent).
CloudNPtr point_cloud_normal(std::string_view name) const
bool has_sensor_frame(int nodeId) const
void validate_schema() const
std::string ensure_resource_passport(std::string_view code)
Resource storage (schema v25).
SampleRecord update_sample(int64_t id, const SamplePatch &patch)
cv::Mat glass_confidence_image(int nodeId) const
void update_project_metadata(const ProjectMetadata &metadata)
Update project metadata.
std::vector< MeshTextureInfo > mesh_texture_blobs(std::string_view name) const
std::map< std::string, std::string > passport_stored_properties(std::string_view documentGuid) const
Get stored property field_name→string pairs for a passport.
std::vector< ResourceTemplateRecord > resource_templates() const
By id. Empty on a read-only open of a pre-v25 project.
static void set_hardened_by_default(bool on) noexcept
Process-wide default for OpenOptions::hardened, used by the (path, readOnly) constructor — and so by ...
bool has_gaussian_splat(std::string_view name) const
False — not an error — on a project whose schema predates the splat tables, which is what a read-only...
void delete_property_definition(const std::string &id)
Delete a material column definition by id.
std::vector< TableColumn > table_columns(std::string_view table) const
The columns of table, in declaration order.
bool has_building_component(std::string_view name) const
const std::filesystem::path & path() const noexcept
std::vector< std::string > list_point_clouds() const
void save_gaussian_splat(std::string_view name, const std::vector< uint8_t > &ply, std::string_view stage="", std::string_view parameters="")
Store an INRIA-format 3DGS .ply under name, replacing any splat already stored under it (chunks of th...
void log_pipeline_end(int logId, PipelineOutcome outcome, std::string_view errorMsg="")
bool has_survey_part_for(std::string_view cloud_name, std::uint32_t instance_id) const
void delete_panoramic_image(int id)
void set_passport_property(std::string_view documentGuid, std::string_view fieldName, std::string_view value)
Set a single property value by field name (upsert).
std::optional< SampleRecord > sample(int64_t id) const
ScanRecord create_scan(const std::string &source_path, const std::string &provenance_json="{}")
Creates a new scan record.
std::vector< PropertyDefinition > list_property_definitions() const
List all user-defined material column definitions.
std::string mesh_format(std::string_view name) const
void save_mesh(std::string_view name, const pcl::PolygonMesh &mesh, std::string_view stage="", std::string_view paramsJson="")
std::string add_property_definition(const std::string &name, const std::string &type, const std::vector< std::string > &options, int sort_order, int width=200)
Add a new material column definition.
std::optional< std::string > instance_material_guid(std::string_view cloudName, int instanceId) const
Material passport guid linked to an instance, or nullopt if unlinked.
std::vector< uint8_t > gaussian_splat_blob(std::string_view name) const
The stored bytes, reassembled from their chunks — byte-for-byte what save_gaussian_splat() was given.
bool has_glass_confidence_image(int nodeId) const
ReportPdfRecord add_report_pdf(const std::vector< std::uint8_t > &pdf, const std::string &label="", std::optional< int > blocking_types=std::nullopt)
Store a PDF blob and return its record (id, created_at, size).
bool has_panorama_segmentation(int panoId) const
core::SensorIntrinsics sensor_frame_intrinsics(int nodeId) const
cv::Mat panoramic_image(int id) const
std::optional< MaterialAnnotation > material_annotation(std::string_view materialGuid) const
The stored annotation for one material passport, or nullopt when none was saved.
std::vector< SampleRecord > samples_for_type(int64_t type_id) const
core::MaterialPassportMetadata passport_metadata(std::string_view documentGuid) const
Get passport metadata without loading all properties.
std::optional< SurveyTypeRecord > survey_type(int64_t id) const
void set_sample_links(int64_t id, const std::vector< int64_t > &type_ids)
pcl::PointCloud< pcl::PointXYZ >::Ptr point_cloud_xyz(std::string_view name) const
std::optional< std::pair< std::vector< std::uint8_t >, std::string > > material_thumbnail(const std::string &guid) const
Fetch a material's thumbnail blob and its MIME type.
void set_instance_material(std::string_view cloudName, int instanceId, std::string_view materialGuid)
Link an instance (a row in the instances table) to a material passport by its document guid.
std::vector< uint8_t > tile_index(std::string_view name) const
Load the tile index blob, or empty if not set.
void delete_passport_property(std::string_view documentGuid, std::string_view fieldName)
Delete a single property value by field name.
void save_material_annotation(std::string_view materialGuid, const MaterialAnnotation &annotation)
Upsert the VLM annotation for one material passport (keyed on its document GUID).
std::pair< std::string, std::string > point_cloud_provenance(std::string_view name) const
The stage and parameters (JSON, may be empty) the cloud was last saved with — so an in-place edit can...
void update_sensor_frame_pose(int nodeId, const std::array< double, 16 > &worldPose)
Update only the stored world pose (transform) of an existing sensor frame.
void set_material_thumbnail(const std::string &guid, const std::vector< std::uint8_t > &blob, const std::string &mime_type)
Insert or replace a material's thumbnail blob.
cv::Mat panorama_segmentation(int panoId) const
void save_panorama_pose(int id, const std::array< double, 16 > &pose, int inliers, double rms)
Store a content-aligned pose (row-major 4x4 world) for a panorama.
std::vector< int > segmentation_image_ids() const
void save_component_record(const core::ComponentRecord &record)
Insert or replace the component row identified by record.name.
cv::Mat sensor_frame_depth(int nodeId) const
void save_sensor_frame(int nodeId, const cv::Mat &color, const cv::Mat &depth, const cv::Mat &confidence, const std::array< double, 16 > &worldPose, const core::SensorIntrinsics &intrinsics, double timestamp=-1.0, int scan_id=-1)
void save_glass_confidence_image(int nodeId, const cv::Mat &confidence)
std::vector< std::string > list_meshes() const
void save_sensor_frame(int nodeId, const cv::Mat &colorImage)
CloudPage point_cloud_page(std::string_view name, uint64_t offset, uint64_t limit) const
Read one page of a point cloud without materializing the cloud.
bool delete_sample(int64_t id)
void delete_survey_type(int64_t id)
Deletes a survey type; its parts and sample links cascade.
void update_component_record_by_guid(const core::ComponentRecord &record)
Update an existing component's mutable fields (name, type, parent_id, confidence, metadata,...
std::vector< int > glass_confidence_image_ids() const
void update_property_definition(const std::string &id, const std::string &name, const std::string &type, const std::vector< std::string > &options, int sort_order, int width)
Overwrite an existing material column definition.
std::string point_cloud_storage_order(std::string_view name) const
Returns the "storage_order" value from the cloud's parameters JSON, or an empty string when the key i...
std::vector< PoseGraphEdge > list_pose_graph_edges() const
All stored edges, in insertion order.
std::string instance_guid(const std::string &cloud_name, uint32_t instance_id) const
Stable GUID of a single instance.
static bool hardened_by_default() noexcept
static IntegrityReport check_integrity(const std::filesystem::path &file)
Checks a file before a server adopts it, on a hardened read-only connection that runs no migration: P...
std::optional< ResourceTemplateRecord > resource_template(int64_t id) const
ProjectMetadata get_project_metadata(std::string_view projectId) const
Get project metadata by project ID.
void delete_material_passport(std::string_view documentGuid)
Delete a material passport by GUID.
void save_label_definitions(std::string_view cloudName, const std::map< int, std::string > &labelMap)
bool is_read_only() const noexcept
Turn a 2D mask drawn on one sensor frame into a labelled 3D selection and a survey part (Segmentering...
typename CloudN::Ptr CloudNPtr
pcl::PointCloud< PointT > Cloud
typename CloudL::Ptr CloudLPtr
typename Cloud::Ptr CloudPtr
pcl::PointCloud< LabelT > CloudL
pcl::PointCloud< NormalT > CloudN
A contiguous window of one cloud's stored records, still in storage layout — no PCL type has been inf...
uint64_t total
Points in the whole cloud.
uint64_t count
Points actually read.
uint32_t point_step
Bytes per stored record.
std::string point_type
"PointXYZRGB" | "PointXYZ" | "Normal" | "Label".
std::vector< uint8_t > data
count * point_step bytes, exactly as stored.
uint64_t offset
First point index, clamped to total.
One row of the instances table: a spatially-distinct object within an instance-label cloud,...
int point_count
Number of points in the instance.
std::string guid
Stable identity (UUID-v4-like).
uint32_t instance_id
Label value in the instance cloud (>= 1).
int semantic_class
Semantic class this instance belongs to.
Result of check_integrity().
std::string detail
SQLite's own words; empty when ok.
A free-text description plus an arbitrary, prompt-driven set of key/value attributes for one material...
std::string description
Free-text description of the material.
std::vector< std::pair< std::string, std::string > > attributes
Arbitrary key/value pairs the model returned.
std::string provider_model
Provenance: "<base_url>|<model>".
std::string raw_json
The model's full JSON answer, verbatim.
std::vector< uint8_t > image_data
How a connection is opened.
std::array< double, 16 > pose
One directed edge stored in pose_graph_edges.
std::string edge_type
"odometry" | "loop_closure" | "panorama"
double residual
0.5 × whitened squared residual after convergence (GTSAM convention).
double weight
Translational information weight (1 / sigma_trans²).
What probe() found, without opening a full ProjectDB.
int schema_version
MAX(schema_version.version); -1 if absent.
bool is_project
sqlite with the ReUseX core tables
std::string error
sqlite / validation message when not a project
std::map< int, std::string > labels
std::string storage_order
How points are ordered in storage.
std::map< std::string, int > count_by_type
std::string version_number
std::string building_address
std::string survey_organisation
std::vector< ScanInfo > scans
std::vector< CloudInfo > clouds
std::vector< ProjectInfo > projects
std::filesystem::path path
std::vector< MaterialInfo > materials
SensorFrameInfo sensor_frames
std::vector< GaussianSplatMetadata > gaussian_splats
Metadata only — the summary never carries a splat's payload, which is routinely hundreds of MB.
std::vector< MeshInfo > meshes
PanoramicInfo panoramic_images
A user-defined column in the Notion-like material editor.
std::vector< std::string > options
Metadata for one stored report PDF version.
std::string created_at
UTC, as sqlite's datetime('now') stores it: "YYYY-MM-DD HH:MM:SS" (no 'T', no zone suffix).
std::optional< int > blocking_types
Survey types that still blocked the report when it was generated; nullopt for versions made before sc...
int version
1-based position in generation order (v1 is the first PDF ever made).
std::optional< std::string > name
std::optional< std::string > csv_json
std::optional< std::string > members_json
One row of templates (resources/templates spec §5.1).
std::optional< std::string > seed
std::optional< std::string > title
std::optional< core::SampleResult > result
std::optional< core::SampleStage > stage
std::optional< std::string > what
core::SampleResult result
std::vector< int64_t > type_ids
One row of the scans table.
std::string provenance_json
std::optional< std::string > room_name
std::optional< int64_t > type_id
std::optional< std::string > note
std::optional< double > quantity
std::optional< bool > starred
std::optional< std::string > cloud_name
std::optional< std::uint32_t > room_id
std::optional< std::string > instance_guid
Stable link to instances.guid (schema v22); survives rux create instances re-runs because instance id...
std::optional< std::uint32_t > instance_id
std::optional< std::string > material_guid
Sparse update; an engaged optional sets the field.
std::optional< core::Treatment > treatment
std::optional< std::string > name
std::optional< bool > starred
std::optional< std::string > bim7aa_code
std::optional< core::ReviewStatus > review_status
std::optional< std::string > eak_code
std::optional< std::optional< double > > mass_t
std::optional< std::optional< double > > confidence
std::optional< std::string > note
std::optional< std::string > unit
core::Treatment treatment
std::optional< double > mass_t
std::optional< double > confidence
core::ReviewStatus review_status
One cell of table_rows().
std::string text
text (possibly truncated), or blob head bytes
bool truncated
text shorter than size
std::uint64_t size
full byte size of text or blob
One column of a table, as PRAGMA table_info reports it.
std::string declared_type
e.g. "INTEGER", "BLOB"; may be empty
One user table and its row count. sqlite_* internals are excluded.
Core-owned persistence contract for a row of the building_components table (#227).
A complete material passport for a reused building material.
Lightweight camera intrinsics replacing rtabmap::CameraModel in downstream code.