gelx_core

Crates.iogelx_core
lib.rsgelx_core
version0.8.5
created_at2025-05-16 08:54:02.87157+00
updated_at2025-08-02 07:55:00.885189+00
descriptionUtilities for codegen in the `gelx` crate.
homepagehttps://geldata.com
repositoryhttps://github.com/ifiokjr/gelx
max_upload_size
id1676235
size189,025
Ifiok Jr. (ifiokjr)

documentation

README

gelx_core


Core utilities and logic for gelx code generation, powering both the gelx procedural macro and the gelx_cli.


Crate Docs Status Unlicense codecov

Overview

The gelx_core crate is the engine behind the gelx ecosystem. It provides the foundational components and functionalities required for:

  • Parsing Gel query files (.edgeql).
  • Connecting to a Gel instance to introspect schemas and query types.
  • Translating Gel query descriptions into Rust TokenStreams.
  • Handling gelx configuration from Cargo.toml ([package.metadata.gelx]).
  • Defining common types, error handling, and utility functions used by both gelx (the macro crate) and gelx_cli (the command-line tool).

This crate is not typically used directly by end-users but serves as an internal library for the other gelx tools. If you are looking to generate Rust code from Gel queries, you should use either the gelx macro for inline queries or the gelx_cli for file-based generation.

Functionality

Key functionalities provided by gelx_core include:

  • Descriptor Fetching: get_descriptor_sync and get_descriptor functions to fetch query data descriptions from a running Gel instance.
  • Token Stream Generation: generate_query_token_stream which takes a query description and generates the corresponding Rust code (structs for input/output, and query functions).
  • Metadata Handling: Structures and functions to parse and manage GelxMetadata from Cargo.toml.
  • Type Mapping: Logic to map Gel types to appropriate Rust types (e.g., String, Uuid, DateTime, custom enums, and object shapes).
  • Configuration: Utilities for resolving Gel connection parameters.
  • Error Handling: Common error types for the gelx ecosystem.

Features

gelx_core exposes several features that can be toggled by dependent crates (like gelx and gelx_macros):

  • with_bigint: Enables support for BigInt.
  • with_bigdecimal: Enables support for BigDecimal.
  • with_chrono: Enables support for chrono date/time types.
  • with_all: A convenience feature that enables all with_* features.
  • query: Enables generation of query execution functions (depends on gel-tokio).
  • serde: Enables #[derive(Serialize, Deserialize)] for generated structs.
  • builder: Enables #[derive(TypedBuilder)] for generated input structs.
  • strum: Enables #[derive(EnumString, Display)] for generated enums.

These features are typically controlled via the gelx crate's own features.

Contributing

This crate is part of the gelx workspace. Please refer to the main project's contributing guide for details on how to set up the development environment and contribute.

License

Unlicense, see the license file in the root of the workspace.

Commit count: 161

cargo fmt