Skip to content
Snippets Groups Projects
Commit d85e7313 authored by Olivér FACKLAM's avatar Olivér FACKLAM
Browse files

Merge new doc from 'reconverge' into 'fix_rlc'

Merge request !34
parents 837c21b0 4ca562d8
No related branches found
No related tags found
No related merge requests found
Showing
with 4 additions and 137 deletions
......@@ -7,6 +7,8 @@ Ce dépôt contient le _backend_ de Sigma, le successeur de Frankiz, un site ét
À terme, ce projet doit tourner sur un serveur du BR et servir d'API à un _frontend_ React *au code séparé et documenté séparément* toute les données nécessaires à son bon fonctionnement (authentification, appartenance à un groupe, droits de visibilité...). Le dépôt pour le serveur front se trouve ici : <https://gitlab.binets.fr/br/sigma-frontend> (on l'appellera indifféremment serveur front, front ou frontend...)
Le but des lignes qui suivent est de permettre au lecteur de rapidement mettre en place et lancer un sigma local et se familiariser avec son administration. Comment obtenir la documentation détaillée du projet est expliqué à la fin de ce document.
Pour obtenir une copie du projet, cloner le dépôt par :
```bash
git clone git@gitlab.binets.fr:br/sigma-backend.git
......@@ -224,8 +226,4 @@ Le script pour faire tourner [JSDoc](http://usejsdoc.org/index.html) et régén
Les fichiers compilés se situent dans [`doc`](.) avec leurs fichiers image. Par nature de l'outil JSDoc il est facile de documenter en détail des fonctions .js mais plus compliqué de documenter un fichier.
A chaque execution JSDoc rajoute les commentaires placés dans chacun des fichiers dans la doc de façon structurée. Les notes en Markdown placés dans notes/ sont également rajoutées en tant que tutoriels (voir {@tutorial CONTRIBUTING}).
La structure générale du projet peut être résumé comme suit :
![struct_projet](../assets/struct.png "Structure du projet")
\ No newline at end of file
A chaque execution JSDoc rajoute les commentaires placés dans chacun des fichiers dans la doc de façon structurée. Les notes en Markdown placés dans notes/ sont également rajoutées en tant que tutoriels (voir {@tutorial CONTRIBUTING}).
\ No newline at end of file
assets/auth.png

74.2 KiB

assets/grapheDroits.jpg

705 KiB

assets/struct.png

56.8 KiB | W: | H:

assets/struct.png

59.8 KiB | W: | H:

assets/struct.png
assets/struct.png
assets/struct.png
assets/struct.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -4,7 +4,7 @@
require('dotenv').config();
const environment = process.env.TARGET_ENV || 'development';
const config = require('./knexfile')[environment];
export const config = require('./knexfile')[environment];
console.log("Running Knex configuration '%s'", environment);
......
exports.up = function (knex, Promise) {
return knex.schema.createTable('groups', function (table) {
table.timestamp(true, true);
table.string('name').notNullable();
table.string('uid',128).primary().notNullable();
table.string('parent_uid',128);
table.foreign('parent_uid').references('groups.uid');
table.string('website').defaultTo('');
table.text('description').defaultTo('');
table.enum('school', ['polytechnique', 'ensta', 'supoptique']).notNullable();
});
};
exports.down = function (knex, Promise) {
return knex.schema.dropTable('groups');
};
exports.up = function(knex, Promise) {
return knex.schema.createTable('messages', function (table) {
table.timestamps(true,true);
table.increments('id');
table.string('title').notNullable();
table.text('content');
});
};
exports.down = function(knex, Promise) {
return knex.schema.dropTable('messages');
};
exports.up = function(knex, Promise) {
return knex.schema.createTable('requests', function (table){
table.timestamps(true, true);
table.increments('id');
table.string('recipient').notNullable();
table.text('message');
}).then(()=>{
return knex.schema.createTable('user_join_group', function (table) {
table.inherits('requests');
table.string('useruid').notNullable();
}).then(()=>{
return knex.schema.createTable('group_join_event', function (table){
table.inherits('requests');
table.string('eventuid').notNullable();
table.string('senderuid').notNullable();
}).then(() => {
return knex.schema.createTable('your_group_host_event', function(table){
table.inherits('requests');
table.string('eventuid').notNullable();
table.string('senderuid').notNullable();
});
});
});
});
};
exports.down = function(knex, Promise) {
return knex.schema.dropTable('your_group_host_event').then(() => {
return knex.schema.dropTable('group_join_event').then(() => {
return knex.schema.dropTable('user_join_group').then(() => {
return knex.schema.dropTable('requests').then(() => {
});
});
});
});
};
/*
Une migrations pour rajouter dans la BDD les tables simple_group et meta_group
(cf la documentation de l'API GraphQL)
Les objets qui étaient jusqu'à présent stoqués dans la table groups
sont déplacés dans la table simple_groups
En cas de rollback, le déplacement se fait dans l'autre sens
(et les meta groupes sont perdus)
Après cette migration, plus rien n'est sensé être mis directement dans la table groups
*/
exports.up = function(knex, Promise) {
return knex('groups').select().then( groups_content => {
return knex('groups').del().then(function () {
return knex.schema.table('groups', function (table){
table.dropColumn('school');
}).then(()=> {
return knex.schema.createTable('simple_groups', function (table){
table.inherits('groups');
table.enum('school', ['polytechnique', 'ensta', 'supoptique']).notNullable();
}).then(() => {
return knex.schema.createTable('meta_groups', function (table){
table.inherits('groups');
}).then(function(){
return knex('simple_groups').insert(groups_content);
});
});
});
});
});
};
exports.down = function(knex, Promise) {
return knex('simple_groups').select().then(simple_groups_content => {
return knex.schema.dropTable('simple_groups').then(function (){
return knex.schema.dropTable('meta_groups').then(function (){
return knex.schema.table('groups', function (table){
table.enum('school', ['polytechnique', 'ensta', 'supoptique']).notNullable();
}).then(function (){
return knex('groups').insert(simple_groups_content);
});
});
});
});
};
exports.up = function(knex, Promise) {
return knex.schema.table('groups', function(table) {
table.enum('type', ['simple', 'meta', 'error']).notNullable().defaultTo('error');
}).then( () => {
return knex('simple_groups').update({type : "simple"}).then(() => {
return knex('meta_groups').update({type : "meta"});
});
});
};
exports.down = function(knex, Promise) {
return knex.schema.table('groups', function(table) {
table.dropColumn('type');
});
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment