How go-jet/jet works
Jet combines schema-driven Go code generation with a type-safe SQL construction and query-result mapping library. The generator connects to a supported database, retrieves schema metadata, and emits SQL-builder and model types; application code then uses those types with Jet’s dialect APIs to build and execute queries and map results into Go destinations. The graph preserves the three dialect families and the statement-cache capability visible in the tree. Several internal links are omitted where the excerpts or documented relationships do not establish the caller or call direction.
Main entry points: process.go Template processing · qrm.go Query result mapping · main.go Jet generator CLI · clause.go SQL expressions and clauses
Components 22
Code generation
- Jet generator CLI
cmd/jet/main.go - MySQL generator
generator/mysql/mysql_generator.go - PostgreSQL generator
generator/postgres/postgres_generator.go - SQLite generator
generator/sqlite/sqlite_generator.go - MySQL metadata queries
generator/mysql/query_set.go - PostgreSQL metadata queries
generator/postgres/query_set.go - SQLite metadata queries
generator/sqlite/query_set.go - Schema metadata
generator/metadata/schema_meta_data.go - Model templates
generator/template/model_template.go - SQL-builder templates
generator/template/sql_builder_template.go - Template processing
generator/template/process.go
SQL construction
- SQL expressions and clauses
internal/jet/clause.go - SQL statement builder
internal/jet/sql_builder.go
Execution and mapping
- Query result mapping
qrm/qrm.go - Row scanning
qrm/scan_context.go - Statement cache
stmtcache/db.go
Database dialects
- PostgreSQL SQL API
postgres/expressions.go - MySQL SQL API
mysql/dialect.go - SQLite SQL API
sqlite/select_statement.go
Other components
- Go developer
- Database
- Generated packages
Connections 29
- Go developer → Jet generator CLI: configures generation
- Jet generator CLI → MySQL generator: selects source
cmd/jet/main.go - Jet generator CLI → PostgreSQL generator: selects source
cmd/jet/main.go - Jet generator CLI → SQLite generator: selects source
cmd/jet/main.go - MySQL generator → MySQL metadata queries: retrieves metadata
- PostgreSQL generator → PostgreSQL metadata queries: retrieves metadata
- SQLite generator → SQLite metadata queries: retrieves metadata
- MySQL metadata queries → Query result mapping: maps query rows
generator/mysql/query_set.go - PostgreSQL metadata queries → Query result mapping: maps query rows
generator/postgres/query_set.go - SQLite metadata queries → Query result mapping: maps query rows
generator/sqlite/query_set.go - MySQL generator → Template processing: uses templates
generator/mysql/mysql_generator.go - PostgreSQL generator → Template processing: uses templates
generator/postgres/postgres_generator.go - SQLite generator → Template processing: uses templates
generator/sqlite/sqlite_generator.go - Template processing → Model templates: processes models
generator/template/process.go - Template processing → SQL-builder templates: processes builders
generator/template/process.go - Template processing → Generated packages: emits code
- Model templates → Generated packages: defines model types
- SQL-builder templates → Generated packages: defines SQL builders
- Go developer → PostgreSQL SQL API: writes queries
- Go developer → MySQL SQL API: writes queries
- Go developer → SQLite SQL API: writes queries
- PostgreSQL SQL API → SQL expressions and clauses: uses shared expressions
postgres/expressions.go - MySQL SQL API → SQL expressions and clauses: uses shared expressions
mysql/dialect.go - SQLite SQL API → SQL expressions and clauses: uses shared expressions
sqlite/select_statement.go - SQL statement builder → SQL expressions and clauses: builds statements
- Go developer → Query result mapping: executes and maps
- Query result mapping → Database: queries rows
qrm/qrm.go - Query result mapping → Row scanning: maps scanned rows
- Go developer → Statement cache: may cache statements