I'm creating a CRUD program using Go and I have quite a big struct with over 70 fields that I want to add to a MySQL database.
I was wondering if there's a way to automatically map the struct into my database so I wouldn't have to create the table manually and it would just copy my struct?
I haven't found a way to totally automate that process, but atleast you can create them using tags and only a little bit of code.
There are some github projects in the wild, which help you to achieve this.
For example structable
You'd have to add tags to your structs members.
Example from github:
type Stool struct {
Id int `stbl:"id, PRIMARY_KEY, AUTO_INCREMENT"`
Legs int `stbl:"number_of_legs"`
Material string `stbl:"material"`
Ignored string // will not be stored. No tag.
}
When you have that part, you can create the table like in the following example (also from the github page)
stool := new(Stool)
stool.Material = "Wood"
db := getDb() // Get a sql.Db. You're on the hook to do this part.
// Create a new structable.Recorder and tell it to
// bind the given struct as a row in the given table.
r := structable.New(db, "mysql").Bind("test_table", stool)
// This will insert the stool into the test_table.
err := r.Insert()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With