@@ -7,13 +7,79 @@ import (
77 "github.com/labstack/echo/v4"
88)
99
10- // Example implementation showing how to use the generated constraint constants
10+ // Example implementation showing how to use the generated constraint constants for both schema types and inline parameters
1111type Server struct {}
1212
1313func NewServer () * Server {
1414 return & Server {}
1515}
1616
17+ // ListUsers demonstrates using constraint constants from inline parameters
18+ func (s * Server ) ListUsers (ctx echo.Context , params ListUsersParams ) error {
19+ // Validate limit parameter using generated constants
20+ if params .Limit != nil {
21+ if * params .Limit < ListUsersLimitMinimum || * params .Limit > ListUsersLimitMaximum {
22+ return echo .NewHTTPError (http .StatusBadRequest ,
23+ fmt .Sprintf ("Limit must be between %d and %d" , ListUsersLimitMinimum , ListUsersLimitMaximum ))
24+ }
25+ } else {
26+ // Use the generated default constant
27+ defaultLimit := ListUsersLimitDefault
28+ params .Limit = & defaultLimit
29+ }
30+
31+ // Validate offset parameter
32+ if params .Offset != nil {
33+ if * params .Offset < ListUsersOffsetMinimum {
34+ return echo .NewHTTPError (http .StatusBadRequest ,
35+ fmt .Sprintf ("Offset must be at least %d" , ListUsersOffsetMinimum ))
36+ }
37+ }
38+
39+ // Validate search parameter length
40+ if params .Search != nil {
41+ searchLen := uint64 (len (* params .Search ))
42+ if searchLen < ListUsersSearchMinLength {
43+ return echo .NewHTTPError (http .StatusBadRequest ,
44+ fmt .Sprintf ("Search must be at least %d characters" , ListUsersSearchMinLength ))
45+ }
46+ if searchLen > ListUsersSearchMaxLength {
47+ return echo .NewHTTPError (http .StatusBadRequest ,
48+ fmt .Sprintf ("Search must not exceed %d characters" , ListUsersSearchMaxLength ))
49+ }
50+ }
51+
52+ // Validate minScore parameter
53+ if params .MinScore != nil {
54+ if * params .MinScore < ListUsersMinScoreMinimum || * params .MinScore > ListUsersMinScoreMaximum {
55+ return echo .NewHTTPError (http .StatusBadRequest ,
56+ fmt .Sprintf ("MinScore must be between %.1f and %.1f" , ListUsersMinScoreMinimum , ListUsersMinScoreMaximum ))
57+ }
58+ }
59+
60+ fmt .Printf ("Listing users with limit=%d, offset=%d\n " , * params .Limit , * params .Offset )
61+
62+ // Return mock data (implementation not shown)
63+ users := []User {}
64+ return ctx .JSON (http .StatusOK , users )
65+ }
66+
67+ // GetUser demonstrates using constraint constants from path parameters
68+ func (s * Server ) GetUser (ctx echo.Context , userId string ) error {
69+ // Validate userId length using generated constants
70+ userIdLen := uint64 (len (userId ))
71+ if userIdLen < GetUserUserIdMinLength || userIdLen > GetUserUserIdMaxLength {
72+ return echo .NewHTTPError (http .StatusBadRequest ,
73+ fmt .Sprintf ("UserId must be exactly %d characters" , GetUserUserIdMinLength ))
74+ }
75+
76+ fmt .Printf ("Getting user: %s\n " , userId )
77+
78+ // Return mock data (implementation not shown)
79+ user := User {Username : UsernameDefault , Age : AgeDefault }
80+ return ctx .JSON (http .StatusOK , user )
81+ }
82+
1783// CreateUser demonstrates using the generated constraint constants for validation
1884func (s * Server ) CreateUser (ctx echo.Context ) error {
1985 var user User
@@ -93,13 +159,20 @@ func Example() {
93159 server := NewServer ()
94160 RegisterHandlers (e , server )
95161
96- // The constraints are available as typed constants:
162+ fmt . Println ( "=== Schema Constraint Constants ===" )
97163 fmt .Printf ("Age range: %d-%d (default: %d)\n " , AgeMinimum , AgeMaximum , AgeDefault )
98164 fmt .Printf ("Username length: %d-%d (default: %s)\n " , UsernameMinLength , UsernameMaxLength , UsernameDefault )
99165 fmt .Printf ("Port range: %d-%d (default: %d)\n " , PortMinimum , PortMaximum , PortDefault )
100166 fmt .Printf ("Score range: %.1f-%.1f (default: %.1f)\n " , UserScoreMinimum , UserScoreMaximum , UserScoreDefault )
101167 fmt .Printf ("Tags count: %d-%d\n " , UserTagsMinItems , UserTagsMaxItems )
102168 fmt .Printf ("Is active default: %v\n " , IsActiveDefault )
103169
170+ fmt .Println ("\n === Inline Parameter Constraint Constants ===" )
171+ fmt .Printf ("ListUsers limit: %d-%d (default: %d)\n " , ListUsersLimitMinimum , ListUsersLimitMaximum , ListUsersLimitDefault )
172+ fmt .Printf ("ListUsers offset: minimum %d\n " , ListUsersOffsetMinimum )
173+ fmt .Printf ("ListUsers search length: %d-%d\n " , ListUsersSearchMinLength , ListUsersSearchMaxLength )
174+ fmt .Printf ("ListUsers minScore: %.1f-%.1f\n " , ListUsersMinScoreMinimum , ListUsersMinScoreMaximum )
175+ fmt .Printf ("GetUser userId length: %d-%d\n " , GetUserUserIdMinLength , GetUserUserIdMaxLength )
176+
104177 e .Logger .Fatal (e .Start (":8080" ))
105178}
0 commit comments