-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add gorm
- Loading branch information
Showing
82 changed files
with
6,639 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
end_of_line = lf | ||
indent_size = 4 | ||
indent_style = space | ||
insert_final_newline = false | ||
max_line_length = 100 | ||
tab_width = 4 | ||
ij_continuation_indent_size = 8 | ||
ij_formatter_off_tag = @formatter:off | ||
ij_formatter_on_tag = @formatter:on | ||
ij_formatter_tags_enabled = false | ||
ij_smart_tabs = false | ||
ij_visual_guides = 80,100 | ||
ij_wrap_on_typing = false | ||
|
||
[{*.go,*.go2}] | ||
indent_style = tab | ||
ij_continuation_indent_size = 4 | ||
ij_visual_guides = none | ||
ij_go_GROUP_CURRENT_PROJECT_IMPORTS = true | ||
ij_go_add_leading_space_to_comments = false | ||
ij_go_add_parentheses_for_single_import = false | ||
ij_go_call_parameters_new_line_after_left_paren = true | ||
ij_go_call_parameters_right_paren_on_new_line = true | ||
ij_go_call_parameters_wrap = off | ||
ij_go_fill_paragraph_width = 80 | ||
ij_go_group_stdlib_imports = true | ||
ij_go_import_sorting = goimports | ||
ij_go_keep_indents_on_empty_lines = false | ||
ij_go_local_group_mode = project | ||
ij_go_move_all_imports_in_one_declaration = true | ||
ij_go_move_all_stdlib_imports_in_one_group = true | ||
ij_go_remove_redundant_import_aliases = false | ||
ij_go_run_go_fmt_on_reformat = true | ||
ij_go_use_back_quotes_for_imports = false | ||
ij_go_wrap_comp_lit = off | ||
ij_go_wrap_comp_lit_newline_after_lbrace = true | ||
ij_go_wrap_comp_lit_newline_before_rbrace = true | ||
ij_go_wrap_func_params = off | ||
ij_go_wrap_func_params_newline_after_lparen = true | ||
ij_go_wrap_func_params_newline_before_rparen = true | ||
ij_go_wrap_func_result = off | ||
ij_go_wrap_func_result_newline_after_lparen = true | ||
ij_go_wrap_func_result_newline_before_rparen = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,3 +13,6 @@ | |
|
||
# Dependency directories (remove the comment below to include it) | ||
# vendor/ | ||
|
||
.DS_Store | ||
.idea |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
package cmd | ||
|
||
import ( | ||
"os" | ||
|
||
"github.com/spf13/cobra" | ||
|
||
"github.com/anqiansong/sqlgen/internal/gen/flags" | ||
) | ||
|
||
var arg flags.RunArg | ||
|
||
var rootCmd = &cobra.Command{ | ||
Use: "sqlgen", | ||
Short: "A cli for mysql generator", | ||
} | ||
var sqlCmd = &cobra.Command{ | ||
Use: "sql", | ||
Short: "Generate SQL model", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
arg.Mode = flags.SQL | ||
flags.Run(arg) | ||
}, | ||
} | ||
|
||
var gormCmd = &cobra.Command{ | ||
Use: "gorm", | ||
Short: "Generate gorm model", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
arg.Mode = flags.GORM | ||
flags.Run(arg) | ||
}, | ||
} | ||
|
||
var xormCmd = &cobra.Command{ | ||
Use: "xorm", | ||
Short: "Generate xorm model", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
arg.Mode = flags.XORM | ||
flags.Run(arg) | ||
}, | ||
} | ||
|
||
var sqlxCmd = &cobra.Command{ | ||
Use: "sqlx", | ||
Short: "Generate sqlx model", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
arg.Mode = flags.SQLX | ||
flags.Run(arg) | ||
}, | ||
} | ||
|
||
var bunCmd = &cobra.Command{ | ||
Use: "bun", | ||
Short: "Generate bun model", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
arg.Mode = flags.BUN | ||
flags.Run(arg) | ||
}, | ||
} | ||
|
||
func init() { | ||
// flags init | ||
var persistentFlags = rootCmd.PersistentFlags() | ||
persistentFlags.StringVarP(&arg.DSN, "dsn", "d", "", "Mysql address") | ||
persistentFlags.StringSliceVarP(&arg.Table, "table", "t", []string{"*"}, "Patterns of table name") | ||
persistentFlags.StringSliceVarP(&arg.Filename, "filename", "f", []string{"*.sql"}, "Patterns of SQL filename") | ||
persistentFlags.StringVarP(&arg.Output, "output", "o", ".", "The output directory") | ||
|
||
// sub commands init | ||
rootCmd.AddCommand(sqlCmd) | ||
rootCmd.AddCommand(gormCmd) | ||
rootCmd.AddCommand(xormCmd) | ||
rootCmd.AddCommand(sqlxCmd) | ||
} | ||
|
||
func Execute() { | ||
if err := rootCmd.Execute(); err != nil { | ||
os.Exit(1) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
module github.com/anqiansong/sqlgen/example | ||
|
||
go 1.18 | ||
|
||
require gorm.io/gorm v1.23.8 | ||
|
||
require ( | ||
github.com/jinzhu/inflection v1.0.0 // indirect | ||
github.com/jinzhu/now v1.1.4 // indirect | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= | ||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= | ||
github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas= | ||
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= | ||
gorm.io/gorm v1.23.8 h1:h8sGJ+biDgBA1AD1Ha9gFCx7h8npU7AsLdlkX0n2TpE= | ||
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
-- 用户表 -- | ||
CREATE TABLE `user` | ||
( | ||
`id` bigint(10) unsigned NOT NULL AUTO_INCREMENT primary key, | ||
`name` varchar(255) COLLATE utf8mb4_general_ci NULL COMMENT '用户\t名称', | ||
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户\n密码', | ||
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号', | ||
`gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公\r开', | ||
`nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称', | ||
`type` tinyint(1) COLLATE utf8mb4_general_ci DEFAULT 0 COMMENT '用户类型', | ||
`create_time` timestamp NULL, | ||
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | ||
UNIQUE KEY `name_index` (`name`), | ||
UNIQUE KEY `type_index` (`type`), | ||
UNIQUE KEY `mobile_index` (`mobile`) | ||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '用户表' COLLATE=utf8mb4_general_ci; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// generated by sqlgen, do not edit. | ||
|
||
package model | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"time" | ||
|
||
"gorm.io/gorm" | ||
) | ||
|
||
// UserModel represents a user model. | ||
type UserModel struct { | ||
db gorm.DB | ||
} | ||
|
||
// User represents a user struct data. | ||
type User struct { | ||
Id uint64 `gorm:"primaryKey;autoIncrement;column:id" json:"id"` | ||
Name string `gorm:"column:name" json:"name"` | ||
Password string `gorm:"column:password" json:"password"` | ||
Mobile string `gorm:"column:mobile" json:"mobile"` | ||
Gender string `gorm:"column:gender" json:"gender"` | ||
Nickname string `gorm:"column:nickname" json:"nickname"` | ||
Type int8 `gorm:"column:type" json:"type"` | ||
CreateTime time.Time `gorm:"column:create_time" json:"createTime"` | ||
UpdateTime time.Time `gorm:"column:update_time" json:"updateTime"` | ||
} | ||
|
||
// TableName returns the table name. it implemented by gorm.Tabler. | ||
func (User) TableName() string { | ||
return "user" | ||
} | ||
|
||
// Create creates user data. | ||
func (m *UserModel) Create(ctx context.Context, data ...*User) error { | ||
if len(data) == 0 { | ||
return fmt.Errorf("data is empty") | ||
} | ||
|
||
db := m.db.WithContext(ctx) | ||
return db.Create(&data).Error | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package model | ||
|
||
import "context" | ||
|
||
// TODO(sqlgen): Add your own customize code here. | ||
func (m *UserModel) Customize(ctx context.Context, args ...any) { | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
-- 用户表 -- | ||
CREATE TABLE `user` | ||
( | ||
`id` bigint(10) unsigned NOT NULL AUTO_INCREMENT primary key, | ||
`name` varchar(255) COLLATE utf8mb4_general_ci NULL COMMENT '用户\t名称', | ||
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户\n密码', | ||
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号', | ||
`gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公\r开', | ||
`nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称', | ||
`type` tinyint(1) COLLATE utf8mb4_general_ci DEFAULT 0 COMMENT '用户类型', | ||
`create_time` timestamp NULL, | ||
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | ||
UNIQUE KEY `name_index` (`name`), | ||
UNIQUE KEY `type_index` (`type`), | ||
UNIQUE KEY `mobile_index` (`mobile`) | ||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '用户表' COLLATE=utf8mb4_general_ci; | ||
|
||
-- example1: delete by primary key | ||
-- fn: Delete | ||
delete from user where id = ?; | ||
|
||
-- example2: delete by unique key | ||
-- fn: DeleteByName | ||
delete from user where name = ?; | ||
|
||
-- example3: delete by unique keys | ||
-- fn: DeleteByNameAndMobile | ||
delete from user where name = ? and mobile = ?; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
// generated by sqlgen, do not edit. | ||
|
||
package model | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"time" | ||
|
||
"gorm.io/gorm" | ||
) | ||
|
||
// UserModel represents a user model. | ||
type UserModel struct { | ||
db gorm.DB | ||
} | ||
|
||
// User represents a user struct data. | ||
type User struct { | ||
Id uint64 `gorm:"primaryKey;autoIncrement;column:id" json:"id"` | ||
Name string `gorm:"column:name" json:"name"` | ||
Password string `gorm:"column:password" json:"password"` | ||
Mobile string `gorm:"column:mobile" json:"mobile"` | ||
Gender string `gorm:"column:gender" json:"gender"` | ||
Nickname string `gorm:"column:nickname" json:"nickname"` | ||
Type int8 `gorm:"column:type" json:"type"` | ||
CreateTime time.Time `gorm:"column:create_time" json:"createTime"` | ||
UpdateTime time.Time `gorm:"column:update_time" json:"updateTime"` | ||
} | ||
|
||
// DeleteWhereParameter is a where parameter structure. | ||
type DeleteWhereParameter struct { | ||
Id uint64 | ||
} | ||
|
||
// DeleteByNameWhereParameter is a where parameter structure. | ||
type DeleteByNameWhereParameter struct { | ||
Name string | ||
} | ||
|
||
// DeleteByNameAndMobileWhereParameter is a where parameter structure. | ||
type DeleteByNameAndMobileWhereParameter struct { | ||
Name string | ||
Mobile string | ||
} | ||
|
||
// TableName returns the table name. it implemented by gorm.Tabler. | ||
func (User) TableName() string { | ||
return "user" | ||
} | ||
|
||
// Create creates user data. | ||
func (m *UserModel) Create(ctx context.Context, data ...*User) error { | ||
if len(data) == 0 { | ||
return fmt.Errorf("data is empty") | ||
} | ||
|
||
db := m.db.WithContext(ctx) | ||
return db.Create(&data).Error | ||
} | ||
|
||
// Delete is generated from sql: | ||
// delete from user where id = ?; | ||
func (m *UserModel) Delete(ctx context.Context, where DeleteWhereParameter) error { | ||
var db = m.db.WithContext(ctx) | ||
db.Where(`id = ?`, where.Id) | ||
db.Delete(&User{}) | ||
return db.Error | ||
} | ||
|
||
// DeleteByName is generated from sql: | ||
// delete from user where name = ?; | ||
func (m *UserModel) DeleteByName(ctx context.Context, where DeleteByNameWhereParameter) error { | ||
var db = m.db.WithContext(ctx) | ||
db.Where(`name = ?`, where.Name) | ||
db.Delete(&User{}) | ||
return db.Error | ||
} | ||
|
||
// DeleteByNameAndMobile is generated from sql: | ||
// delete from user where name = ? and mobile = ?; | ||
func (m *UserModel) DeleteByNameAndMobile(ctx context.Context, where DeleteByNameAndMobileWhereParameter) error { | ||
var db = m.db.WithContext(ctx) | ||
db.Where(`name = ? AND mobile = ?`, where.Name, where.Mobile) | ||
db.Delete(&User{}) | ||
return db.Error | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package model | ||
|
||
import "context" | ||
|
||
// TODO(sqlgen): Add your own customize code here. | ||
func (m *UserModel) Customize(ctx context.Context, args ...any) { | ||
|
||
} |
Oops, something went wrong.