package models import ( "database/sql" "errors" "strconv" "brainminder.speedtech.it/internal/database" "brainminder.speedtech.it/internal/funcs" ) type WidgetModel struct { DB *database.DB } type Widget struct { Id int64 `db:"id"` Name string `db:"name"` Widget string `db:"widget"` } func (model *WidgetModel) All() ([]Widget, bool, error) { ctx, cancel := database.GetContext() defer cancel() query := `SELECT * FROM bm_widgets ORDER BY name` var rows []Widget err := model.DB.SelectContext(ctx, &rows, query) if errors.Is(err, sql.ErrNoRows) { return nil, false, nil } return rows, true, err } func (model *WidgetModel) AllAsOptions() []funcs.WidgetOption { Widgets, _, _ := model.All() var selectOptions []funcs.WidgetOption for _, Widget := range Widgets { selectOptions = append(selectOptions, funcs.WidgetOption{Key: strconv.FormatInt(Widget.Id, 10), Value: Widget.Name}) } return selectOptions } func (model *WidgetModel) UISections() []funcs.WidgetOption { var selectOptions []funcs.WidgetOption selectOptions = append(selectOptions, funcs.WidgetOption{Key: "general", Value: "General"}) selectOptions = append(selectOptions, funcs.WidgetOption{Key: "fields", Value: "Fields"}) return selectOptions }