|
| 1 | +# API |
| 2 | + |
| 3 | +## Conventions de nommage |
| 4 | + |
| 5 | +Les classes prennent une majuscule au début. |
| 6 | +Les modules et variables prennent une minuscule au début. |
| 7 | +Sauf exception, privilégier l'ordre alphabétique pour trier une suite de déclarations, require, ... |
| 8 | + |
| 9 | +```javascript |
| 10 | +// BAD |
| 11 | +const sessionRepository = require(...); |
| 12 | +const assessmentRepository = require(...); |
| 13 | +const certificationRepository = require(...); |
| 14 | + |
| 15 | +// GOOD |
| 16 | +const assessmentRepository = require(...); |
| 17 | +const certificationRepository = require(...); |
| 18 | +const sessionRepository = require(...); |
| 19 | +``` |
| 20 | + |
| 21 | +Exemples : |
| 22 | + |
| 23 | +```javascript |
| 24 | +const User = require(...); |
| 25 | +const userRepository = ... |
| 26 | +const userName = ... |
| 27 | +``` |
| 28 | + |
| 29 | +Une entité du domaine ne contient pas de préfix. |
| 30 | + |
| 31 | +```javascript |
| 32 | +const User = require('../../User'); |
| 33 | + |
| 34 | +const myUser = new User({}); |
| 35 | +``` |
| 36 | + |
| 37 | +## Déclaration de routes |
| 38 | + |
| 39 | +Ajout de tags et de notes au moment de la déclaration des routes de l'API. |
| 40 | + |
| 41 | +```javascript |
| 42 | +server.route([ |
| 43 | + { |
| 44 | + method: 'GET', |
| 45 | + path: '/api/sessions', |
| 46 | + config: { |
| 47 | + handler: sessionController.find, |
| 48 | + tags: ['api', 'sessions'], |
| 49 | + notes: [ |
| 50 | + '- **Cette route est restreinte aux utilisateurs authentifiés avec le rôle Pix Master**\n' + |
| 51 | + '- Elle permet de consulter la liste de toutes les sessions (retourne un tableau avec n éléments)', |
| 52 | + ] |
| 53 | + } |
| 54 | + } |
| 55 | + ] |
| 56 | +); |
| 57 | +``` |
| 58 | + |
| 59 | +## Utilisation de transitionTo |
| 60 | + |
| 61 | +Éviter les `transistionTo` dans le hook `model()`. Privilégier leur utilisation dans l’`afterModel()`, une fois que le modèle est chargé. |
| 62 | + |
| 63 | +```javascript |
| 64 | +// BAD |
| 65 | +export default Route.extend({ |
| 66 | + model() { |
| 67 | + const store = this.get('store'); |
| 68 | + return store.findRecord('user', this.get('session.data.authenticated.userId')) |
| 69 | + .then((user) => { |
| 70 | + if (user.get('organizations.length') > 0) { |
| 71 | + return this.transitionTo('board'); |
| 72 | + } |
| 73 | + return user; |
| 74 | + }); |
| 75 | + }, |
| 76 | +}); |
| 77 | + |
| 78 | +// GOOD |
| 79 | +export default Route.extend({ |
| 80 | + model() { |
| 81 | + return this.store.findRecord('user', this.get('session.data.authenticated.userId')); |
| 82 | + }, |
| 83 | + |
| 84 | + afterModel(model) { |
| 85 | + if (model.get('organizations.length') > 0) { |
| 86 | + return this.transitionTo('board'); |
| 87 | + } |
| 88 | + } |
| 89 | +}); |
| 90 | +``` |
0 commit comments