99designs / 99designs/gqlgen

False positive for initialism detection "GUID" when generating enum

Aberta
#2,134 2 comentários 0 reações 0 responsáveis Ver no GitHub
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

Abrir o 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

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.