99designs / 99designs/gqlgen

[Proposal] Support embeding via extraFields attribute

Aberta
#2,893 0 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

Suppose I want to add an embedded struct to a generated model, as far as I understand, this is not possible at the moment.

My proposal is to allow embedding via a modification to the extraFields attribute of models in the `gqlgen.yml` file.
By adding an attribute of, for example - `embedded: true` the extra field will only embed the type instead of adding it as an attribute to the struct.

So the following example -
```yaml
models:
User:
extraFields:
Session:
description: "A Session used by this user"
type: "github.com/author/mypkg.Session"
embedded: True
```

will generate
```go
type User struct {
ID string
Name string
// A Session used by this user.
mypkg.Session
}
```

This solution will allow to add out of the box support for embedding with , IMO, minimal required changes.

This is especially useful when using 3rd party libraries such as gorm, i.e users of gorm frequently use the `gorm.Model` type by embedding into their model definitions.

If this sounds like something is desired I will be more than happy to try and create a pr for that.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Analise a lógica de geração de código na base de código do gqlgen, provavelmente no pacote de geração de modelos. Entenda como extraFields são processados atualmente na configuração (gqlgen.yml) e no template de geração de structs. A mudança envolve adicionar suporte a um sinalizador 'embedded' para embutir o tipo em vez de adicioná-lo como um campo. Verifique os testes existentes de geração de modelos para ver como adicionar um teste para esse recurso.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
go
Domínio
backend-api-design
Tipo de issue
Funcionalidade
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.