Как обработать postgres таблицу в Golang
Работаю с postgres в golang, в базе есть функция, которая возвращает table с набором полей. Подскажите, пожалуйста, как распарсить результат с таким типом в golang?
var D []*domain.Tariff
rows, err := p.ConnPool.Query(ctx, "/*no load balance*/SELECT billing.lists.tariffs()")
if err != nil {
return nil, err
}
for rows.Next() {
tDomain := domain.Tariff{}
err := rows.Scan(&tDomain)
if err != nil {
return nil, err
}
D = append(D, &tDomain)
}
type Tariff struct {
TariffID TariffID `db:"tariff_id"`
TariffName string `db:"tariff_name"`
FreeWorkplace int64 `db:"free_workplace"`
DiskSpaceQuota float64 `db:"disk_space_quota"`
BillingFree bool `db:"billing_free"`
BillingFullTime bool `db:"billing_full_time"`
PeriodDays int64 `db:"period_days"`
CostWorkplace float64 `db:"cost_workplace"`
Currency string `db:"currency"`
RecalcChangeTariff bool `db:"recalc_change_tariff"`
MaxVoiceUser int64 `db:"max_voice_user"`
MaxVideoUser int64 `db:"max_video_user"`
DefaultTariff bool `db:"default_tariff"`
OpenDate time.Time `db:"open_date"`
CloseDate *time.Time `db:"close_date"`
Status string `db:"status"`
}
вот список полей, который возвращает функция
create function tariffs()
returns TABLE(tariff_id bigint, tariff_name character varying, status character varying, open_date timestamp without time zone, close_date timestamp without time zone, free_workplace integer, disk_space_quota numeric, billing_free boolean, billing_full_time boolean, cost_workplace numeric, currency character varying, period_days integer, default_tariff boolean, recalc_change_tariff boolean, max_voice_user integer, max_video_user integer)
language plpgsql
пыталась и в строку, и сразу в слайс структур, не получается.