Skip to content
Creates Go source file of structs for use in some MySql database packages
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
main.go
test.json

README.md

struct-create

Creates Go source file of structs for use in some MySQL database packages. It uses go-sql-driver/mysql for querying the information_schema database. I created this for personal use, so it's not written for extensibility, but shouldn't be difficult to adapt for your own use.

Configuration may be set in the source file:

var defaults = Configuration{
	DbUser: "db_user",
	DbPassword: "db_pw",
	DbName: "bd_name",
	// PKG_NAME gives name of the package using the stucts
	PkgName: "DbStructs",
	// TAG_LABEL produces tags commonly used to match database field names with Go struct
	//members. This will be skipped if the string is empty.
	TagLabel: "db",
}

Or by a JSON file using the json flag struct-create --json=test.json

{
	"db_user": "db_user",
	"db_password": "db_pass",
	"db_name": "db_name",
	"pkg_name": "JsonTest",
	"tag_label": "db"
}

Sample output file:

package DbStructs

import (
	"time"
	"database/sql"
)

type Audit struct{
	Id int64	`db:"id"`
	User int64	`db:"user"`
	Subject string	`db:"subject"`
	SubjectId int64	`db:"subject_id"`
	Action string	`db:"action"`
	Content string	`db:"content"`
	Created time.Time	`db:"created"`
}

type Client struct{
	Id int64	`db:"id"`
	Status int64	`db:"status"`
	Name string	`db:"name"`
	ContactId sql.NullInt64	`db:"contact_id"`
	Street1 string	`db:"street_1"`
	Street2 string	`db:"street_2"`
	City string	`db:"city"`
	State string	`db:"state"`
	Zip string	`db:"zip"`
	Phone string	`db:"phone"`
	Fax string	`db:"fax"`
	UpdatedAt time.Time	`db:"updated_at"`
	CreatedAt time.Time	`db:"created_at"`
}

type Crew struct{
	Id int64	`db:"id"`
	Status int64	`db:"status"`
	TaskTypeCategoryId int64	`db:"task_type_category_id"`
	OfficeId int64	`db:"office_id"`
	LeadId int64	`db:"lead_id"`
	IsSubcontractor int64	`db:"is_subcontractor"`
	DisplayOrder int64	`db:"display_order"`
	WorkerCount int64	`db:"worker_count"`
	Name string	`db:"name"`
	Street1 string	`db:"street_1"`
	Street2 string	`db:"street_2"`
	City string	`db:"city"`
	State string	`db:"state"`
	Zip string	`db:"zip"`
	Phone string	`db:"phone"`
	Cell string	`db:"cell"`
	Fax string	`db:"fax"`
	UpdatedAt time.Time	`db:"updated_at"`
	CreatedAt time.Time	`db:"created_at"`
}

type Job struct{
	Id int64	`db:"id"`
	TractId int64	`db:"tract_id"`
	ClientId sql.NullInt64	`db:"client_id"`
	OfficeId int64	`db:"office_id"`
	JobHoldId int64	`db:"job_hold_id"`
	FieldManagerId sql.NullInt64	`db:"field_manager_id"`
	Lot string	`db:"lot"`
	Name string	`db:"name"`
	UpdatedAt time.Time	`db:"updated_at"`
	CreatedAt time.Time	`db:"created_at"`
}
You can’t perform that action at this time.