"""
This file is generated by sqldao-generator; don't modify anything.
If you need to do it, you should create another class.
"""
from dataclasses import dataclass, field
from datetime import datetime

from sqlalchemy import BinaryExpression

from {entity_package}.{entity_name} import {entity_name}
from sqldaogenerator.common.Criterion import Criterion
from sqldaogenerator.entity.Page import Page


@dataclass
class {entity_name}Criterion:
    page = Page()
    filters: list[BinaryExpression] = field(default_factory=list)
    values: dict[str, any] = field(default_factory=dict)

    @classmethod
    def builder(cls):
        return cls()

    def build(self):
        return Criterion(page=self.page, filters=self.filters, values=self.values)

    def order_by(self, value: str):
        self.page.order_by = value
        return self

    def page_no(self, value: int):
        self.page.page_no = value
        return self

    def page_size(self, value: int):
        self.page.page_size = value
        return self

    {sets}

    {filters}
