from flask_wtf import FlaskForm
from wtforms import StringField, SelectMultipleField, SubmitField
from wtforms.validators import Optional, Length, Regexp

class SearchForm(FlaskForm):
    query = StringField(
        'Search',
        validators=[
            Optional(),
            Length(min=2, max=100, message="Search term must be between 2 and 100 characters."),
            Regexp(r'^[\w\s\-]+$', message="Search can only include letters, numbers, spaces, and dashes.")
        ]
    )
    tags = SelectMultipleField('Tags', coerce=int)
    submit = SubmitField('Search')