Skip to content
This repository has been archived by the owner on Jan 17, 2020. It is now read-only.

SQL Connection & Go ORM #12

Open
JackyChiu opened this issue Apr 28, 2017 · 11 comments
Open

SQL Connection & Go ORM #12

JackyChiu opened this issue Apr 28, 2017 · 11 comments

Comments

@JackyChiu
Copy link
Owner

I'm quite new to using SQL with Go, so if anyone has any opinion or design proposals post them here!

As of now:

  • The SQL Connection is global in the main package (Maybe switch to dependency injection to pass it around?)
  • We're using gorm as our ORM, maybe we don't need an ORM and sqlx would be enough?
@adelowo
Copy link

adelowo commented Apr 29, 2017

  • DI would be preferable since it would make the code much more testable..... Plus it can also work as the application context pool

This could change to

func RegisterUser(db *SqlxBlah) error {
    return func (w http.ResponseWriter, h *http.Request) {
     //old code
   }
}
  • Sqlx would be more than enough though .

@JackyChiu
Copy link
Owner Author

@adelowo yeah I definitely agree that DI was the way to go, I'll look into this approach!

For the example you posted, would you need to change it to this?

func RegisterUser(db *SqlxBlah, w http.ResponseWriter, h *http.Request) error {
    return func (w http.ResponseWriter, h *http.Request) {
     //old code
   }
}

How do you feel about the ORM? I started off with that just to get something up

@adelowo
Copy link

adelowo commented Apr 29, 2017

  • While what you are proposing works, i just like to stay too close to holy http.Handler interface..

  • I tried the ORM some time ago, didn't feel natural.. Plain sql for me is the way to go.

@adelowo
Copy link

adelowo commented Apr 29, 2017

I should be able to help out on a couple things though

@JackyChiu
Copy link
Owner Author

@adelowo sorry I just wasn't too sure what you were saying but I think I see it now for the http.handler!

Yeah if you could show an example without the ORM I'd really appreciate it! And feel free to contribute to any part 😄

@adelowo
Copy link

adelowo commented Apr 29, 2017

Can i pull a fork of this showing that ? or how do you want me to "show the example" ?

@JackyChiu
Copy link
Owner Author

Can i pull a fork of this showing that ? or how do you want me to "show the example" ?

Yeah a fork, a gist, or whatever works 😁

@adelowo
Copy link

adelowo commented Apr 29, 2017

A fork it shall be... Should get that done in a couple hours

@adelowo
Copy link

adelowo commented Apr 29, 2017

Ok, i found out i already have something like this..

You might want to look into it

Database => https://github.com/adelowo/reblog/tree/master/models (plus mocks)
Handlers => https://github.com/adelowo/reblog/tree/master/handler

https://github.com/adelowo/reblog/blob/master/main.go#L24

@qwo
Copy link

qwo commented May 1, 2017

I agree with the DI approach. This article does a good job showing a few approach.
http://www.alexedwards.net/blog/organising-database-access

@JackyChiu
Copy link
Owner Author

Yep I've switch it using DI!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants