Crate gelx_core

Crate gelx_core 

Source
Expand description

§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.

Structs§

ArrayType
Backlink
BacklinkStubsArray
BacklinksSet
BaseType
BasesSet
EnumType
ExclusivesSet
GelxFeatures
GelxMetadata
The metadata for the gelx crate. This can either be specified in the Cargo.toml file or via CLI arguments.
GlobalsOutput
GlobalsTarget
IdRef
IntersectionOfSet
ModuleName
The name of a resource in the gel database.
ModuleNode
ModuleOutput
ModuleOutputs
ModuleTree
MultiRangeType
ObjectType
Pointer
PointerFlags
PointersSet
PointersSetPointersSet
RangeType
ScalarType
TupleElementDef
TupleElementsSet
TupleType
TypesOutput
UnionOfSet

Enums§

Exclusives
FeatureName
The name of a feature.
GelxCoreError
The error type for the gelx_core crate.
GelxFeatureOptions
PointerKind
SchemaCardinality
StructElement
Type
TypeKind

Constants§

GLOBALS_QUERY
PROPS_NAME
QUERY_PROP_NAME
Name of the query function.
TRANSACTION_PROP_NAME
TYPES_QUERY
Query to get all types in the database.

Traits§

ToModuleName

Functions§

generate_module_outputs
Generate the custom types.
generate_query_token_stream
get_descriptor
Get the query descriptor asynchronously.
get_descriptor_sync
Get the descriptor synchronously.
get_package_root
prettify
Will format the given source code using prettyplease.
query_globals
Execute the desired query.
resolve_path
Taken from https://github.com/launchbadge/sqlx/blob/f69f370f25f099fd5732a5383ceffc76f724c482/sqlx-macros-core/src/common.rs#L1C1-L37C2

Type Aliases§

GelxCoreResult
Types