Skip to content

Instantly share code, notes, and snippets.

@OlegSchwann
Created August 19, 2019 09:49
Show Gist options
  • Save OlegSchwann/b4a6fc6f4e2673408f24b7d94c138271 to your computer and use it in GitHub Desktop.
Save OlegSchwann/b4a6fc6f4e2673408f24b7d94c138271 to your computer and use it in GitHub Desktop.
package dao
import "database/sql"
// Стоит ли использовать gorm нотацию?
type Entity struct {}
type User struct {
Entity
Uid int32 `--:"uid serial4 primary key"`
FirstName *string `--:"first_name text null"`
LastName *string `--:"last_name text null"`
}
type Dao struct {
sql.DB
}
// Make goland treat structure tags as sql
// language=PostgreSQL
type UserDao struct{
Dao
GetAll func() []User `--query:"
select * from user; --"`
LoadAllByIds func(userIds []int32) []User `--query:"
select * from user where uid in (:userIds); --"`
FindByName func(first string, last string) User `--query:"
select * from user where first_name like :first and last_name like :last limit 1; --"`
InsertAll func(users ...User) `--insert:""`
Delete func(user User) `--delete:""`
}
// При помощи кодогенерации создаётся функция
var NewUserDao func(db *sql.DB) *UserDao
// которая возвращает Dao.
// Несколько Dao должны использовать только один пул соединений sql.DB.
// есть черновик синтаксиса.
// нужно ручками написать для нескольких dao требуемый код
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment