105 lines
4 KiB
Markdown
105 lines
4 KiB
Markdown
# agecem/bottin
|
|
|
|
Bottin de la masse étudiante, codé en Go. (Migration d'une application legacy en php)
|
|
|
|
Permet d'utiliser et de (rudimentairement) mettre à jour une base de donnée
|
|
(présentement uniquement `sqlite3`) de noms et de numéros étudiants.
|
|
|
|
Sert principalement à vérifier le statut de membre d'une personne en comparant avec son numéro étudiant du cégep.
|
|
|
|
Base pour les futures applications utilisant des bases de données similaires:
|
|
|
|
* Scan de présence pour Assemblée Générale (`agecem/bottin-ag`)
|
|
|
|
* Distribution d'Agendas en début de session (`agecem/bottin-agendas)
|
|
|
|
Inclue un `Dockerfile` pour déployer en tant que container.
|
|
|
|
Inclue un `Makefile` pour l'exécution de tâches communes.
|
|
|
|
## Repo
|
|
|
|
[agecem/bottin](https://git.agecem.com/agecem/bottin)
|
|
|
|
## Utilisation
|
|
|
|
```sh
|
|
# Voir les options de make
|
|
make help
|
|
|
|
# Bâtir localement une container image sur docker
|
|
make build
|
|
```
|
|
|
|
## Flags
|
|
|
|
L'application utilise un module pour afficher de l'information sur les différents flags existants.
|
|
|
|
```sh
|
|
# Pour voir l'aide de l'application
|
|
bottin -h
|
|
```
|
|
|
|
Exemple de résultat:
|
|
|
|
```
|
|
Run the bottin server
|
|
|
|
Usage:
|
|
bottin server [flags]
|
|
|
|
Flags:
|
|
--db-sqlite-path string Path to sqlite database (config: 'db.sqlite.path')
|
|
--db-type string Database type (config: 'db.type')
|
|
-h, --help help for server
|
|
--insert-batch-size int The amount of inserts to do per batch (config: 'import.insert_batch_size') (default 500)
|
|
--json-insert-path string The location of a json file containing Membres to insert.
|
|
--login-password string The password to login to the web ui. (config: 'login.password') (default "bottin")
|
|
--login-username string The username to login to the web ui. (config: 'login.username') (default "bottin")
|
|
--server-port int The port on which the web application will server content (config: 'server.port') (default 1312)
|
|
|
|
Global Flags:
|
|
--config string config file (default is $HOME/.bottin.yaml)
|
|
```
|
|
|
|
## Procédure avec docker-compose
|
|
|
|
Voir documentation de docker-compose
|
|
|
|
`docker-compose -h`
|
|
|
|
Démarrer container en mode detached
|
|
|
|
`docker-compose up -d`
|
|
|
|
Éteindre le container, sans toucher aux volumes
|
|
|
|
`docker-compose down`
|
|
|
|
Sur un container qui roule, utiliser `docker-compose run` pour mettre à jour la db (avec `--json-insert-path` ou éventuellement `bottin import`).
|
|
|
|
`docker-compose run bottin bottin server --json-insert-path examples/membres-test.json --config /etc/bottin/bottin.yaml`
|
|
|
|
## Exemples
|
|
|
|
### Sans viper
|
|
|
|
```sh
|
|
# Servir l'application sur le port 8080, en spécifiant les credentials à utiliser pour y accéder ainsi que le type et chemin d'accès d'une database.
|
|
bottin server --db-type 'sqlite' --db-sqlite-path '/chemin/vers/bottin-database.db' --login-username 'exemple' --login-password 'un_autre_mot_de_passe' --server-port 8080`
|
|
|
|
# Servir l'application en spécifiant le chemin d'accès d'une database (sqlite3 ici) ainsi qu'une liste de Membres à insérer lors à la base de donnée lors du démarrage.
|
|
#
|
|
# Important: l'importation ne fait qu'un unmarshal du fichier json et aucune vérification supplémentaire, ni même une vérification d'insertion de doublons dans la db. Fonctionalité à utiliser calmement.
|
|
bottin server --db-type 'sqlite' --db-sqlite-path '/chemin/vers/bottin-database.db' --json-insert-path '/chemin/vers/liste_de_membre.json'`
|
|
```
|
|
|
|
### Avec viper
|
|
|
|
1. Ajouter config en suivant documentation dans `help, -h, --help`
|
|
|
|
2. Appeler config avec flag global `--config /chemin/vers/config`.
|
|
|
|
*Note: L'endroit par défaut de la config est `$HOME/.bottin.yaml`, mais un autre emplacement peut être utilisé si désiré. `Dockerfile` utilise `/etc/bottin/bottin.yaml` comme défaut.*
|
|
|
|
La seule option qui n'est présentement pas disponible par config file est `--json-insert-path` afin de prévenir des doublons. Explication complète [dans la définition de flag](https://git.agecem.com/agecem/bottin/src/commit/0a3ba633cc2208cbfae1195770afcbdec9ace634/cmd/server.go#L99).
|