{"id":34235241,"url":"https://github.com/marlliton/validator","last_synced_at":"2026-03-12T02:01:35.481Z","repository":{"id":268958165,"uuid":"905878301","full_name":"Marlliton/validator","owner":"Marlliton","description":"Uma biblioteca de validação para structs no Go, que utiliza regras definidas programaticamente, sem a necessidade de tags.","archived":false,"fork":false,"pushed_at":"2025-02-27T22:09:59.000Z","size":76,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-19T08:19:21.461Z","etag":null,"topics":["go","golang","lib","library","validation","validator"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Marlliton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-19T17:48:39.000Z","updated_at":"2025-07-12T02:14:36.000Z","dependencies_parsed_at":"2025-02-27T23:26:52.927Z","dependency_job_id":"704ad9a2-fd27-4656-adc1-2523a6fcefd1","html_url":"https://github.com/Marlliton/validator","commit_stats":null,"previous_names":["marlliton/validator"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/Marlliton/validator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marlliton%2Fvalidator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marlliton%2Fvalidator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marlliton%2Fvalidator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marlliton%2Fvalidator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Marlliton","download_url":"https://codeload.github.com/Marlliton/validator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marlliton%2Fvalidator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30412235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"online","status_checked_at":"2026-03-12T02:00:07.260Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","lib","library","validation","validator"],"created_at":"2025-12-16T02:15:21.518Z","updated_at":"2026-03-12T02:01:35.475Z","avatar_url":"https://github.com/Marlliton.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Validator\n\nUma biblioteca de validação para structs no Go, que utiliza regras definidas programaticamente, sem a necessidade de tags. Este pacote é ideal para quem busca flexibilidade e reutilização de lógica de validação em diversos contextos de uma aplicação.\n\n## 📋 Funcionalidades\n\n- Validação baseada em regras programáticas (sem tags).\n- Suporte a validações customizadas.\n- Mensagens de erro associadas aos campos.\n- Compatível com projetos complexos e escaláveis.\n\n## 🛠️ Instalação\n\nInstale o pacote usando:\n\n```bash\ngo get github.com/Marlliton/validator\n```\n\n## 🚀 Uso Básico\n\nVeja um exemplo de como criar e validar uma struct usando o pacote:\n\n### Definição e Validação\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/Marlliton/validator\"\n\t\"github.com/Marlliton/validator/fail\"\n\t\"github.com/Marlliton/validator/rule\"\n)\n\ntype User struct {\n\tName  string\n\tEmail string\n\tAge   int\n}\n\nfunc (u *User) Validate() (bool, []*fail.Error) {\n\tv := validator.New()\n\n\tv.Add(\"Name\", rule.Rules{\n\t\trule.Required(),\n\t\trule.MinLength(3),\n\t\trule.MaxLength(50),\n\t})\n\tv.Add(\"Email\", rule.Rules{\n\t\trule.Required(),\n\t\trule.ValidEmail(),\n\t})\n\tv.Add(\"Age\", rule.Rules{\n\t\trule.MinValue(18),\n\t})\n\n\terrs := v.Validate(*u)\n\tif len(errs) == 0 {\n\t\treturn true, nil\n\t}\n\treturn false, errs\n}\n\nfunc main() {\n\tuser := User{Name: \"Jo\", Email: \"invalid_email\", Age: 15}\n\tif ok, errs := user.Validate(); !ok {\n\t\tfmt.Println(\"Erros de validação:\")\n\t\tfor _, err := range errs {\n\t\t\tfmt.Println(err.Message)\n\t\t}\n\t} else {\n\t\tfmt.Println(\"Tudo válido!\")\n\t}\n}\n```\n\n### Regras de Validação Suportadas\n\nO pacote oferece uma variedade de regras que podem ser aplicadas aos campos. Exemplos:\n\n- `rule.Required()`: O campo é obrigatório.\n- `rule.MinLength(n)`: Comprimento mínimo.\n- `rule.MaxLength(n)`: Comprimento máximo.\n- `rule.ExactLength(n)`: Comprimento exatamente igual a \"n\".\n- `rule.ValidURL()`: Valida uma URL.\n- `rule.ValidEmail()`: Valida um email.\n- `rule.ValidPhoneNumber()`: Valida um telefone no formato [e164](https://en.wikipedia.org/wiki/E.164).\n- `rule.String(n)`: Verifica se é uma string.\n- `rule.Int(n)`: Verifica se é um inteiro.\n- `rule.Bool(n)`: Verifica se é um bool.\n- `rule.MinValue(n)`: Valor mínimo permitido.\n- `rule.MaxValue(n)`: Valor máximo permitido.\n\nVocê pode combinar essas regras em diferentes campos.\n\n### Validações Personalizadas\n\nCrie suas próprias validações passando uma função personalizada como regra:\n\n```go\nv.Add(\"CustomField\", rule.Rules{\n\tfunc(fieldName string, value interface{}) *fail.Error {\n\t\tif value.(int)%2 != 0 {\n\t\t\treturn fail.New(fieldName, \"O número deve ser par\")\n\t\t}\n\t\treturn nil\n\t},\n})\n```\n\n## 📚 Exemplos\n\n- Exemplos de uso disponíveis no diretório [`examples`](./examples).\n\n## 🛡️ Contribuindo\n\nContribuições são bem-vindas! Abra um issue para relatar problemas ou envie um pull request com melhorias. Certifique-se de seguir as diretrizes no arquivo [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## 🗹 Itens a Fazer\n\n- [ ] Permitir que o usuário forneça sua próprias mensagens customizadas\n- [x] Validar uma URL\n- [ ] Checar o tipo:\n  - [x] string\n  - [x] number\n    - [x] bool\n    - [ ] float\n- [ ] Adicionar método in para validar se um dado esté presente em um slice (includes)\n- [x] Resolver bug na regra Required com o valor zero (0)\n\n## 📄 Licença\n\nEste projeto é distribuído sob a licença [MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarlliton%2Fvalidator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarlliton%2Fvalidator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarlliton%2Fvalidator/lists"}