/* * SPDX-FileCopyrightText: 2023 jordi fita mas * SPDX-License-Identifier: AGPL-3.0-only */ package form import ( "database/sql/driver" "dev.tandem.ws/tandem/camper/pkg/locale" "net/http" "strconv" "strings" ) type Input struct { Name string Val string Error error } func (input *Input) setError(err error) { input.Error = err } func (input *Input) FillValue(r *http.Request) { input.Val = strings.TrimSpace(r.FormValue(input.Name)) } func (input *Input) Value() (driver.Value, error) { return input.Val, nil } func (input *Input) Int() int { i, err := strconv.Atoi(input.Val) if err != nil { panic(err) } return i } func (input *Input) L10nInput() *L10nInput { return &L10nInput{ Input: Input{ Name: input.Name, }, Source: input.Val, } } type L10nInput struct { Input Source string } type I18nInput map[string]*Input func NewI18nInput(locales locale.Locales, name string) I18nInput { input := make(I18nInput) for lang := range locales { input[lang.String()] = &Input{ Name: name + "." + lang.String(), } } return input } func (input I18nInput) FillValue(r *http.Request) { for _, inner := range input { inner.FillValue(r) } }