Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update STEP-4.md #16

Merged
merged 2 commits into from Oct 5, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
49 changes: 43 additions & 6 deletions steps/STEP-4.md
Expand Up @@ -46,16 +46,53 @@ Queremos obtener esta respuesta:

## Crear interfaz __Stat__

__TODO__: hablar de interfaces y del método `__resolveType`
Para poder tratar archivos y directorios de forma polimórfica es necesario contar con una entidad que defina sus campos en común.

En GraphQL contamos con el tipo abstracto [Interface](https://www.apollographql.com/docs/apollo-server/features/unions-interfaces.html#Interface-type), que nos va a permitir describir los campos que comparten `File` y `Dir`. En nuestro caso:

```gql
interface Stat {
# Campos comunes
}
```

## Implementar interfaz __Stat__ para __File__ y __Dir__

__TODO__: completar
Luego es necesario modificar nuestro esquema para que los tipos `File` y `Dir` implementen la interfaz `Stat`.

Por ejemplo, para `File` modificamos su definición de esta forma:

```gql
type File implements Stat {
# Campos comunes
# Campos particulares de File
}
```

## Agregar field _ls_ al tipo __Query__
## Resolver tipo __Stat__

__TODO__: completar
Solo falta indicarle a GraphQL cómo queremos que distinga entre los tipos `File` y `Dir`.

Para ello vamos a implementar el resolver `__resolveType` para la interfaz `Stat`, el cual debe devolver el tipo como string.

```javascript
{
Stat: {
__resolveType(obj) {
if (isFile(obj)) {
return 'File';
}

if (isDir(obj)) {
return 'Dir';
}

return null;
},
},
}
```

## Resolver _ls_ para tipo __Query__
## Implementar _ls_

__TODO__: completar
Ahora es tu turno! Solo queda agregar la definición de `ls` al tipo Query e implementar su resolver para que devuelva archivos y directorios.