[Proposal] Support embeding via extraFields attribute
- 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
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