# sqlgen **Repository Path**: mrz1514/sqlgen ## Basic Information - **Project Name**: sqlgen - **Description**: sqlgen 是一个支持从 sql 文件,数据库链接两种方式来做代码生成的脚手架工具,目前支持了 gorm,xorm,sqlx,sql,bun 的代码生成,学习和使用非常简单 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: https://www.oschina.net/p/sqlgen - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-10-12 - **Last Updated**: 2023-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sqlgen English | [中文](README_cn.md) [![Go](https://github.com/anqiansong/sqlgen/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/anqiansong/sqlgen/actions/workflows/go.yml) [![codecov](https://codecov.io/gh/anqiansong/sqlgen/branch/main/graph/badge.svg?token=8mLCFUqD2l)](https://codecov.io/gh/anqiansong/sqlgen) [![Go Reference](https://pkg.go.dev/badge/github.com/anqiansong/sqlgen.svg)](https://pkg.go.dev/github.com/anqiansong/sqlgen) [![Go Report Card](https://goreportcard.com/badge/github.com/anqiansong/sqlgen)](https://goreportcard.com/report/github.com/anqiansong/sqlgen) [![Release](https://img.shields.io/github/v/release/anqiansong/sqlgen.svg?style=flat-square)](https://github.com/anqiansong/sqlgen) [![GitHub license](https://img.shields.io/github/license/anqiansong/sqlgen?style=flat-square)](https://github.com/anqiansong/sqlgen/blob/main/LICENSE) sqlgen is a tool to generate **bun**, **gorm**, **sql**, **sqlx** and **xorm** sql code from SQL file which is inspired by - [go-zero](https://github.com/zeromicro/go-zero) - [goctl](https://github.com/zeromicro/go-zero/tree/master/tools/goctl) - [sqlc](https://github.com/kyleconroy/sqlc). # Installation ```bash go install github.com/anqiansong/sqlgen@latest ``` # Example See [example](https://github.com/anqiansong/sqlgen/tree/main/example) # Queries rule ## 1. Function Name You can define a function via `fn` keyword in line comment, for example: ```sql -- fn: my_func SELECT * FROM user; ``` it will be generated as: ```go func (m *UserModel) my_func (...) { ... } ``` ## 2. Get One Record The expression `limit 1` must be explicitly defined if you want to get only one record, for example: ```sql -- fn: FindOne select * from user where id = ? limit 1; ``` ## 3. Marker or Values? For arguments of SQL, you can use `?` or explicitly values to mark them, in sqlgen, the arguments will be converted into variables, for example, the following query are equivalent: > NOTES: It does not apply to rule 2 ```sql -- fn: FindLimit select * from user where id = ?; -- fn: FindLimit select * from user where id = 1; ``` ## 4. SQL Function sqlgen supports aggregate function queries in sql, other than that, other functions are not supported so far. All the aggregate function query expressions must contain AS expression, for example: ```sql -- fn: CountAll select count(*) as count from user; ``` For most query cases, you can see [example.sql](https://github.com/anqiansong/sqlgen/blob/main/example/example.sql) for details. # How it works 1. Create a SQL file 2. Write your SQL code in the SQL file 3. Run `sqlgen` to generate code # Notes 1. Only support MYSQL code generation. 3. Do not support multiple tables in one SQL file. 4. Do not support join query.