Skip to content

primitives

Douwe de Vries edited this page Jul 1, 2026 · 2 revisions

Primitives

Active contributors: Douwe de Vries

Purpose

This section documents the core domain objects that carry CSV Align state across parsing, session storage, comparison, presentation, persistence, and the frontend API. These primitives are the vocabulary used by the feature pages and the system pages.

Related pages:

Directory layout

Area Source paths
Core Rust data types /Users/vriesd/projects/csv-align/src/data/types.rs
Session state /Users/vriesd/projects/csv-align/src/backend/session.rs, /Users/vriesd/projects/csv-align/src/backend/store.rs
Request models /Users/vriesd/projects/csv-align/src/backend/requests.rs
Response DTOs /Users/vriesd/projects/csv-align/src/presentation/responses.rs
Frontend API types /Users/vriesd/projects/csv-align/frontend/src/types/api.ts
Frontend UI state types /Users/vriesd/projects/csv-align/frontend/src/types/ui.ts

Key abstractions

  • CsvData is a loaded CSV with optional file path, headers, and rows.
  • ColumnInfo describes physical CSV columns and detected data types.
  • FileSide identifies File A or File B.
  • ColumnMapping and MappingType describe how comparison columns are paired.
  • ComparisonConfig is the validated configuration used by the comparison engine.
  • ComparisonNormalizationConfig controls cleanup and flexible key matching.
  • RowComparisonResult represents one output row category.
  • ComparisonSummary aggregates result counts.
  • SessionData keeps loaded data, mappings, config, results, and revision state for a session.

How it works

  1. CSV bytes are parsed into CsvData and detected ColumnInfo values.
  2. The backend stores File A and File B in SessionData.
  3. User selections and mappings arrive as request DTOs from /Users/vriesd/projects/csv-align/src/backend/requests.rs.
  4. Validation converts request DTOs into ComparisonConfig.
  5. The comparison engine emits RowComparisonResult values and a ComparisonSummary.
  6. /Users/vriesd/projects/csv-align/src/presentation/responses.rs converts backend primitives into response DTOs.
  7. /Users/vriesd/projects/csv-align/frontend/src/types/api.ts mirrors the response and request shapes consumed by React.

Integration points

Entry points for modification

  • Change Rust primitives in /Users/vriesd/projects/csv-align/src/data/types.rs.
  • Change session fields in /Users/vriesd/projects/csv-align/src/backend/session.rs.
  • Change request DTOs in /Users/vriesd/projects/csv-align/src/backend/requests.rs.
  • Change response DTOs in /Users/vriesd/projects/csv-align/src/presentation/responses.rs.
  • Keep frontend types in /Users/vriesd/projects/csv-align/frontend/src/types/api.ts aligned with Rust response and request shapes.

Key source files

File Purpose
/Users/vriesd/projects/csv-align/src/data/types.rs Core Rust domain primitives.
/Users/vriesd/projects/csv-align/src/backend/session.rs In-memory per-session state.
/Users/vriesd/projects/csv-align/src/backend/requests.rs HTTP/Tauri request DTOs and validation error enums.
/Users/vriesd/projects/csv-align/src/presentation/responses.rs Response DTOs and conversions from Rust domain results.
/Users/vriesd/projects/csv-align/frontend/src/types/api.ts Frontend API contract types.
/Users/vriesd/projects/csv-align/frontend/src/types/ui.ts Frontend UI-only state types.

Clone this wiki locally