diff --git a/internal/company/form.go b/internal/company/form.go index 12fb8ab..d2d5226 100644 --- a/internal/company/form.go +++ b/internal/company/form.go @@ -76,7 +76,7 @@ type SearchForm struct { FoundedYearMin *int `query:"founded_year_min" valid:"optional,range(1800|2100)"` FoundedYearMax *int `query:"founded_year_max" valid:"optional,range(1800|2100)"` Limit *int `query:"limit" valid:"optional,range(1|100)"` - Offset *int `query:"offset" valid:"optional,min(0)"` + Offset *int `query:"offset" valid:"optional,range(0|1000000)"` SortBy *string `query:"sort_by" valid:"optional,in(name|type|industry|created_at|updated_at|status|employee_count|annual_revenue)"` SortOrder *string `query:"sort_order" valid:"optional,in(asc|desc)"` } diff --git a/internal/company_category/form.go b/internal/company_category/form.go index 6838ed4..5cdacf2 100644 --- a/internal/company_category/form.go +++ b/internal/company_category/form.go @@ -14,7 +14,7 @@ type SearchForm struct { Search *string `query:"q" valid:"optional"` Published *bool `query:"published" valid:"optional"` Limit *int `query:"limit" valid:"optional,range(1|100)"` - Offset *int `query:"offset" valid:"optional,min(0)"` + Offset *int `query:"offset" valid:"optional,range(0|1000000)"` SortBy *string `query:"sort_by" valid:"optional,in(name|created_at|updated_at|published_at)"` SortOrder *string `query:"sort_order" valid:"optional,in(asc|desc)"` } diff --git a/internal/document_scraper/form.go b/internal/document_scraper/form.go index 07eecbb..fa23eb1 100644 --- a/internal/document_scraper/form.go +++ b/internal/document_scraper/form.go @@ -3,7 +3,7 @@ package document_scraper // DocumentScraperListRequest represents the request to list tenders pending document scraping type DocumentScraperListRequest struct { Limit int `query:"limit" valid:"optional,range(1|100)" default:"20"` - Offset int `query:"offset" valid:"optional,min(0)" default:"0"` + Offset int `query:"offset" valid:"optional,range(0|1000000)" default:"0"` } // DocumentScraperGetRequest represents the request to get a specific tender by notice publication ID diff --git a/internal/inquiry/form.go b/internal/inquiry/form.go index 80795ee..391721b 100644 --- a/internal/inquiry/form.go +++ b/internal/inquiry/form.go @@ -30,7 +30,7 @@ type SearchInquiriesForm struct { Search *string `query:"q" valid:"optional"` // Search term for full name, company name, or email Status *string `query:"status" valid:"optional,in(pending|reviewed|approved|rejected)"` // Filter by status Limit *int `query:"limit" valid:"optional,range(1|100)"` // Limit results - Offset *int `query:"offset" valid:"optional,min(0)"` // Offset results + Offset *int `query:"offset" valid:"optional,range(0|1000000)"` // Offset results SortBy *string `query:"sort_by" valid:"optional,in(full_name|company_name|work_email|status|created_at)"` // Sort field SortOrder *string `query:"sort_order" valid:"optional,in(asc|desc)"` // Sort order } diff --git a/internal/tender_approval/form.go b/internal/tender_approval/form.go index 31beaf4..f2593d1 100644 --- a/internal/tender_approval/form.go +++ b/internal/tender_approval/form.go @@ -22,7 +22,7 @@ type ListTenderApprovalsForm struct { CreatedAtFrom *int64 `query:"created_at_from" valid:"optional"` CreatedAtTo *int64 `query:"created_at_to" valid:"optional"` Limit *int `query:"limit" valid:"optional,range(1|100)"` - Offset *int `query:"offset" valid:"optional,min(0)"` + Offset *int `query:"offset" valid:"optional,range(0|1000000)"` SortBy *string `query:"sort_by" valid:"optional,in(created_at|updated_at|status|submission_mode)"` SortOrder *string `query:"sort_order" valid:"optional,in(asc|desc)"` } @@ -56,7 +56,7 @@ type TenderApprovalSearchForm struct { CreatedAtFrom *int64 `query:"created_at_from" valid:"optional"` CreatedAtTo *int64 `query:"created_at_to" valid:"optional"` Limit *int `query:"limit" valid:"optional,range(1|100)"` - Offset *int `query:"offset" valid:"optional,min(0)"` + Offset *int `query:"offset" valid:"optional,range(0|1000000)"` } // TenderApproval statistics DTOs diff --git a/internal/user/form.go b/internal/user/form.go index 8d8bb5a..ff097a3 100644 --- a/internal/user/form.go +++ b/internal/user/form.go @@ -70,7 +70,7 @@ type ListUsersForm struct { Role *string `query:"role" valid:"optional,in(admin|manager|operator|viewer)"` CompanyID *string `query:"company_id" valid:"optional"` Limit *int `query:"limit" valid:"optional,range(1|100)"` - Offset *int `query:"offset" valid:"optional,min(0)"` + Offset *int `query:"offset" valid:"optional,range(0|1000000)"` SortBy *string `query:"sort_by" valid:"optional,in(full_name|email|username|role|created_at|last_login_at)"` SortOrder *string `query:"sort_order" valid:"optional,in(asc|desc)"` } diff --git a/pkg/response/response.go b/pkg/response/response.go index 707cc37..12bee54 100644 --- a/pkg/response/response.go +++ b/pkg/response/response.go @@ -35,7 +35,7 @@ type Meta struct { type Pagination struct { Limit int `query:"limit" valid:"optional,range(1|100)" default:"20"` - Offset int `query:"offset" valid:"optional,min(0)" default:"0"` + Offset int `query:"offset" valid:"optional,range(0|1000000)" default:"0"` SortBy string `query:"sort_by" valid:"optional"` SortOrder string `query:"sort_order" valid:"optional,in(asc|desc)"` }