13 releases (5 breaking)
Uses new Rust 2024
| 0.8.5 | Aug 2, 2025 |
|---|---|
| 0.8.4 | Jun 27, 2025 |
| 0.7.1 | Jun 4, 2025 |
| 0.7.0 | May 26, 2025 |
| 0.3.0 | May 16, 2025 |
#13 in #checked
1,269 downloads per month
Used in 4 crates
99KB
2.5K
SLoC
gelx_core
Core utilities and logic for
gelxcode generation, powering both thegelxprocedural macro and thegelx_cli.
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
gelxconfiguration fromCargo.toml([package.metadata.gelx]). - Defining common types, error handling, and utility functions used by both
gelx(the macro crate) andgelx_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_syncandget_descriptorfunctions to fetch query data descriptions from a running Gel instance. - Token Stream Generation:
generate_query_token_streamwhich 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
GelxMetadatafromCargo.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
gelxecosystem.
Features
gelx_core exposes several features that can be toggled by dependent crates (like gelx and gelx_macros):
with_bigint: Enables support forBigInt.with_bigdecimal: Enables support forBigDecimal.with_chrono: Enables support forchronodate/time types.with_all: A convenience feature that enables allwith_*features.query: Enables generation of query execution functions (depends ongel-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.
Dependencies
~33–49MB
~866K SLoC