Loopback Paris
#LoopbackParis
Starting soon ...
Sommaire
Les filtres de second niveau
Import de données user-friendly
Sommaire
- Petite pause -
- Pizza time -
Gérer facilement des fixtures
Le mot du sponsor
Les filtres de niveau 2 avec Loopback
Qui suis-je ?
Développeuse javascript freelance
Arbitre et joueuse Magic The Gathering
@purple_orwel
Aurélie VIOLETTE
La problématique
{
"name": "Judge",
[...]
"properties": {
"firstname": {
"type": "string",
"required": true
},
"lastname": {
"type": "string",
"required": true
},
"nationality": {
"type": "string",
"required": true
}
}
[...]
}
{
"name": "Shop",
[...]
"properties": {
"name": {
"type": "string",
"required": true
}
}
[...]
}
{
"name": "Tournament",
[...]
"properties": {
"location": {
"type": "string",
"required": true
},
"type": {
"type": "string",
"required": true
}
},
"relations": {
"shop": {
"type": "belongsTo",
"model": "Shop"
},
"judge": {
"type": "belongsTo",
"model": "Judge"
}
}
[...]
}
Quelques requêtes
Trouver tous les tournois à Paris, avec leur arbitre et leur boutique
"filter": {
"where": {
"location": "Paris"
},
"include": ["judge", "shop"]
}
[
{
"location": "Paris",
"type": "PPTQ",
"id": 1,
"judgeId": 1,
"shopId": 1,
"judge": {
"firstname": "Aurélie",
"lastname": "Violette",
"nationality": "Française",
"id": 1
},
"shop": {
"name": "Bazaar of Moxen",
"id": 1
}
},
{
"location": "Paris",
"type": "RPTQ",
"id": 2,
"judgeId": 1,
"shopId": 1,
"judge": {
"firstname": "Aurélie",
"lastname": "Violette",
"nationality": "Française",
"id": 1
},
"shop": {
"name": "Bazaar of Moxen",
"id": 1
}
}
]
Quelques requêtes
Trouver tous les tournois organisés par Trollune avec leur arbitre
"filter": {
"include":[
"judge",
{
"relation":"shop",
"where": {"name":"Trollune"}
}
]
}
[
{
"location": "Lyon",
"type": "PPTQ",
"id": 3,
"judgeId": 1,
"shopId": 2,
"judge": {
"firstname": "Aurélie",
"lastname": "Violette",
"nationality": "Française",
"id": 1
},
"shop": {
"name": "Trollune",
"id": 2
}
}
]
TOUT
Quelques requêtes
Trouver tous les PPTQs, arbitrés par un français et organisé par CartaJeux
Pourquoi ça ne marche pas ?
API CLIENT
MODEL
DATASOURCE
RELATED MODEL
result
result
data
fetch
data
query
fetch
query
- Abstraction !
API CLIENT
MODEL
DATASOURCE
RELATED MODEL
Comment ?
- Un beau mixin
- Bibliothèque: sift
Résultats
Trouver tous les PPTQs, arbitrés par un français et organisé par CartaJeux
"filter": {
"where": {"type": "PPTQ"},
"include":["judge", "shop"]
},
"siftFilter": {
"judge":{"nationality": "Française"},
"shop": {"name": "CartaJeux"}
}
[
{
"location": "Lyon",
"type": "PPTQ",
"id": 4,
"judgeId": 2,
"shopId": 3,
"judge": {
"firstname": "Kevin",
"lastname": "Desprez",
"nationality": "Française",
"id": 2
},
"shop": {
"name": "CartaJeux",
"id": 3
}
}
]
Conclusion
Une solution simple à mettre en place
Pas adaptée à toutes les situations
Open issue sur github ici, version SQL en cours
Questions ?
Loopback Paris #2
By Aurélie Violette
Loopback Paris #2
- 1,555