{"id":13590609,"url":"https://github.com/a631807682/ddltransform","last_synced_at":"2026-02-25T06:41:20.597Z","repository":{"id":38686060,"uuid":"505830742","full_name":"a631807682/ddltransform","owner":"a631807682","description":"parse ddl and transform to gorm model code","archived":false,"fork":false,"pushed_at":"2023-10-01T10:58:05.000Z","size":145,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-13T03:46:01.414Z","etag":null,"topics":["ddl","gorm","mysql","orm","parser","postgresql"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/a631807682.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-21T12:20:05.000Z","updated_at":"2024-07-05T09:36:46.000Z","dependencies_parsed_at":"2024-01-14T04:34:27.161Z","dependency_job_id":"149f51f6-fcb0-4e63-990d-2c9bbbf33221","html_url":"https://github.com/a631807682/ddltransform","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a631807682%2Fddltransform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a631807682%2Fddltransform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a631807682%2Fddltransform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a631807682%2Fddltransform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/a631807682","download_url":"https://codeload.github.com/a631807682/ddltransform/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247557798,"owners_count":20958047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ddl","gorm","mysql","orm","parser","postgresql"],"created_at":"2024-08-01T16:00:48.722Z","updated_at":"2025-10-29T03:22:11.602Z","avatar_url":"https://github.com/a631807682.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# ddltransform\nParse ddl and transform to gorm model\n\n[![go report card](https://goreportcard.com/badge/github.com/a631807682/ddltransform \"go report card\")](https://goreportcard.com/report/github.com/a631807682/ddltransform)\n[![test status](https://github.com/a631807682/ddltransform/workflows/tests/badge.svg?branch=main \"test status\")](https://github.com/a631807682/ddltransform/actions)\n[![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n[![Go.Dev reference](https://img.shields.io/badge/go.dev-reference-blue?logo=go\u0026logoColor=white)](https://pkg.go.dev/github.com/a631807682/ddltransform)\n\n## Desc\nGenerate the orm model through parse sql to reduce the dependence on the environment\n\n## Usage\n1. Use generate model code.\n```go\nconst ddl = `\t\t\nCREATE TABLE test_data (\n\tid bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n\tcreate_at datetime NOT NULL,\n\tdeleted tinyint(1) NOT NULL,\n\tversion bigint(20) DEFAULT '10' COMMENT 'version info',\n\taddress varchar(255) NOT NULL DEFAULT 'china',\n\tamount decimal(19,2) DEFAULT NULL,\n\twx_mp_app_id varchar(32) DEFAULT NULL,\n\tcontacts varchar(50) DEFAULT NULL,\n\tPRIMARY KEY (id),\n\tUNIQUE KEY uk_app_version (wx_mp_app_id, version)\n) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARACTER SET utf8 COLLATE UTF8_GENERAL_CI ROW_FORMAT=COMPACT COMMENT='' CHECKSUM=0 DELAY_KEY_WRITE=0;\n`\n\ncode, err := ddltransform.Transform(ddl, ddltransform.Config{\n\tParser:      ddltransform.Mysql,\n\tTransformer: ddltransform.Gorm,\n})\n\n// type TestDatum struct {\n//     ID        uint64    `gorm:\"column:id;type:bigint(20) UNSIGNED;primaryKey;autoIncrement;NOT NULL\"`\n//     CreateAt  time.Time `gorm:\"column:create_at;type:datetime;NOT NULL\"`\n//     Deleted   bool      `gorm:\"column:deleted;type:tinyint(1);NOT NULL\"`\n//     Version   int64     `gorm:\"column:version;type:bigint(20);default:10;uniqueIndex:uk_app_version;comment:version info\"`\n//     Address   string    `gorm:\"column:address;type:varchar(255);default:china;NOT NULL\"`\n//     Amount    float64   `gorm:\"column:amount;type:decimal(19,2)\"`\n//     WxMpAppID string    `gorm:\"column:wx_mp_app_id;type:varchar(32);uniqueIndex:uk_app_version\"`\n//     Contacts  string    `gorm:\"column:contacts;type:varchar(50)\"`\n// }\n```\n2. Customize the parser to support more db, or customize the transformer to support more code generate.\n```go\ntype selectTransformer struct {\n}\n\nfunc (*selectTransformer) Name() string {\n\treturn \"select_transfomer\"\n}\n\nfunc (*selectTransformer) Transform(table string, fields []schema.Field) (modeCode string, err error) {\n\tlayout := \"SELECT %s FROM %s\"\n\tcols := make([]string, len(fields))\n\tfor i, f := range fields {\n\t\tcols[i] = f.DBName\n\t}\n\tmodeCode = fmt.Sprintf(layout, strings.Join(cols, \",\"), table)\n\treturn\n}\n\ncode, err := ddltransform.Transform(ddl, ddltransform.Config{\n\tParserType:  ddltransform.Mysql,\n\tTransformer: \u0026selectTransformer{},\n})\n\n// SELECT id,create_at,deleted,version,address,amount,wx_mp_app_id,contacts FROM test_data\n\n```\n3. Use command-line to generate model code\n\u003e ddltcmd start -ps sqlite -tf gorm -p ./sql.ddl\n\nMore information about [ddltcmd](./ddltcmd/README.md)\n\n## More Examples\nSee full list of [examples](./examples/)\n\n## TODO List\n#### Support Database\n- [x] Mysql\n- [x] Postgresql\n\n#### Support Orm\n- [x] Gorm\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa631807682%2Fddltransform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fa631807682%2Fddltransform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa631807682%2Fddltransform/lists"}