MCPcopy Index your code
hub / github.com/Shelnutt2/db2struct

github.com/Shelnutt2/db2struct @v1.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.2 ↗ · + Follow
23 symbols 65 edges 5 files 7 documented · 30%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

db2struct Build Status Coverage Status GoDoc

The db2struct package produces a usable golang struct from a given database table for use in a .go file.

By reading details from the database about the column structure, db2struct generates a go compatible struct type with the required column names, data types, and annotations.

Generated datatypes include support for nullable columns sql.NullX types or guregu null.X types and the expected basic built in go types.

Db2Struct is based/inspired by the work of ChimeraCoder's gojson package gojson

Usage

go get github.com/Shelnutt2/db2struct/cmd/db2struct
db2struct --host localhost -d test -t test_table --package myGoPackage --struct testTable -p --user testUser

Example

MySQL table named users with four columns: id (int), user_name (varchar(255)), number_of_logins (int(11),nullable), and LAST_NAME (varchar(255), nullable)

Example below uses guregu's null package, but without the option it procuded the sql.NullInt64 and so on.

db2struct --host localhost -d example.com -t users --package example --struct user -p --user exampleUser --guregu --gorm

Output:


package example

type User struct {
  ID              int   `gorm:"column:id"`
  UserName        string `gorm:"column:user_name"`
  NumberOfLogins  null.Int `gorm:"column:number_of_logins"`
  LastName        null.String `gorm:"column:LAST_NAME"`
}

Supported Databases

Currently Supported - MariaDB - MySQL

Planned Support - PostgreSQL - Oracle - Microsoft SQL Server

MariaDB/MySQL

Structures are created by querying the INFORMATION_SCHEMA.Columns table and then formatting the types, column names, and metadata to create a usable go compatible struct type.

Supported Datatypes

Currently only a limited number of MariaDB/MySQL datatypes are supported. Initial support includes: - tinyint (sql.NullInt64 or null.Int) - int (sql.NullInt64 or null.Int) - smallint (sql.NullInt64 or null.Int) - mediumint (sql.NullInt64 or null.Int) - bigint (sql.NullInt64 or null.Int) - decimal (sql.NullFloat64 or null.Float) - float (sql.NullFloat64 or null.Float) - double (sql.NullFloat64 or null.Float) - datetime (null.Time) - time (null.Time) - date (null.Time) - timestamp (null.Time) - var (sql.String or null.String) - enum (sql.String or null.String) - varchar (sql.String or null.String) - longtext (sql.String or null.String) - mediumtext (sql.String or null.String) - text (sql.String or null.String) - tinytext (sql.String or null.String) - binary - blob - longblob - mediumblob - varbinary - json

Core symbols most depended-on inside this repo

Generate
called by 15
utils.go
lintFieldName
called by 7
utils.go
GetColumnsFromMysqlTable
called by 3
utils_mysql.go
generateMysqlTypes
called by 1
utils_mysql.go
mysqlTypeToGoType
called by 1
utils_mysql.go
fmtFieldName
called by 1
utils.go
stringifyFirstChar
called by 1
utils.go
init
called by 0
cmd/db2struct/main.go

Shape

Function 23

Languages

Go100%

Modules by API surface

utils_test.go12 symbols
utils.go4 symbols
utils_mysql.go3 symbols
cmd/db2struct/main.go3 symbols
utils_mysql_test.go1 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add db2struct \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact