False positive for initialism detection "GUID" when generating enum
- Linguagem predominante
- Go
- Estrelas
- 10.8k
- Forks
- 1.3k
- Merge médio
- 2d 36min
- PRs com merge (30d)
- 26
Descrição
### What happened?
When generating any enum that includes "GUID", it is always detected as an initialism and thus capitalized in the resulting go const. There is a workaround to just write CamelCase enums, but that conflicts with any style guide that uses SHOUTING_SNAKE_CASE for enums, which is what's used in the [graphql.org documentation](https://graphql.org/learn/schema/#enumeration-types)
Evidently "GUID" is a [common initialism](https://github.com/99designs/gqlgen/blob/2747bd5f3c69db7d55db5f10592ecd0accf3499f/codegen/templates/templates.go#L459), but the word "guide" is fairly common.
With the following graphql schema:
```
enum Resource {
GUIDANCE
TOUR_GUIDE
GUIDE_FEE
GUIDELINES
}
```
the resulting go code is generated:
```
const (
ResourceGUIDAnce Resource = "GUIDANCE"
ResourceTourGUIDE Resource = "TOUR_GUIDE"
ResourceGUIDEFee Resource = "GUIDE_FEE"
ResourceGUIDElines Resource = "GUIDELINES"
)
```
### What did you expect?
generated go code:
```
const (
ResourceGuidance Resource = "GUIDANCE"
ResourceTourGuide Resource = "TOUR_GUIDE"
ResourceGuideFee Resource = "GUIDE_FEE"
ResourceGuidelines Resource = "GUIDELINES"
)
```
### Minimal graphql.schema and models to reproduce
```
enum Resource {
GUIDANCE
TOUR_GUIDE
GUIDE_FEE
GUIDELINES
}
```
I don't believe any models or config are relevant.
### versions
- `go run github.com/99designs/gqlgen version`? 0.14.0
- `go version`? 1.17
Guia de contribuição
Direção de pesquisa
O problema está na lógica de detecção de initialisms em codegen/templates/templates.go, na linha 459. Examine como a lista de initialisms comuns é usada ao gerar nomes de constantes de enum. Comece examinando o fluxo de geração de código para enums e, em seguida, modifique a detecção para evitar falsos positivos de substrings como 'GUID' dentro de palavras mais longas. Execute os testes existentes para garantir que a correção não quebre outros casos.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- go, graphql
- Domínio
- backend-api-design
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 55/100