in vulndb/custom.go [135:193]
func (o CustomDataExporter) CSV(ctx context.Context, w io.Writer, header bool) error {
fields := []string{
"owner",
"provider",
"cve_id",
"published",
"modified",
"base_score",
"summary",
}
q := sqlutil.Select(
fields...,
).From(
"custom_data",
).Where(
o.condition(),
)
query, args := q.String(), q.QueryArgs()
if debug.V(1) {
flog.Infof("running: %q / %#v", query, args)
}
rows, err := o.DB.QueryContext(ctx, query, args...)
if err != nil {
return errors.Wrap(err, "cannot query vendor data")
}
defer rows.Close()
cw := csv.NewWriter(w)
defer cw.Flush()
if header {
cw.Write(fields)
}
for rows.Next() {
var v CustomDataRecord
r := sqlutil.NewRecordType(&v).Subset(fields...)
err = rows.Scan(r.Values()...)
if err != nil {
return errors.Wrap(err, "cannot scan custom data")
}
cw.Write([]string{
v.Owner,
v.Provider,
v.CVE,
v.Published.Format(TimeLayout),
v.Modified.Format(TimeLayout),
strconv.FormatFloat(v.BaseScore, 'f', 3, 64),
v.Summary,
})
}
return nil
}