HNHacker News
TopNewBestAskShowJobs

bigpigeon

32 karma · joined March 1, 2018

submissionscomments
bigpigeon··on Toyorm – ORM for Go
toyorm v0.3.1-alpha add join query
bigpigeon··on Toyorm – ORM for Go
now toyorm support join operation
bigpigeon··on Toyorm – ORM for Go
yes, codegen have better performance than reflect

but I think text/template to generate code is not really good

it hard to read and error-prone

it is more like a powerful c-macro

I think use go/ast to implement c++ likes template is other way

bigpigeon··on Toyorm – ORM for Go
when you want to make complex sql,toyorm maybe word better

find the name = "tom" user and it subquery blog title = "first blog" e.g

  brick := toy.Model(&User{}).Where("=",Offsetof(User{}.Name),"tom").
			Preload(Offsetof(User{}.Blog)).Where("=", Offsetof(Blog{}.Title), "first blog").Enter()

  brick.Find(&user)
  // raw sql
  // select id,name,data, from user where name = "tom" limit 1
  // select id,title,content,user_id from blog where user_id = @user.id and title = "first blog"
toyorm select field with Offsetof, it better when you want to refactor struct field name and you can operation main query as sub query
bigpigeon··on Toyorm – ORM for Go
In "OneToOne" and "BelongTo" Join is match but in "ManyToMany" and "OneToMany" will generate duplicate data

I think add Join method and only support "One Data" preload is good way

bigpigeon··on Toyorm – ORM for Go
you means use join to query and output data as table? otherwise I think “eager fetching” is better way
bigpigeon··on Toyorm – ORM for Go
toyorm support half hand-writing you can bind the model and use its field in sql e.g https://github.com/bigpigeon/toyorm/blob/master/examples/sim...
bigpigeon··on Toyorm – ORM for Go
preload: data association exec/query template exec: custom exec/query this is my orm great features