versia-go/internal/api_schema/users.go

55 lines
1.2 KiB
Go
Raw Normal View History

2024-08-11 03:51:22 +02:00
package api_schema
import (
"github.com/google/uuid"
2024-08-22 23:03:38 +02:00
"github.com/lysand-org/versia-go/pkg/versia"
2024-08-11 03:51:22 +02:00
)
type User struct {
ID uuid.UUID `json:"id,string"`
Username string `json:"username"`
}
2024-08-22 23:09:58 +02:00
type VersiaUser versia.User
2024-08-20 22:43:26 +02:00
2024-08-11 03:51:22 +02:00
type FetchUserResponse = APIResponse[User]
type CreateUserRequest struct {
2024-08-20 22:43:26 +02:00
Username string `json:"username" validate:"required,username_regex,min=1,max=32"`
2024-08-11 03:51:22 +02:00
Password string `json:"password" validate:"required,min=8,max=256"`
}
2024-08-20 22:43:26 +02:00
type SearchUserRequest struct {
Username string `query:"username" validate:"required,username_regex,min=1,max=32"`
Domain *string `query:"domain" validate:"domain_regex"`
}
2024-08-22 23:03:38 +02:00
//var ErrInvalidUserMention = errors.New("invalid user mention")
//func (r *SearchUserRequest) UnmarshalJSON(raw []byte) error {
// var s string
// if err := json.Unmarshal(raw, &s); err != nil {
// return err
// }
//
// s = strings.TrimPrefix(s, "@")
// spl := strings.Split(s, "@")
//
// if len(spl) > 2 {
// return ErrInvalidUserMention
// }
//
// username := spl[0]
//
// var domain *string
// if len(spl) > 1 {
// domain = &spl[1]
// }
//
// *r = SearchUserRequest{
// Username: username,
// Domain: domain,
// }
//
// return nil
//}