1
This commit is contained in:
65
internal/form_generator/generator.go
Normal file
65
internal/form_generator/generator.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package formgenerator
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"errors"
|
||||
"html/template"
|
||||
"io/fs"
|
||||
"strings"
|
||||
)
|
||||
|
||||
//go:embed templates/index.html
|
||||
var formTemplate string
|
||||
|
||||
//go:embed templates
|
||||
var formFS embed.FS
|
||||
|
||||
var (
|
||||
requiredFields []string = []string{
|
||||
"VacancyName",
|
||||
"Address",
|
||||
"WorkFormat",
|
||||
"SalaryTop",
|
||||
"SalaryBottom",
|
||||
"Requirements",
|
||||
"Responsibilities",
|
||||
"Description",
|
||||
|
||||
"VacancyId",
|
||||
"AgentId",
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNotFound = errors.New("One of the required fields is not set")
|
||||
)
|
||||
|
||||
func GetFileSystem() (fs.FS, error) {
|
||||
formFs, err := fs.Sub(formFS, "templates")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return formFs, nil
|
||||
}
|
||||
|
||||
func GenerateForm(formData map[string]string) (string, error) {
|
||||
for _, field := range requiredFields {
|
||||
if _, ok := formData[field]; !ok {
|
||||
return "", ErrNotFound
|
||||
}
|
||||
}
|
||||
|
||||
tmpl, err := template.New("index.html").Parse(formTemplate)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var buf strings.Builder
|
||||
|
||||
if err = tmpl.Execute(&buf, formData); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return buf.String(), nil
|
||||
}
|
Reference in New Issue
Block a user