Closed frederikhors closed 5 years ago
Hey,
I too am using gqlgen in a project with go-pg. Personally, I do something like that :
ldrs.EmployeesByStore = &EmployeeSliceLoader{
wait: wait,
maxBatch: 100,
fetch: func(storeIDs []string) ([][]employee.Employee, []error) {
var employees []employee.Employee
employeesByStoreID := make([][]employee.Employee, len(storeIDs))
errors := make([]error, len(storeIDs))
err := database.DB.Model(&employee.Employee{}).
Where("store_id in (?)", pg.In(storeIDs)).
Select(&employees)
for index, storeID := range storeIDs {
for _, employee := range employees {
if employee.StoreID == storeID {
employeesByStoreID[index] = append(employeesByStoreID[index], employee)
}
}
}
if err != nil {
errors := []error{err}
return [][]employee.Employee{}, errors
}
return employeesByStoreID, errors
},
}
https://github.com/99designs/gqlgen/pull/758 makes this a bit clearer
Question for newbies like me. Eventually, if that's okay with you, I can open a wiki page to collect all these FAQs for newbies.
I'm experimenting with gqlgen and dataloader pattern using dataloaden.
These are the models:
This is the
schema.graphql
:I'm also using go-pg ORM (sqlboiler is planned) like this:
QUESTION
I was wondering if the below is an optimized way to re-order the
[][]Book
array coming from DB every time.I'm asking about this code:
Am I totally wrong?
Is this ok with the Golang Garbage Collector?